我正在使用Arduino来控制几个Victor 884's。
经过一些研究,我发现你需要发送一些不同持续时间的脉冲才能使它成为现实(我不知道这里有什么正确的术语)。
要控制它,请执行以下操作。
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的定时器来实现我的目标。
答案 0 :(得分:0)
您可以同时使用Timer库并创建自己的类来保持清洁。您还可以创建一个包含驱动884s的函数的附加.pde / .ino文件,而不是类。
如果您正在运行Windows,请获取Visual Studio Professional和Arduino插件的副本。它有一个创建新Cpp文件的选项,可以自动为您创建一个类。 http://www.visualmicro.com
当你看到一个工作时,类很容易。另一种方法是创建自己的库来处理884代码,但这更复杂。
编辑:如果您要了解更多C ++,请按照Pawel上面的评论进行操作。 Pawel是正确的中断是最好的,特别是如果使用我在第一次阅读你的请求时错过的microSeconds
。
答案 1 :(得分:0)
最有可能你可能想了解脉冲宽度调制又称PWM:http://arduino.cc/en/Tutorial/PWM