数字处理:无延时LED闪烁
无延时LED闪烁(Blink Without Delay)
有时你需要同时做两件事情。例如,您可能想要在点亮LED的同时读取按钮是否按下。在这种情况下,您不能使用delay(),因为在delay()时Arduino会暂停你的程序。如果Arduino在等待delay()暂停时按钮按下,那么你的程序将会错过按钮按下。
本示例演示了如何在不使用delay()来点亮LED。点亮LED,并记录下时间。然后,每次通过loop()时,检测是否已经超过设定的闪烁时间。如果是,则改变LED的打开或关断状态,并设定新的时间。通过这种方式,LED连续闪烁的同时示例执行不会错过任何一条指令。
打个比方,在微波炉进行加热比萨饼时,同时也等着一些重要的电子邮件。你将比萨饼放进微波炉中,并将其设置为10分钟。使用delay()类似于坐在微波炉前面看着定时器从10分钟计数到零。如果在此期间,重要邮件到达,你将会错过它。
在现实生活中你会加热比萨饼,然后检查你的电子邮件,然后也许做其他事(这并不需要太长时间!),并每隔一段时间你会回来看微波炉的定时器是否已经到零,表明您的比萨饼加热完成。
在本教程中,您将学习如何建立一个类似的定时器。
所需硬件
- Arduino或者Genuino开发板
- LED
- 220欧电阻