Arduino的多任务管理

本文介绍了如何在Arduino上处理多任务。通常Arduino一次只能运行一个函数,但通过使用任务调度器,可以实现多个任务的并发运行。文中给出了具体的代码示例,展示了如何使两个LED灯以不同的频率闪烁,为解决此类问题提供了参考。
摘要由CSDN通过智能技术生成

今天在一个小东西,需要实现在arduino上两个led灯不同频率闪烁,这就麻烦了,以为arduino同时只能实现一个函数的运行,
一般情况下,处理 Arduino 的多个任务,是把所有任务放在 void loop() 里,然后用 delay() 控制时间。不过,任务一多,这种方法就不太方便了。
这个时候我在网上找到了一篇博客,他利用任务调度器来实现多任务运行。
我贴出代码,大家可以参考一下

#include "TaskScheduler.h"  //包含此头文件,才能使用调度器

// 用于储存 LED 状态
boolean g_led1State=1;
boolean g_led2State=0;

void setup()
{
    // 第12、13脚接有 LED
    pinMode(13,OUTPUT);
    pinMode(12,OUTPUT);

    Sch.init(); //初始化调度器

  
  • 8
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
Arduino中,delay()函数会阻塞当前任务并暂停程序执行一段时间。这意味着在delay()函数执行期间,无法执行其他任务。如果你想要实现多任务,可以考虑使用非阻塞延迟的方法,例如使用 millis() 函数来检查时间间隔。 下面是一个简单的示例,演示了如何在Arduino中实现多任务效果: ```cpp // 定义任务1的间隔时间(毫秒) const unsigned long task1Interval = 1000; // 定义任务2的间隔时间(毫秒) const unsigned long task2Interval = 500; // 记录任务1最后执行的时间 unsigned long lastTask1Time = 0; // 记录任务2最后执行的时间 unsigned long lastTask2Time = 0; void setup() { // 初始化代码 } void loop() { // 获取当前时间 unsigned long currentTime = millis(); // 执行任务1 if (currentTime - lastTask1Time >= task1Interval) { // 执行任务1的代码 // 更新任务1的最后执行时间 lastTask1Time = currentTime; } // 执行任务2 if (currentTime - lastTask2Time >= task2Interval) { // 执行任务2的代码 // 更新任务2的最后执行时间 lastTask2Time = currentTime; } // 其他循环代码 } ``` 在这个示例中,我们使用了 millis() 函数来判断是否达到了执行任务的时间间隔。如果达到了时间间隔,就执行对应的任务,并更新最后执行时间。这样,任务可以按照设定的时间间隔非阻塞地执行,实现了多任务的效果。 希望能帮到你!如果有任何疑问,请随时向我提问。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值