楼主: Jane
|
[入门教程] Arduino教程 04 互动交通信号灯「DFR0100」 |
henry312 发表于 2015-3-22 13:43 不好意思,前一阵较忙,没回复你的疑问。millis()就如教程写的,它像个时钟,实时在记录程序跑的时间,会不断变化的。changetime()定义的这个变量是记录上一次的时间的,单位为ms,所以不断的让它们进行差值运算,就能计算出等待时间,一旦差值大于5000,就是大于5000ms,也就是5s了,执行内部程序。不知道你是否明白了 |
我想问下楼主,为什么我的这段代码不能实现间隔5秒才可改变红灯的颜色啊。因为只要机动车的灯一亮红,我立刻按开关,机动车的车灯立马改变。不支持坚持五秒。我想问一下原因是什么。我把我和楼主不同的代码用注释表明了。感觉我的代码逻辑是正确的啊。
|
我想问下楼主,为什么我的这段代码不能实现间隔5秒才可改变红灯的颜色啊。因为只要机动车的灯一亮红,我立刻按开关,机动车的车灯立马改变。不支持坚持五秒。我想问一下原因是什么。我把我和楼主不同的代码用注释表明了。感觉我的代码逻辑是正确的啊。
|
还有一开始定义changeTime的时候难道不需要初始化。那么它第一次运行到millis()-changTime后怎么办啊? |
Jane 发表于 2015-4-9 10:31 这个我知道,但是你一开始的时候changeTime没有赋值啊,难道是系统默认给他附零值,然后millis()这个函数也是从零开始计数的吗? 这样你就可以不用对changeTIme初始化了吧。你看我这样的理解对吗? 还是有就是我写了一个类似的代码,就是不能执行红绿灯改变之后5秒内再按按钮无效的效果。 您能看看吗? 实在抱歉我是第一次用这个blog, 留下了好多相同的回复,没看到这个回复还有第二页。。。。实在是抱歉 |
本帖最后由 ikuing 于 2015-12-23 20:55 编辑 翻滚的魔方 发表于 2014-8-29 21:46 你可以了解 下拉电阻的原理: 下拉电阻&&上拉电阻 在电路中让电压尽可能的接近于期望的数字(5V或者0V)是很重要的。 如果不能确保状态接近所需要的电压,这部分电路就可以认为是浮动的 (既不是高电平也不是低电平) 这种浮动叫做电子噪声 噪声在数字电路中可能会被随机的解释为1或者0 上拉电阻和下拉电阻用来保证状态确定为高或者低 所以上拉或下来电阻用来强制电路指向一个希望的状态 所以首先让它接地 保持低电平 也就是0 当按键按下时,和右边5V电源接通,在下拉电阻的作用下 会由浮动状态指向高电平 ,然后9号数字引脚判断开关已被按下,则执行大括号内的函数。 |
我按照教程的步骤做好了,但是行人绿灯的亮度极低。刚开始我还以为没有输出呢。后来换了红色led亮度高了一点,但是还是和正常的亮度有差距。我猜测是电阻过大了,结果我把led的限流电阻去了,亮度没有任何变化。 有哪位高人知道是什么原因吗? |
楼主求问~~ 只要一插5V输出那个口就显示上传出错,设备管理器也找不到COM口了,是自动断开了吗??该怎么解决?? 谢谢楼主啊。 |
ikuing 发表于 2015-12-23 20:58 仔细研究了millis()函数,Returns the number of milliseconds since the Arduino board began running the current program. 从运行当前程序时开始计时,我的理解是从代码上载到板子里面开始跑程序或者在断电的情况下接通电源那一刻开始计时。unsigned long开始没有赋值的话默认是0,这个楼主已经在教程里说了,所以第一次按按键的时候changeTime=0,程序开始执行,到最后changeTime = millis(),这个时候changeTime记录赋予了一个值,假设这个值是30秒,所以第二次按键假设在33秒,这个时候程序是没有反应的,假设再过3秒钟去按键,程序才会执行第二次。所以我的猜想是,如果断电,然后再插上电源,5秒钟内去按按键,应该也是没有反应的。不知道对不对,因为模型已经被我拆掉了,我没有亲自证实。但是我认为楼主的代码逻辑应该是没问题的。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed