delay函数无法正常使用-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 511|回复: 2

[未解决] delay函数无法正常使用

[复制链接]
发表于 2022-4-29 09:35 | 显示全部楼层 |阅读模式
大家好啊,我的delay函数无法正常使用,例如当我希望让灯亮三秒停两秒时(程序如下) 正常的数值.png 肉眼看起来是常亮的但是用手机录像的话是闪烁的

然后我改了一下delay的数值
非正常.png 这时候是有规律的点亮和关闭,但是与我的设定值符合
另外我也尝试了一下把数字再填大一些,不太行,还是会溢出的,但是millis()程序使用没有受影响。我在 arduino cloud这段程序是正常的,应该不是板子的问题,百度是也没有看到类似的消息,希望大佬们支支招,谢谢!
发表于 2022-4-29 18:20 | 显示全部楼层
delay(ms) 的說明如下:
ms: the number of milliseconds to pause (unsigned long)
unsigned long 的值:
making their range from 0 to 4,294,967,295 (2^32 - 1)
基本上是沒有問題的,溢出? 200~300 秒不至於吧?

剛剛用 blink 試了一下,編譯器確實會報錯,因為 Arduino.h
作了 void delay(uint16_t ms); 的宣告,將 delay() 的
值限定在型態 uint16_t=unsigned short
=0~2^16-1 (0x0000~0xFFFF)= 0 ~ 65535,
用  4,294,967,295 連編譯都過不了

但其實我加到 65535000 編譯還是過,沒有實測
(等65535秒?算了吧...),你還是自己去TRY上限值囉
 楼主| 发表于 2022-5-6 09:59 | 显示全部楼层
shouzama 发表于 2022-4-29 18:20
delay(ms) 的說明如下:
ms: the number of milliseconds to pause (unsigned long)
unsigned long 的值:

其实我这个溢出说的也挺草率的,现在的delay只要数字太大就没有反映了,所以我判断应该是存在溢出的情况。就现在来看,应该是我软件里的某一部分出了问题,所以用看普通程序的眼光可能有点不太合理(之前因为error: unknown type name uint_farptr_t did you mean uint_fast8_t折腾好久)总之非常感谢你的回答
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:36 , Processed in 0.209468 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表