LOADING

加载过慢请开启缓存 浏览器默认开启

arduino的定时

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;
}
}