Arduino - 多线程库SCoop应用 之 任务
来源:互联网 发布:运维自动化软件 编辑:程序博客网 时间:2024/06/04 19:51
使用该库的【任务】功能,首先要做三件事:
第一:引用库
#include “SCoop.h”
【库文件下载地址】
http://www.dfrobot.com.cn/community/forum.php?mod=attachment&aid=MTI4MzZ8MWFmMjk1MGF8MTQ1MDcwNTA2M3wwfD
https://share.weiyun.com/45420032c079bbf55a42f32d6a023ca2
第二:setup函数里,调用mySCoop.start()命令
void setup() {
mySCoop.start();
}
第三:loop函数里,调用yield()命令
void loop() {
yield();
}
接下来就可以使用【任务】了。有两种定义方式,请继续往下看:
1、完整定义:定义【任务】的setup和loop两个函数。
定义一个名字为“TaskTest”的任务:
defineTask(TaskTest); //用defineTask定义一个任务,名为TaskTest
void TaskTest::setup() //定义该任务的setup()函数,用于初始化设置。
{
//这里是任务的setup函数的内容
}
void TaskTest::loop() //定义该任务的loop()函数,用于循环执行代码。
{
//这里是任务的loop函数的内容
}
2、快速定义:仅定义任务的loop函数
如果这个线程中执行的动作不需要初始化setup,只需要循环loop的话,可以直接使用defineTaskLoop()快速定义该线程任务,如下:
defineTaskLoop(TaskTest1)
{
//这里是任务的loop函数的内容
}
注意一点,使用此库之后,请使用sleep(ms)作为延时,不要用delay()了。
因为sleep(ms)只针对当前线程。而delay(ms)是针对全局的。
最后来一个完成的演示吧,2个LED分别以100毫秒和1秒的速度闪烁。12和13引脚分别接LED,然后运行代码看看效果吧。
#include "SCoop.h"//完整定义defineTask(TaskTest);void TaskTest::setup(){ pinMode(13, OUTPUT);}void TaskTest::loop(){ digitalWrite(13, HIGH); sleep(1000); digitalWrite(13, LOW); sleep(1000);}//快速定义defineTaskLoop(TaskTest1){ digitalWrite(12, HIGH); sleep(100); digitalWrite(12, LOW); sleep(100);}void setup() { pinMode(12, OUTPUT); mySCoop.start();}void loop(){ yield();}
- Arduino - 多线程库SCoop应用 之 任务
- Arduino - 多线程库SCoop应用 之 时钟(计时器)
- Arduino之任务调度
- 多线程之定时器任务
- [Arduino库]任务调度器,更好地处理多任务
- 嵌入式应用之-任务
- C#多线程之 任务工厂
- Java多线程之终结任务
- Scoop Water
- linux应用之----多线程
- Arduino的多任务管理
- Arduino 使用Metor库 简单实现多线程编程
- Arduino 应用笔记
- java多线程之任务间管道通信
- Java多线程之任务执行架构
- Java多线程之任务执行架构
- Java 多线程之 ScheduledThreadPoolExecutor 定时任务
- Java多线程 之 终结任务(十一)
- 课程设计上学期总结
- UIView基础篇
- 兼容SQLSERVER、Oracle、MYSQL、SQLITE的超级DBHelper
- 重构示例_01
- 【java学习笔记s】继承
- Arduino - 多线程库SCoop应用 之 任务
- Jenkins的插件
- Ubuntu Server下设置Tomcat自动启动
- C语言项目
- 项目第五天
- 从头认识java-13.14 捕捉通配符替代的类型参数
- ccf试题201312-1——出现次数最多的数
- HTML5 APP开发环境的框架搭建(PhoneGap)
- 进击的KFC:懒加载