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

相关文章

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项