Hier nochmal der geänderte Empfängercode:
#include <Servo.h>
Servo xservo;
Servo zservo;
const int NUMBER_OF_FIELDS = 2; // Wie viele kommaseparierte Felder erwarten wir?
int fieldIndex = 0; // Das aktuell empfangene Feld
int values[NUMBER_OF_FIELDS]; // Array mit den Werte aller Felder
int angle_x , angle_z;
void setup()
{
Serial.begin(9600); // Serieller Port sendet und empfa¨ngt mit 9600 Baud
xservo.attach(9);
zservo.attach(10);
}
void loop()
{
if( Serial.available()) {
char ch = Serial.read ();
if (ch == 'B'){
for(fieldIndex = 0; fieldIndex < 2; fieldIndex ++)
values[fieldIndex] = Serial.parseInt(); // Numerischen Wert einlesen
angle_x = values [0] ;
angle_z = values [1] ;
fieldIndex = 0; // und von vorn anfangen
}
}
Serial.print("angle_x");
Serial.print(angle_x);
Serial.print(" angle_z");
Serial.println(angle_z);
delay(5);
xservo.write(angle_x / 2);
delay(5);
zservo.write(angle_z / 2);
delay(50);
}
Bei still stehendem Senssor erhalte ich folgende Ausgaben des Empfängers:
angle_x6 angle_z67
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z1409
angle_x69 angle_z1409
angle_x69 angle_z1409
angle_x69 angle_z1409
angle_x69 angle_z1409
angle_x69 angle_z1409
angle_x69 angle_z141
angle_x140 angle_z68
angle_x140 angle_z68
angle_x68 angle_z140
angle_x68 angle_z141
angle_x1 angle_z67
angle_x1 angle_z67
angle_x1 angle_z67
angle_x1 angle_z67
angle_x1 angle_z67
angle_x1 angle_z67
angle_x1 angle_z67
angle_x1 angle_z67
angle_x69 angle_z4
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z141
angle_x69 angle_z69
angle_x69 angle_z69
Gesendet wird:
B70,144,
B69,144,
B69,144,
B70,143,
B71,143,
B70,143,
B69,144,
B70,143,
B70,143,
B70,143,
B69,143,
B70,144,
B69,144,
B70,144,
B68,145,
B69,143,
B69,144,
B69,144,
B70,143,
B70,143,
Servos zappeln wie wild.