第一次写博客,如有错误多多包涵。
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 <SCoop.h>
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();
}