看板 Electronics 關於我們 聯絡資訊
請教各位先進。 俺已經寫好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: https://youtu.be/BuRGD3x-QDM 10/21 23:21
nissptt: 這是super loop和虛擬多工的差異(閃爍在影片末) 10/21 23:24
nissptt: 只用一個arduino 能"合奏"小星星和小甜甜,應該很香了 10/21 23:30
nissptt: https://youtu.be/m6dq6UovkNE 10/21 23:51
nissptt: 上例是讓arduino多工的例子,當然你要用LED以外輸出呈現 10/21 23:55
nissptt: 也可以。 10/21 23:55
nissptt: 下例LED就和你要的效果幾乎一樣, 10/21 23:55
nissptt: https://youtu.be/_3-HgcARqvY 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
nissptt: https://youtu.be/Ol6x5mjeu4w 11/04 01:24