本文主要是介绍Arduino使用定时器设置周期时间运行程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、用Arduino millis() 函数 实现一定程度上的多任务系统,可以设置不同时间的任务周期去执行对应的程序。比如需要10毫秒执行一次的程序、100毫秒执行一次的程序、1秒执行一次的程序。
2、Delay(ms)是延时函数,使用该延时函数,后面的程序将会暂停执行
millis() 多任务,代码
const long _100msTime = 100; // 100 milli seconds
unsigned long _100msLastTime;
const long _1000msTime = 1000; // 1000 milli seconds
unsigned long _1000msLastTime;
long a=0;
long b=0;
int count=0;void setup() {// 打开串口Serial.begin(9600);while (!Serial) {; //等待串口连接。仅本机USB口使用。}Serial.println("Serial is opened.");
}void loop() {// put your main code here, to run repeatedly:TimeProc();
}void TimeProc()
{//1000ms执行一次if ((millis() - _1000msLastTime) >= _1000msTime){_1000msLastTime = millis( ); //Serial.print("Counts a is: "); Serial.print(a); Serial.println(";");Serial.print("Counts b is: "); Serial.print(b); Serial.println(";");b++;} //100ms执行一次if ((millis() - _100msLastTime) >= _100msTime){_100msLastTime = millis( ); a++;/*//if(count>10){count=0;a++;}count++; */ }
}
串口检测
3、测试控制器从开机到程序运行花费时间
代码:
const long _100msTime = 100; // 100 milli seconds
unsigned long _100msLastTime;
const long _1000msTime = 1000; // 1000 milli seconds
unsigned long _1000msLastTime;
long a=0;
long b=0;
int count=0;unsigned long startTime; // 用于记录开始时间
unsigned long endTime; // 用于记录结束时间void startTimer()
{startTime = millis(); // 记录开始时间
}
void stopTimer()
{endTime = millis(); // 记录结束时间
}
unsigned long getElapsedTime()
{return endTime - startTime; // 返回经过的毫秒数
}void setup()
{startTimer();// 打开串口Serial.begin(9600);while (!Serial) {; //等待串口连接。仅本机USB口使用。}Serial.println("Serial is opened.");
}void loop() {// put your main code here, to run repeatedly:stopTimer();unsigned long elapsed = getElapsedTime(); // 获取经过的时间 Serial.print("StartTime is: ");Serial.print(elapsed); Serial.println(";");delay(2000);TimeProc();
}void TimeProc()
{//1000ms执行一次if ((millis() - _1000msLastTime) >= _1000msTime){_1000msLastTime = millis( ); //Serial.print("Counts a is: "); Serial.print(a); Serial.println(";");Serial.print("Counts b is: "); Serial.print(b); Serial.println(";");b++;} //100ms执行一次if ((millis() - _100msLastTime) >= _100msTime){_100msLastTime = millis( ); a++;/*//if(count>10){count=0;a++;}count++; */ }
}
串口检测
这篇关于Arduino使用定时器设置周期时间运行程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!