2011-06-12 88 views
4

我有一個Arduino與Adafruit Motor Shield作爲我的機器人的一部分。我想在壓電元件發聲的同時運行電機。如何在8位處理器上「僞造」多任務處理?

的問題是,我不太知道如何捏造/模擬在我的代碼的多任務處理。我試過這樣的:

void goForward(int duration) { 

    for (int i; i<duration; i++) { 
     tl.run(FORWARD); 
     tr.run(BACKWARD); 
     bl.run(FORWARD); 
     br.run(BACKWARD); 
     counter++; 

     if (counter%4==0) { 
      piezo != piezo; 
     } 

     delay(1); 
    } 
} 

這運行的電機,但它並沒有創建我的壓電元件的基調。什麼是更好的編程方式,以便在電機命令運行時,壓電開關可以以440   Hz的頻率開啓/關閉?

回答

3

我不知道Arduino板,但大多數微控制器有一些定時器中斷。你有沒有試過設置這樣一個計時器?在定時器中斷處理程序中,您可以啓用/禁用壓電元件,而主迴路可用於控制電機。

+0

嗯......問題是,汽車盾同時使用定時器中斷。 – 2011-06-12 00:35:13

+0

然後找到一個外部固定頻率的蜂鳴器,當給出簡單的ON信號時會發出聲音。 – avra 2011-06-13 09:59:01

0

普通的Arduino板只有3個定時器。這將「多任務」能力限制爲3個「線程」。 Arduino Mega有16個定時器。換句話說,Arduino Mega可以成爲你的解決方案。沒有?

0

創建調度創建並行任務,並使用兩個定時器的馬達,如果你有第三個使用它的蜂鳴器。