Сервоприводы Arduino и серийный монитор внезапно "вылетали"
Я пытался контролировать мой серийный монитор с двумя серводвигателями. Когда я ввожу номер 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
}
}
1 ответ
Я думаю, что это происходит из-за последовательной связи. Серийный номер 9600 BAUD ОЧЕНЬ МЕДЛЕННЫЙ и останавливает сервер. Попробуйте удалить серийные отпечатки, если они все еще замерзают, значит, проблема в другом.