i have a friend and he ask me to make a programm for 6 servos controlled by serial monitor. i don´t have the parts for a test here. and my friend lifes many km away.
Can someone tell my if my code function?
/*Geben Sie über den "Serial Monitor" neue Werte für die Servomotoren ein.
Beispiel: für Servo1 "a90" für 90°
für Servo2 "b130" für 130°
*/
#include <Servo.h> //Lad Servo-Bibliothek
Servo myservo1; //erzeugt das erste Servo-Objekt, muss für jeden angeschlossenen Servomotor erstellt werden
Servo myservo2; //erzeugt das zweite Servo-Objekt
Servo myservo3; //usw.
Servo myservo4;
Servo myservo5;
Servo myservo6;
int pos1 = 0; //Variable für die Position von Servo1, Startposition 0
int pos2 = 0;
int pos3 = 0;
int pos4 = 0;
int pos5 = 0;
int pos6 = 0;
void setup() {
myservo1.attach(5); //Anschluss des Servomotors 1 an Pin 5
myservo2.attach(6);
myservo3.attach(7);
myservo4.attach(8);
myservo5.attach(9);
myservo6.attach(10);
Serial.begin(9600); //Serielle Komunikation starten
}
void loop() {
if (Serial.read() == 'a') //Abfrage ob neuer Wert folgt für Servo 1
{
pos1 = Serial.parseInt(); //Einlesen des neuen Wertes und
myservo1.write(pos1); //Übergabe an den Servomotor 1
}
if (Serial.read() == 'b')
{
pos2 = Serial.parseInt();
myservo2.write(pos2);
}
if (Serial.read() == 'c')
{
pos3 = Serial.parseInt();
myservo3.write(pos3);
}
if (Serial.read() == 'd')
{
pos4 = Serial.parseInt();
myservo4.write(pos4);
}
if (Serial.read() == 'e')
{
pos5 = Serial.parseInt();
myservo5.write(pos5);
}
if (Serial.read() == 'f')
{
pos6 = Serial.parseInt();
myservo6.write(pos6);
}
}
I didn't know this page. but it looks nice. the problem with my code is, i need a serial monitor to type in text for control. And i didn't find a serial monitor on this page.
I find out that i have to use Serial.Print that the serial monitor will oben. the code is funktion for servo motor A but not for B,C,D,E and F. Maybe someone can tell me whats wrong?
The problem is that you are reading from Serial without knowing whether anything is available to read
Try this instead
/*Geben Sie über den "Serial Monitor" neue Werte für die Servomotoren ein.
Beispiel: für Servo1 "a90" für 90°
für Servo2 "b130" für 130°
*/
#include <Servo.h> //Lad Servo-Bibliothek
Servo myservo1; //erzeugt das erste Servo-Objekt, muss für jeden angeschlossenen Servomotor erstellt werden
Servo myservo2; //erzeugt das zweite Servo-Objekt
Servo myservo3; //usw.
Servo myservo4;
Servo myservo5;
Servo myservo6;
int pos1 = 0; //Variable für die Position von Servo1, Startposition 0
int pos2 = 0;
int pos3 = 0;
int pos4 = 0;
int pos5 = 0;
int pos6 = 0;
void setup()
{
myservo1.attach(5); //Anschluss des Servomotors 1 an Pin 5
myservo2.attach(6);
myservo3.attach(7);
myservo4.attach(8);
myservo5.attach(9);
myservo6.attach(10);
Serial.begin(9600); //Serielle Komunikation starten
Serial.println("starting");
}
void loop()
{
if (Serial.available())
{
char inChar = Serial.read();
if (inChar == 'a') //Abfrage ob neuer Wert folgt für Servo 1
{
Serial.println("got a");
pos1 = Serial.parseInt(); //Einlesen des neuen Wertes und
myservo1.write(pos1); //Übergabe an den Servomotor 1
Serial.println(pos1);
}
if (inChar == 'b')
{
Serial.println("got b");
pos2 = Serial.parseInt();
myservo2.write(pos2);
}
if (inChar == 'c')
{
pos3 = Serial.parseInt();
myservo3.write(pos3);
}
if (inChar == 'd')
{
pos4 = Serial.parseInt();
myservo4.write(pos4);
}
if (inChar == 'e')
{
pos5 = Serial.parseInt();
myservo5.write(pos5);
}
if (inChar == 'f')
{
pos6 = Serial.parseInt();
myservo6.write(pos6);
}
}
}