今天在一个小东西,需要实现在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的多任务管理相关推荐

  1. AVR开发 Arduino方法(附四) 参考文献与网址

    1. 参考文献 [1] Arduino 魔法书:实现梦想的工具和技术. Jeremy Blum, 电子工业出版社, 2014 [2] Arduino高级开发权威指南. Steven F.Barrett ...

  2. Arduino学习笔记1---开发环境搭建

    主要内容:(一). Arduino IDE的下载及安装 (二). Arduino IDE的应用 (三). Arduino的程序结构 (四). Arduino程序的编译及下载 (一). Arduino ...

  3. 和12岁小同志搞创客开发:手撕代码,Arduino IDE 软件下载和环境搭建

    目录 1.软件下载 2. 软件安装 3.环境搭建和使用 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_3810 ...

  4. 串口监视软件_ESP32 Arduino教程:软件重置

    简介 该esp32 arduino教程旨在解释如何使用Arduino核心在ESP32开发板上执行软件重置. 本ESP32教程的测试是使用集成在ESP32开发板中的DFRobot的ESP-WROOM-3 ...

  5. 【从零开始的ROS四轴机械臂控制】(七)- ROS与arduino连接

    从零开始的ROS四轴机械臂控制(七) 十.ROS与arduino连接 1.虚拟机与arduino的连接 (1)arduino连接与IDE (2)PCA9685模块支持与测试 2.ROS与arduino ...

  6. 【Arduino】开发入门教程【一】什么是Arduino

    Arduino Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于"互动 ...

  7. arduino跑python,尝试在我的Arduino和stu上执行Python3.7.2中的代码

    提前谢谢你.在 我会尽量简短.在 我有一个Arduino+IDE,有一个串行端口,工作正常. 我下载了python3.7.2.PySerial和VPython. 全部安装完毕.在 通过我的MacBoo ...

  8. arduino点阵声音频谱_基于Arduino和频谱分析的LED音乐课节拍器

    摘要: 音乐课上,学习乐器或者唱歌的学生都需要节拍器来练习稳定速度和节奏.而传统的节拍器主要是机械构造,只拥有稳定的速度,发出"嘀嗒嘀嗒"的节拍声.但是,人类最敏锐的感官是视觉,设 ...

  9. arduino下载库出错_【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用...

    微信关注 "DLGG创客DIY"设为"星标",重磅干货,第一时间送达. arduino特点库超多,想必大家都领教了,今天来分享一下之前玩过的TRMpcm库. 这 ...

最新文章

  1. 那些有趣的Webview细节
  2. Centos7如何轻松配置yum国内源
  3. [MicroPython]TPYBoard v102 CAN总线通信
  4. 创维e900s用的什么芯片_MT41K512M16HA-125_苹果XR用的是什么闪存芯片
  5. PendingIntent与Intent的区别
  6. java源程序加密解决方案(基于Classloader解密)
  7. .NET Core 3.0 新 JSON API - JsonSerializer
  8. 阿里云高级技术专家带你全面了解云主机性能评测
  9. uniapp图标_uniapp扩展自定义uniIcon组件图标
  10. php dio获取串口数据,flutter通过dio读取二进制数据,比如通过api接口读取图片
  11. 中国水痘带状疱疹感染治疗药物市场趋势报告、技术动态创新及市场预测
  12. 基于SSM的手机商城
  13. php sql慢查询,Select多行SQL语句慢查询优化
  14. Hive环境搭建及测试
  15. 易我电脑迁移 2022
  16. 【入门】R语言最详细Windows安装指南
  17. 计算机专业英语词汇缩写CIA,CIA英文词汇缩写
  18. 从零到熟悉,带你掌握Python len() 函数的使用
  19. 小写转大写输出,并统计数字、大写字母、小写字母的个数
  20. java获取时间(今天,昨天,上周第一天,本周第一天,本周最后一天)

热门文章

  1. 物化旁流综合水处理器
  2. java localdate_Java 时间类-Calendar、Date、LocalDate/LocalTime
  3. 【C语言】qsort函数用法及用冒泡排序实现qsort函数功能
  4. 性能服务器闹钟功能,便利的时钟显示和闹钟功能
  5. oracle创建DBLink
  6. MATLAB(5)绘图
  7. 用户回调期间遇到未经处理的异常
  8. i7-10610U 、i7-10710U和i7-10810U 的区别 i7-10610U 、i7-10710U和i7-10810U的参数配置
  9. Lucene原理与代码分析解读笔记
  10. 数学建模---传送系统的效率