作者katuski (牙月)
看板Electronics
標題[問題] arduino的迴圈輸出程式問題
時間Thu Oct 21 16:46:52 2021
請教各位先進。
俺已經寫好arduino的三個輸出。
EX
2號
analogWrite(2,a1);
delay(100);
analogWrite(2,0);
delay(100);
以下2000行...
3號
analogWrite(3,a1);
delay(200);
analogWrite(3,0);
delay(250);
以下2000行...
4號
analogWrite(4,a1);
delay(150);
analogWrite(4,0);
delay(500);
以下2000行...
但是因為個別輸出的時間點都不同,就像是合奏的樂譜,
如果只寫在一個loop裡面的話,
用delay去控制要刻很久。
所以想請問有啥偷吃步的寫法,可以合併進loop裡面。
--
NOW LOADING...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.9.172 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1634806015.A.AA1.html
→ warfjragon: 把dealy時間紀錄到陣列裡 10/21 17:06
→ HiJimmy: 定時器控制 時序控制 10/21 18:04
推 nissptt: 有別人寫好TIMER函數,用millis自己寫,應該也可以 10/21 22:53
→ nissptt: 用寫好的比較省事! 10/21 22:54
推 nissptt: 也許讓arduino跑分時多工RTOS也可以 10/21 23:00
推 nissptt: 下面"不同步"閃爍例子,讓我們延續使用delay的壞習慣, 10/21 23:21
→ nissptt: 但又不會卡在一個loop的delay上。 10/21 23:21
推 nissptt: 這是super loop和虛擬多工的差異(閃爍在影片末) 10/21 23:24
推 nissptt: 只用一個arduino 能"合奏"小星星和小甜甜,應該很香了 10/21 23:30
推 nissptt: 上例是讓arduino多工的例子,當然你要用LED以外輸出呈現 10/21 23:55
→ nissptt: 也可以。 10/21 23:55
→ nissptt: 下例LED就和你要的效果幾乎一樣, 10/21 23:55
推 nissptt: "山姆來分享"有教如何上RTOS,他和以上例子都是跑FreeRTO 10/21 23:58
→ nissptt: S 10/21 23:58
→ katuski: 大感謝,俺研究一下。 10/22 16:40
推 mmonkeyboyy: 這叫time division multiplexing tdm 從這找就很多了 10/22 21:00
推 nissptt: 以下是用millis 的範例,他講解得很清楚 11/04 01:24