Malc 发表于 2012-9-12 01:27:19

Randy 发表于 2012-9-11 23:43 static/image/common/back.gif
越来月觉得malc兄真是个牛人。顶!膜拜了。。。。

过奖了=w=。。相互学习~

shenhaiyu 发表于 2012-9-23 20:25:13

牛啊,正需要这样的功能呢,感谢分享经验~~~

zx_1923 发表于 2012-11-10 14:21:30

好东西啊,学习了

jszsj 发表于 2012-11-20 15:59:28

看着挺强大哈,支持个

Saint 发表于 2012-11-21 11:06:58

下来看看。。

friskit 发表于 2012-11-25 08:51:13

感觉这个实际上就是做了个用户级线程。。。所以线程间一定不能抢占处理机资源不放。。。外部没有一个阻塞检测机制,所以只能每个线程自阻塞。。。这个就有点儿要求程序员开发功底了。。。。

maybachwang 发表于 2012-12-4 16:29:37

高深啊~~~~慢慢研究

pizg 发表于 2012-12-5 09:25:55

本帖最后由 pizg 于 2012-12-5 09:32 编辑

問題:
1.如果要改寫樓主線程2的代碼, 讓pin 13點亮3秒熄滅2秒各10次, 應該如何改寫?
2.線程的數量是否可由外部控制, 不要寫死在代碼裏?
類似像我可以用Android手機隨時設定Arduino的10個pin在特定的時間on/off.

rich 发表于 2012-12-5 11:43:29

很强大!!

pizg 发表于 2012-12-6 12:24:17

本帖最后由 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應該有更好的用法吧?

烦恼 发表于 2012-12-19 14:53:45

#include <pt.h>ardiuno提示这个头文件有很多错误怎么办?我解压后把它放在那里合适?

烦恼 发表于 2012-12-19 14:55:50

求ardiuno 定时中断的一个库~

葱拌豆腐 发表于 2012-12-20 15:49:18

mark一下,目前还到不了这个地步

lph1987 发表于 2012-12-26 10:45:35

mark!!
:)

tornado919 发表于 2012-12-26 16:29:53

强帖留名,mark,以后学习,感谢,楼主啊
页: 1 2 [3] 4 5 6 7
查看完整版本: 玩儿大了~给arduino上操作系统了~!