电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 基础入门 >> Arduino开发学习 >> 正文

Arduino-时间函数-系列10

作者:佚名    文章来源:网络    点击数:    更新时间:2023/11/26

在Arduino中包含四种时间操作函数,分别是:delay()delayMicroseconds()millis () micros() ,它们可以分为两个大类,一类是以毫秒为单位进行操作的,另一类是以微秒为单位进行操作的,具体的差异在下文逐一描述,下面我们来了解一下。

 

delay()函数

delay() 函数的工作方式非常简单。它接受单个整型数字参数,这个参数表示一个以毫秒为单位时间,从字面意思理解这是延迟时间函数。程序执行中遇到这个函数时,等待设定的时间后到进入下一行代码。但是,delay( )函数并不是让程序执行等待的唯一方法,它也被称为“阻塞”函数。

delay()函数格式

delay (ms) ;

ms是以毫秒为单位无符号长整型数。来看一下LED闪烁的例子:

/* 闪烁LED
   * 
   * 每间隔1秒打开和关闭一个连接到数字针脚的LED.
   * 
*/
int ledPin = 13; // LED连接到数字引脚13
void setup() {
   pinMode(ledPin, OUTPUT); // 设置引脚为输出
}
void loop() {
   digitalWrite(ledPin, HIGH); // 打开LED
   delay(1000); // 等待1000ms
   digitalWrite(ledPin, LOW); // 关闭LED
   delay(1000); // 等待1000ms
}

delayMicroseconds()函数

delayMicroseconds() 函数的作用是:接受一个以微秒为单位的整型数字参数,执行等待。一毫秒等于一千微秒,一秒钟等于一百万微秒。 相比delay()函数它的单位更小,也就是说可以更精确的执行控制。 目前,delayMicroseconds() 函数 能够支持的最大值是16383,这个值可能会在未来Arduino版本中发生变化。因此我们可以看到对于延迟时间超过几千微秒的情况,使用delay()函数似乎更简单一些。

delayMicroseconds() 函数格式

delayMicroseconds (us) ;

us是暂停的微秒数,是一个无符号整型数。现在把LED闪烁的例子修改看一下:

/* 闪烁LED
   * 
   * 每间隔1秒打开和关闭一个连接到数字针脚的LED.
   * 
*/
int ledPin = 13; // LED连接到数字引脚13
void setup() {
   pinMode(ledPin, OUTPUT); // 设置引脚为输出
}
void loop() {
   digitalWrite(ledPin, HIGH); // 打开LED
   delayMicroseconds(1000); // 等待1000us
   digitalWrite(ledPin, LOW); // 关闭LED
   delayMicroseconds(1000); // 等待1000us
}

从LED闪烁的频率可以看到两者间的区别。

millis () 函数

millis()函数可以用来获取Arduino运行程序的时间长度,该时间长度单位是毫秒,Arduino最长可记录50天。如果超出记录时间上限,记录将从0重新开始。

millis()函数格式

millis () ;

获取Arduino开机后运行的时间长度,此时间数值以毫秒为单位(返回值类型:无符号长整型数)。看下面的例子:

unsigned long time; 
void setup() { 
   Serial.begin(9600); 
} 
void loop() { 
   Serial.print("Time:"); time = millis();
   // 串口监视器显示程序运行的时间长度,毫秒读数.
   Serial.println(time); 
   // 为避免连续发送数据,设置等待1000ms.
   delay(1000); 
}

micros()函数

micros() 函数的作用是: 获取Arduino运行程序的时间长度,该时间长度单位是微秒。最长记录时间大约70分钟,溢出后回到0。在主频16MHZ的Arduino板上,如Due和Nano,这个函数的分辨率为 4 us(即返回的值总是4的倍数)。在主频8MHZ的Arduino板上,这个函数的分辨率为8 us。

micros()函数格式

micros () ;

函数返回程序启动后的时间长度,读数为无符号长整型, 单位是微秒。看下面的示例:

unsigned long time; 
void setup() { 
   Serial.begin(9600); 
} 
void loop() { 
   Serial.print("Time:");
   time = micros(); // 串口监视器显示程序运行的时间长度,微秒读数.
   Serial.println(time); // 为避免连续发送数据,设置等待1000ms.
   delay(1000); 
}
Tags:Arduino,时间函数,程序,教程  
责任编辑:admin
  • 上一个文章:
  • 下一个文章: 没有了
  • 请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
    1分 2分 3分 4分 5分

    还可以输入 200 个字
    [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
    返回顶部
    刷新页面
    下到页底
    晶体管查询