Arduino使用定时器设置周期时间运行程序

2023-12-15 17:52

本文主要是介绍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使用定时器设置周期时间运行程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/497334

相关文章

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客