Arduino的多任务管理
今天在一个小东西,需要实现在arduino上两个led灯不同频率闪烁,这就麻烦了,以为arduino同时只能实现一个函数的运行,
一般情况下,处理 Arduino 的多个任务,是把所有任务放在 void loop() 里,然后用 delay() 控制时间。不过,任务一多,这种方法就不太方便了。
这个时候我在网上找到了一篇博客,他利用任务调度器来实现多任务运行。
我贴出代码,大家可以参考一下
#include "TaskScheduler.h" //包含此头文件,才能使用调度器// 用于储存 LED 状态
boolean g_led1State=1;
boolean g_led2State=0;void setup()
{// 第12、13脚接有 LEDpinMode(13,OUTPUT);pinMode(12,OUTPUT);Sch.init(); //初始化调度器//向调度器中添加任务//第一个参数为要添加任务的函数名//第二个参数为任务第一次执行的时间,// 合理设置有利于防止任务重叠,有利以提高任务执行的精度//第三个参数是任务执行的周期//第二、三个参数的单位均为毫秒,也可配置定时器修改其单位//第四个参数代表任务是合作式还是抢占式// 一般取1就可以,更多用法请参考下文Sch.addTask(led1Update,0,1000,1); //从第 0 毫秒开始闪烁 LED,每隔 1s, LED 状态改变一次Sch.addTask(led2Update,20,500,1); //从第 20 毫秒开始闪烁 LED,每隔 0.5s, LED 状态改变一次Sch.start();//启动调度器
}void loop()
{Sch.dispatchTasks(); // 执行被调度的任务,用调度器时放上这一句即可
}// 把要调度的任务函数放下面// 闪烁第 13 脚的 LED
void led1Update()
{if(g_led1State==0){g_led1State=1;digitalWrite(13,HIGH);}else{g_led1State=0;digitalWrite(13,LOW);}
}// 闪烁第 12 脚的 LED
void led2Update()
{if(g_led2State==0){g_led2State=1;digitalWrite(12,HIGH);}else{g_led2State=0;digitalWrite(12,LOW);}
}
代码的头文件
程序执行后,两个 LED 分别会以程序中指定的周期和时间闪烁。
更多功能
大神原文
Arduino的多任务管理相关推荐
- AVR开发 Arduino方法(附四) 参考文献与网址
1. 参考文献 [1] Arduino 魔法书:实现梦想的工具和技术. Jeremy Blum, 电子工业出版社, 2014 [2] Arduino高级开发权威指南. Steven F.Barrett ...
- Arduino学习笔记1---开发环境搭建
主要内容:(一). Arduino IDE的下载及安装 (二). Arduino IDE的应用 (三). Arduino的程序结构 (四). Arduino程序的编译及下载 (一). Arduino ...
- 和12岁小同志搞创客开发:手撕代码,Arduino IDE 软件下载和环境搭建
目录 1.软件下载 2. 软件安装 3.环境搭建和使用 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_3810 ...
- 串口监视软件_ESP32 Arduino教程:软件重置
简介 该esp32 arduino教程旨在解释如何使用Arduino核心在ESP32开发板上执行软件重置. 本ESP32教程的测试是使用集成在ESP32开发板中的DFRobot的ESP-WROOM-3 ...
- 【从零开始的ROS四轴机械臂控制】(七)- ROS与arduino连接
从零开始的ROS四轴机械臂控制(七) 十.ROS与arduino连接 1.虚拟机与arduino的连接 (1)arduino连接与IDE (2)PCA9685模块支持与测试 2.ROS与arduino ...
- 【Arduino】开发入门教程【一】什么是Arduino
Arduino Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于"互动 ...
- arduino跑python,尝试在我的Arduino和stu上执行Python3.7.2中的代码
提前谢谢你.在 我会尽量简短.在 我有一个Arduino+IDE,有一个串行端口,工作正常. 我下载了python3.7.2.PySerial和VPython. 全部安装完毕.在 通过我的MacBoo ...
- arduino点阵声音频谱_基于Arduino和频谱分析的LED音乐课节拍器
摘要: 音乐课上,学习乐器或者唱歌的学生都需要节拍器来练习稳定速度和节奏.而传统的节拍器主要是机械构造,只拥有稳定的速度,发出"嘀嗒嘀嗒"的节拍声.但是,人类最敏锐的感官是视觉,设 ...
- arduino下载库出错_【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用...
微信关注 "DLGG创客DIY"设为"星标",重磅干货,第一时间送达. arduino特点库超多,想必大家都领教了,今天来分享一下之前玩过的TRMpcm库. 这 ...
最新文章
- 那些有趣的Webview细节
- Centos7如何轻松配置yum国内源
- [MicroPython]TPYBoard v102 CAN总线通信
- 创维e900s用的什么芯片_MT41K512M16HA-125_苹果XR用的是什么闪存芯片
- PendingIntent与Intent的区别
- java源程序加密解决方案(基于Classloader解密)
- .NET Core 3.0 新 JSON API - JsonSerializer
- 阿里云高级技术专家带你全面了解云主机性能评测
- uniapp图标_uniapp扩展自定义uniIcon组件图标
- php dio获取串口数据,flutter通过dio读取二进制数据,比如通过api接口读取图片
- 中国水痘带状疱疹感染治疗药物市场趋势报告、技术动态创新及市场预测
- 基于SSM的手机商城
- php sql慢查询,Select多行SQL语句慢查询优化
- Hive环境搭建及测试
- 易我电脑迁移 2022
- 【入门】R语言最详细Windows安装指南
- 计算机专业英语词汇缩写CIA,CIA英文词汇缩写
- 从零到熟悉,带你掌握Python len() 函数的使用
- 小写转大写输出,并统计数字、大写字母、小写字母的个数
- java获取时间(今天,昨天,上周第一天,本周第一天,本周最后一天)