1

我一直在尝试通过串行监视器控制我的 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


  }
    }
4

1 回答 1

1

我认为这是由于串行通信而发生的。波特率为 9600 的串行速度非常慢,并且会停止服务器。尝试删除串行打印,如果它仍然冻结,那么问题是别的。

于 2017-01-26T01:20:42.160 回答