我一直在研究传感器读取器/齿轮遥控汽车机器人,但我陷入了困境。 我引入了 void Loop() 和 void serialEvent() 作用域。 SerialEvent 获取值、累加并调用其他函数,例如turnRight()、turnLeft() 或reverseGear()。但今天我尝试为汽车制作一个速度显示。但是我发现串行事件中断了连续显示动画。换句话说,我想在serialEvent上连续接收数据,同时我在void循环上成功处理其他连续事件。我附加了我认为可能有问题的代码部分。我使用 Arduino Mega 1280。任何答案将不胜感激。谢谢。
注意:请注意,serialEvent 应连续接收数据(延迟 1 秒)以调整电机的灵敏度。
系列事件就像..
void serialEvent(){
if ( Serial.available() > 0 ){
int val = Serial.read() - '0';
if(val == 0){ .......................
循环范围就像..
void loop()
{
displayModule.setDisplayToDecNumber(15, 0, false);
for(int k =0; k<=7; k++){
displayModule.setLED(TM1638_COLOR_GREEN, k);
delay(100);
............................
最佳答案
Arduino 论坛的座右铭始终适用:如果您发布整个草图,而不仅仅是您认为问题所在的片段,那么更容易提供帮助。
也就是说,我认为这里存在一个严重的问题:
for(int k =0; k<=7; k++){ displayModule.setLED(TM1638_COLOR_GREEN, k); delay(100);
for 循环实际上会将你的草图暂停至少 800 毫秒。
如果您希望草图能够“多任务”,您必须停止使用延迟()并将您的思维方式从顺序编程转变为基于状态(或事件)的编程。通常的建议是研究“无延迟眨眼”示例。
第二点,我不明白你的意思
I've introduced a void loop()
如果您不编写循环函数,草图首先将无法编译。
关于loops - 如何实现serialEvent和loop同时不中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012248/