arduino的定时
关于arduino定时的这里介绍的主要是软件定时的方法
和一般单片机的硬件定时不同的是,如果在中断函数里面
arduino的定时是无效的
Arduino开机后运行的时间
millis()
参数 | 数据类型 | 作用 | 选项 |
---|---|---|---|
返回值 | unsigned long | 读取单片机启动到现在的运行了多少ms | 无 |
该时间长度单位是毫秒,最长可记录接近50天左右的时间。
如果超出记录时间上限,记录将从0重新开始。
实际读取为unsigned long整数
所以最大为4294967295毫秒
计算方法:
秒=millis()/1000
分钟=millis()/1000/60
小时=millis()/1000/60/60
天=millis()/1000/60/60/60
micros()
参数 | 数据类型 | 作用 | 选项 |
---|---|---|---|
返回值 | unsigned long | 读取单片机启动到现在的运行了多少us | 无 |
和上面函数一样也是unsigned long整数
但是这个是微秒
所以最大为4294967295毫秒
也就是最大记录70分钟左右
微秒=millis()/1000
秒=millis()/1000/60
分钟=millis()/1000/60/60
函数使用
1、获取时间
millis()%时间
可以获取时,分钟,秒
2、可以记录下两次间隔的时间
unsigned long t1,t2,t3;
void setup() {
}
void loop()
{
t1=millis();//记录第一次时间
//一段时间后。。。
t2=millis();//记录第二次
t3=time(t1,t2);//计算差t3读取差
}
unsigned long time (unsigned long time1,unsigned long time2)
{
unsigned long time3;
if(time2-time1>=0)
{
time3=time2-time1;//两个时间差
return time3;
}else if (time2-time1<0)
{
time3=4294967295-time1+time2;//防止溢出
return time3;
}
}
3、定时延迟
可以同时进行其他操作不会影响到其他程序运行
unsigned long previousBlinkTime;
int blinkInterval = xxx; //设置延迟xxx执行程序
void setup() {
}
void loop()
{
unsigned long currentMillis = millis(); // 获取当前时间
millisBlink(currentMillis);//调用函数
}
void millisBlink(unsigned long currentTime) {
//检查是否到达时间间隔
if (currentTime - previousBlinkTime >= blinkInterval) { //如果时间间隔达到
//执行代码区
//执行代码区
previousBlinkTime = currentTime; // 将检查时间复位
} else if (currentTime - previousBlinkTime <= 0) { // 如果millis时间溢出
previousBlinkTime = currentTime;
}
}