我的问题可能很简单,但我无法弄清楚。 我正在使用arduino uno,seeedstudio电机罩v2和车轮编码器。问题是,此屏蔽的示例代码如下:
void loop()
{
motor.speed(0, 100); // set motor0 to speed 100
delay(1000);
motor.brake(0); // brake
delay(1000);
motor.speed(0, -100); // set motor0 to speed -100
delay(1000);
motor.stop(0); // stop
delay(1000);
}
但是延迟正在阻塞,因此,我似乎可以对编码器脉冲进行计数(大概)。我尝试了millis()的不同实现,但编码器读取的万位数为负数的万位数。
答案 0 :(得分:0)
您的代码中没有车轮编码器,但我认为您的问题是delay
是一个阻止函数。
检查时间是否已经过去而不阻塞程序的最简单方法是手动检查自上一条指令以来时间是否已经过去。例如:
void loop()
{
unsigned long previous_time = millis();
motor.speed(0, 100);
while (millis() - previous_time < 1000)
{
// do something (check the encoder for instance
}
}
这样,您可以在等待延迟完成的同时执行其他说明。当然,您可以将此检查放入功能中。
希望有帮助!