本帖最后由 o熊小猫o 于 2015-4-2 16:09 编辑
废话少说,直接进正题。简单的写一下用法第一:
复制代码 这个不需要解释了吧。。
第二:
- void setup() {
- mySCoop.start();
- }
复制代码
第三复制代码
接下来就可以使用多线程了。请继续往下看:定义一个名字为“TaskTest”的线程
- defineTask(TaskTest);
- void TaskTest::setup()
- {
- //这里是setup
- }
- void TaskTest::loop()
- {
- //这是是loop的内容
- }
复制代码
还没完,如果这个线程中执行的动作不需要setup的话,还可以使用defineTaskLoop快速定义的方式,如下:
- defineTaskLoop(TaskTest1)
- {
- //我是一段小代码呀,咿呀咿呀哟
- }
复制代码
注意一点,使用此库之后,请使用sleep(ms)作为延时。因为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() {
- mySCoop.start();
- pinMode(12, OUTPUT);
- }
-
- void loop()
- {
- yield();
- }
复制代码
下载地址:
SCoop.zip
|