Arduino-非阻塞脉冲
我用一个Arduino来控制几个 经过一些研究,我发现你需要发送一些不同持续时间的脉冲来让它运行(我不知道这里的正确术语是什么) 要控制它,请执行以下操作Arduino-非阻塞脉冲,arduino,Arduino,我用一个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(1
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);
}
问题是,这段代码被阻塞了,所以我不能做任何事情而不浪费时间。
解决方案是去掉延迟语句
我能够根据这个例子制作一个非阻塞版本
当我试图控制3-4个胜利者时,问题就出现了。我尝试了复制、粘贴、重命名,并在方法上添加了一些数字,但代码很快变得混乱
所以我的问题是,我应该怎么做?我是否应该编写一些类来处理它(这是一种痛苦,因为我不知道如何用C++编写类),还是应该研究使用Arduino的计时器来实现我的目标。您可以使用计时器库并创建自己的类来保持整洁。除了类,您还可以创建一个额外的.pde/.ino文件,其中包含驱动884s的函数 如果您正在运行windows,请获取Visual Studio Professional和Arduino插件的副本。它有一个创建新Cpp文件的选项,该文件会自动为您创建一个类 当你看到一个人在工作的时候,上课是很容易的。另一种选择是创建自己的库来处理884代码,但这更复杂
<>编辑:如果你要学习更多的C++,请遵循上面的Pawel的评论。Pawel是对的中断是最好的,特别是当我第一次读到你的请求时错过了使用
微秒时。你可能想了解脉冲宽度调制(也称为PWM):我会使用中断-它们没有阻塞,处理程序将使用硬件定时器调用,这样你就可以得到准确的结果时机。我想我将抓住机会学习更多的C++。当我完成时,我将包括到图书馆的链接(这个问题已经在谷歌搜索的第一页上了)“阿杜诺维克托884”。