我正在使用 Arduino 来控制几个Victor 884 的。
经过一番研究,我发现你需要向它发送一些不同持续时间的脉冲才能让它运行(我不知道这里的正确术语是什么)。
要控制它,请执行以下操作。
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 的计时器来实现我的目标。