Arduino入门之SCoop多线程任务的实现

第一次写博客,如有错误多多包涵。

Arduino刚刚入门,导师布置了一个制作三只独立萤火虫(三个独立发光的呼吸灯)的作业,这里就用到了多线程。
这里我以两只萤火虫的生成为例说说我的制作过程

库文件下载:

首先我们需要导入SCoop的库文件
SCoop下载地址
解压后把SCoop文件夹放入Arduino根目录中的libraies文件夹中
重启软件即可使用

主要代码:

#include"SCoop.h"
defineTask(TaskTest);

void TaskTest::setup()//线程设定
{
  //setup函数内容
}

void TaskTest::loop()//线程循环
{
  //loop函数内容
}

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

注意事项:

sleep(ms)适用于当前线程延迟时间,而delay(ms)为全局.

两个独立萤火虫的代码:

#include 
defineTask(TaskTest1);//定义子线程1
defineTask(TaskTest2);//定义子线程2

void TaskTest1::setup()//线程1设定
{
  pinMode(5, OUTPUT);
}

void TaskTest1::loop()//线程1循环
{
  for(int brightness=0;brightness<=255;brightness=brightness+2)  //定义brightness为亮度 PWM数字量为0~225 循环PWM数值增大
  {
  analogWrite(5,brightness);//写模拟量 显示亮度
  sleep(8);//亮度维持时间
  }
  
  for(int brightness=255;brightness>=0;brightness=brightness-2)
  {
  analogWrite(5,brightness);
  sleep(8);
  }
}

void TaskTest2::setup()//线程2设定
{
  for(int brightness=0;brightness<=255;brightness=brightness+2) 
  {
  analogWrite(6,brightness);
  sleep(15);
  }
  
  for(int brightness=255;brightness>=0;brightness=brightness-2)
  {
  analogWrite(6,brightness);
  sleep(15);
  }
}

void setup() {
  mySCoop.start();
}

void loop()
{
  yield();
}

你可能感兴趣的:(Arduino入门)