Arduino使用SCoop实现多线程任务

库文件下载地址

GitHub下载地址

加载库文件

将下载到的SCoop文件夹放入Arduino\libraries中,并在新建ino文件时加载SCoop库文件

命令执行与调用

使用时在主程序的Setup函数中写入以下代码:

#include 
void setup() {
  mySCoop.start();
}
void loop()
{
  yield();
}

完整代码及子线程完整定义

注意延迟函数使用sleep();不要使用delay();
sleep();只在当前线程进行延迟,delay();则会在全局进行延迟。
实现线程1以1s的频率闪烁,线程2以2s的频率闪烁

#include 
defineTask(TaskTest1);//定义子线程1
defineTask(TaskTest2);//定义子线程2
void TaskTest1::setup()//线程1设定
{
  pinMode(2, OUTPUT);
}
void TaskTest1::loop()//线程1循环
{
  digitalWrite(2, HIGH);
  sleep(1000);
  digitalWrite(2, LOW);
  sleep(1000);
}

void TaskTest2::setup()//线程2设定
{
  pinMode(3, OUTPUT);
}
void TaskTest2::loop()//线程2循环
{
  digitalWrite(3, HIGH);
  sleep(2000);
  digitalWrite(3, LOW);
  sleep(2000);
}
void setup() {
  mySCoop.start();
}

void loop()
{
  yield();
}

你可能感兴趣的:(Arduino)