Arduino使用millis()函数实现闪灯

Arduino使用millis()函数实现延时闪灯

原博参考链接

https://www.yiboard.com/thread-1178-1-1.html

1.什么是millis()函数

此函数用于返回Arduino板开始运行当前程序时的毫秒数。这个数字在大约50天后溢出,即回到零。因此简单的闪灯使用它是毫无问题的。

2.为什么不用delay()

delay()函数会暂停程序延迟函数传递的时间。因此,如果我们给出1秒的延迟,则处理器在1秒钟之前不能进入下一条指令。类似地,如果延迟是10秒,则程序将停止10秒,并且处理器将不允许进行下一指令,直到10秒过去。这妨碍了微控制器在速度和执行指令方面的性能,很浪费CPU,在需要完成延时的同时执行其他任务的话会发生阻塞。

3.怎么用?

要使用millis()进行计时和延迟,需要记录并存储操作开始时间的时间,然后定期检查定义的时间是否已过。 如上所述,将当前时间存储在变量中。

4.代码

在.h文件中定义一个闪灯函数:

    /* 利用millis()函数做成闪灯效果的函数 */
    unsigned long		previousMillis;
	int			ledState;
	void ledBlink( int ledPin, uint32_t period )
	{
		unsigned long currentMillis = millis();         /* 记录当前时间 */
		if ( currentMillis - previousMillis >= period ) /* 检查 "period"  ms是否通过 */
		{
			ledState	= digitalRead( ledPin );
			previousMillis	= currentMillis;        /* 保存上次闪烁LED时 */
			if ( ledState == LOW )                  /* 如果LED关闭,则打开,反之亦然 */
			{
				ledState = HIGH;
			} else {
				ledState = LOW;
			}
			digitalWrite( ledPin, ledState );       /* LED为ledState状态 */
		}
	}

之后再主函数中调用这个函数,就可以实现闪灯了。

ledBlink( PA6, 250 );//这里就是主函数调用闪灯程序
//其中,PA6表示接着led灯的IO口,250表示每250ms变一次灯的状态
  • 12
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值