0

我正在使用 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 的计时器来实现我的目标。

4

2 回答 2

0

很可能您可能想了解脉宽调制又名 PWM:http ://arduino.cc/en/Tutorial/PWM

于 2013-02-07T18:56:43.047 回答
0

您可以同时使用 Timer 库并创建自己的类来保持整洁。除了类,您还可以创建一个附加的 .pde/.ino 文件,其中包含驱动 884 的函数。

如果您正在运行 Windows,请获取 Visual Studio Professional 和 Arduino 插件的副本。它有一个创建新 Cpp 文件的选项,该文件会自动为您创建一个类。http://www.visualmicro.com

当您看到一个工作时,课程非常容易。另一种选择是创建自己的库来处理 884 代码,但这更复杂。

编辑:如果您要学习更多 C++,请按照上面 Pawel 的评论进行操作。Pawel 是正确的,尤其是当microSeconds我第一次阅读您的请求时错过了使用它时。

于 2012-10-11T18:17:50.477 回答