我一直试图控制我的2台伺服电机连续监视器。当我输入数字1-5到串行监视器时,它遵循代码中说明的命令。我写了几次数字1-5,伺服器突然停止,我再也无法进入串行监视器。当我只有代码的前进部分时,它工作得很好。
#include <Servo.h>
Servo servo1;
Servo servo2;
int servodata;
void setup()
{
Serial.begin(9600);
Serial.println("Redy");
Serial.println("1 stop ");
Serial.println("2 forward");
Serial.println("3 backward");
Serial.println("4 Turn left");
Serial.println("5 Turn right");
servo1.attach(D7) ;
pinMode(D7, OUTPUT);
servo2.attach(D8) ;
pinMode(D8, OUTPUT);
}
void loop()
{
if (Serial.available() > 0)
{
servodata = Serial.read();
if(servodata == '1') // Single Quote! This is a character.
{
Serial.println("Stop");
{
servo1.write(90); //stop
servo2.write(90);
delay(3000);
}
}
if(servodata == '4')
{
Serial.println("Turn left");
{
servo1.write(0); //Turn left
servo2.write(0);
delay(3000);
}
}
if(servodata == '5')
{
Serial.println("Turn right");
{
servo1.write(180); //Turn right
servo2.write(180);
delay(3000);
}
}
if(servodata == '2')
{
Serial.println("Forward");
{
servo1.write(0); //Forward
servo2.write(180);
delay(3000);
}
}
if(servodata == '3')
{
Serial.println("Backward");
{
servo1.write(180); //Backward
servo2.write(0);
delay(3000);
}
}
Serial.println(" "); // End the line
}
}
答案 0 :(得分:1)
我认为这是因为串行通信。串行在9600 BAUD非常慢,并停止服务器。尝试删除串行打印,如果它仍然冻结,那么问题就是其他问题。