Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino-非阻塞脉冲_Arduino - Fatal编程技术网

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

我用一个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);
}
问题是,这段代码被阻塞了,所以我不能做任何事情而不浪费时间。 解决方案是去掉延迟语句

我能够根据这个例子制作一个非阻塞版本

当我试图控制3-4个胜利者时,问题就出现了。我尝试了复制、粘贴、重命名,并在方法上添加了一些数字,但代码很快变得混乱


所以我的问题是,我应该怎么做?我是否应该编写一些类来处理它(这是一种痛苦,因为我不知道如何用C++编写类),还是应该研究使用Arduino的计时器来实现我的目标。

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

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

当你看到一个人在工作的时候,上课是很容易的。另一种选择是创建自己的库来处理884代码,但这更复杂


<>编辑:如果你要学习更多的C++,请遵循上面的Pawel的评论。Pawel是对的中断是最好的,特别是当我第一次读到你的请求时错过了使用
微秒时。

你可能想了解脉冲宽度调制(也称为PWM):

我会使用中断-它们没有阻塞,处理程序将使用硬件定时器调用,这样你就可以得到准确的结果时机。我想我将抓住机会学习更多的C++。当我完成时,我将包括到图书馆的链接(这个问题已经在谷歌搜索的第一页上了)“阿杜诺维克托884”。