今天有位客户遇到这么个问题——同样的代码,在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(),看看串口是不是接收正常。一步一步来找到问题所在。 
 
 
 
 |