Randy 发表于 2012-9-11 23:43 static/image/common/back.gif
越来月觉得malc兄真是个牛人。顶!膜拜了。。。。
过奖了=w=。。相互学习~
牛啊,正需要这样的功能呢,感谢分享经验~~~
好东西啊,学习了
看着挺强大哈,支持个
下来看看。。
感觉这个实际上就是做了个用户级线程。。。所以线程间一定不能抢占处理机资源不放。。。外部没有一个阻塞检测机制,所以只能每个线程自阻塞。。。这个就有点儿要求程序员开发功底了。。。。
高深啊~~~~慢慢研究
本帖最后由 pizg 于 2012-12-5 09:32 编辑
問題:
1.如果要改寫樓主線程2的代碼, 讓pin 13點亮3秒熄滅2秒各10次, 應該如何改寫?
2.線程的數量是否可由外部控制, 不要寫死在代碼裏?
類似像我可以用Android手機隨時設定Arduino的10個pin在特定的時間on/off.
很强大!!
本帖最后由 pizg 于 2012-12-6 12:26 编辑
樓主提供的代碼, 可以讓pin12 HIGH 1秒 LOW 1秒, pin13 HIGH 5秒 LOW 5秒.
我寫了下列代碼不必include pt.h, 同樣可以達到上述條件:
static int counter1=0,counter2=0;
static int protothread1() //线程1,控制灯1
{
if (counter1 <= 1)
digitalWrite(12,HIGH);
else
digitalWrite(12,LOW);
if (counter1 == 2)counter1 = 0;
}
static int protothread2()
{
if (counter2 <= 5)
digitalWrite(13,HIGH);
else
digitalWrite(13,LOW);
if (counter2 == 10)counter2 = 0;
}
void setup()
{
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop ()
{
counter1++;
counter2++;
protothread1();//执行线程1
protothread2();//执行线程2
delay(1000);
}
在loop裏儘量不要設置delay,
PT應該有更好的用法吧?
#include <pt.h>ardiuno提示这个头文件有很多错误怎么办?我解压后把它放在那里合适?
求ardiuno 定时中断的一个库~
mark一下,目前还到不了这个地步
mark!!
:)
强帖留名,mark,以后学习,感谢,楼主啊