我正在使用Arduino來控制幾個Victor 884's。Arduino - 非阻塞脈衝
經過一番研究,我發現你需要發送一些不同持續時間的脈衝來使其消失(我不知道這裏有什麼合適的術語)。
要控制它,請執行以下操作。
Stop = 1.5 ms on and 0.5 ms off.
Forward Full Power = 2 ms on and 0 ms off
Backward Full Power = 1 ms on and 1 ms off
所以爲了使電機停止,我可以使用這樣的代碼。
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delayMicroseconds(1500);
digitalWrite(13, LOW);
delayMicroseconds(500);
}
問題是,這段代碼被阻塞,所以我不能做任何事情,而不會弄亂時間。 解決方案是擺脫延遲陳述。
我能夠根據BlinkWithoutDelay示例製作非阻塞版本。
當我嘗試控制3-4 Victors時出現問題。我嘗試了複製,粘貼,重命名的方式,但是代碼很快就變得混亂了。
所以我的問題是,我該怎麼做?我應該編寫一些類來處理它(因爲我不知道如何用C++編寫類),或者我應該考慮使用Arduino的定時器來實現我的目標。
我會去與中斷 - 他們沒有阻塞和處理程序將使用硬件定時器,這樣你纔會有確切的時間被調用。 – Pawel