Arduino多线程库

2015-04-023.7万
AI 快速预览详细 收起
本文介绍了Arduino多线程库SCoop的使用方法。首先,引入SCoop库并启动多线程。然后,通过defineTask和defineTaskLoop定义多线程任务。最后,使用sleep(ms)进行延时,使两个LED分别以100毫秒和1秒的速度闪烁。


废话少说,直接进正题。简单的写一下用法第一:
  1. #include "SCoop.h"
复制代码
这个不需要解释了吧。。

第二:
  1. void setup() {
  2. mySCoop.start();
  3. }
复制代码

第三
  1. void loop() {
  2. yield();
  3. }
复制代码

接下来就可以使用多线程了。请继续往下看:定义一个名字为“TaskTest”的线程

  1. defineTask(TaskTest);
  2. void TaskTest::setup()
  3. {
  4. //这里是setup
  5. }
  6. void TaskTest::loop()
  7. {
  8. //这是是loop的内容
  9. }
复制代码
还没完,如果这个线程中执行的动作不需要setup的话,还可以使用defineTaskLoop快速定义的方式,如下:
  1. defineTaskLoop(TaskTest1)
  2. {
  3. //我是一段小代码呀,咿呀咿呀哟
  4. }
复制代码
注意一点,使用此库之后,请使用sleep(ms)作为延时。因为sleep(ms)只针对当前线程。而delay(ms)是针对全局的。
最后来一个完成的演示吧,2个LED分别以100毫秒和1秒的速度闪烁。12和13引脚分别接LED,然后运行代码看看效果吧。
  1. #include "SCoop.h"
  2. defineTask(TaskTest);
  3. void TaskTest::setup()
  4. {
  5.         pinMode(13, OUTPUT);
  6. }
  7. void TaskTest::loop()
  8. {
  9.   digitalWrite(13, HIGH);
  10.   sleep(1000);
  11.   digitalWrite(13, LOW);
  12.   sleep(1000);
  13. }
  14. //快速定义
  15. defineTaskLoop(TaskTest1)
  16. {
  17.   digitalWrite(12, HIGH);
  18.   sleep(100);
  19.   digitalWrite(12, LOW);
  20.   sleep(100);
  21. }
  22. void setup() {
  23.   mySCoop.start();
  24.   pinMode(12, OUTPUT);
  25. }
  26. void loop()
  27. {
  28.   yield();
  29. }
复制代码


下载地址:
下载附件SCoop.zip


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(8)
愁如烟
愁如烟
从测序代码看应该可以多个线程,但是还没有测试不知道。
1214032625
1214032625
这最多能支持几个线程啊?或者有什么缺点?
q2017
q2017
谢谢分享.......................
q2017
q2017
试试看................
duyi324
duyi324
不能再多几个线程吗 0=0 看代码我也感觉只能有两个线程
immortalt
immortalt
测试了一下仿佛最多2个线程。。。太少了
chengbao127121
chengbao127121
好东西 试试看
qq815076543322
qq815076543322
作为小白 还是看不懂:Q
qq815076543322
qq815076543322回复hnyzcj
非计算机专业 好痛苦
qq815076543322
qq815076543322回复hnyzcj
非计算机专业 好痛苦
共3条回复,已加载2条,点击查看更多共3条回复,已加载全部
- 没有更多了 -