2017-01-25 18 views
1

私は2台のサーボモータを制御していました。シリアルモニタに1〜5の数字を入力すると、コードに記載されているようにコマンドに従います。私は数1-5で数回書くと、サーボは突然停止し、私はもうシリアルモニターで何も入力できません。私はコードの前進部分だけを持っていたとうまくいきました。Arduinoサーボモータとシリアルモニタが突然「クラッシュ」する

enter image description here

#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

* servos *のよくある問題は、*電源が不十分なためです。 –

答えて

1

私はそれがためにシリアル通信が起こると思います。 Serial 9600 BAUDは非常に遅く、サーバを停止します。シリアルプリントがまだ凍っていて問題がそれ以外の場合は、シリアルプリントを取り外してみてください。

+0

あなたの答えをありがとう。私はボーレート56000と115200を試しましたが、それでもまだ "クラッシュ"します。 – in2d

+1

あなたがそれらを単に取り除くとどうなりますか?それはまだクラッシュですか? – Gigitex

+0

サーボモーターなしで正常に動作します。問題は、私のUSBポートがこれらのサーボモーターの電圧をあまりにも低くしていることですか?あなたはどう思いますか? – in2d

関連する問題