Jane 发表于 2013-11-20 17:40:29

同样的代码,UNO上可以运行,mega2560上没有反应?

今天有位客户遇到这么个问题——同样的代码,在UNO上可以运行,而在mega2560上则没有反应,为什么?
以下是烧录代码:
#include <MotorCar.h>
MotorCar Motor(5,4,6,7);

int val=0;

void setup() {   
   Serial.begin(9600);
}

void loop() {
   performCommand();
}

void performCommand() {   
    if (Serial.available()) {
    val = Serial.read();
    }
    if (val == 'f') {         // Forward
   Motor.forward(250);
    } else if (val == 'b') {    //backward   
   Motor.back(250);
    } else if (val == 'l') {   //Left
   Motor.turnLeft(250);
    } else if (val == 'r') {   //   Right
   Motor.turnRight(250);
    }else if (val == 'o') {   // RightOrigin
   Motor.turnLeftOrigin(250);
    } else if (val == 'p') {       //LeftOrigin
   Motor.turnRightOrigin(250);
    } else if (val == 's') {       //Stop
   Motor.stop(0);
    }
}
可以从代码中看到,这位客户是想通过串口输入字符,来控制小车行动。
那为什么同样在串口监视器输入字符,UNO运行正常,mega2560则没有反应呢?


解决方法:由于mega2560用串口调试的话,串口启动较慢。所以,在需要使用串口调试的话,打开串口监视器后,再重启一下板子就可以解决这个问题了。

总结:所以。。并不是什么大问题,重启一下就好了~ 碰到这类问题,最简单的方法就是直接写一句Serial.println(),看看串口是不是接收正常。一步一步来找到问题所在。



Phoebe 发表于 2013-11-21 10:47:33

记下了。。。:lol

何处不江南 发表于 2013-11-21 11:33:46

没看懂啊。。

Jane 发表于 2013-11-21 13:52:13

何处不江南 发表于 2013-11-21 11:33
没看懂啊。。

{:3_64:} 就是烧完程序要重启一下
页: [1]
查看完整版本: 同样的代码,UNO上可以运行,mega2560上没有反应?