#include <Servo.h> Servo meinservo; //Der Servo wird angesprochen #define INLENGTH 16//Länge des Strings #define INTERMINATOR 13//Zeilenumbruch char empfString[INLENGTH+1];//String der empfangen wird char empfDataString[INLENGTH+1];//Empfangener String ohne Befehlszeichen int inCount; int analogPin = 5; //Der Distanzsensor liegt an PIN 5 int val = 0; //Wert des Distanzsensors int taster2, taster3; //Tasten void setup() { meinservo.attach(9); // attaches the servo on pin 9 to the servo object Serial.begin(9600);//Die Bautrate 9600 wird gesetzt pinMode(2,INPUT);//PIN2 als Input digitalWrite(2,HIGH);//An PIN2 wird der Pullup Widerstand aktviert pinMode(3,INPUT);//PIN3 als Input digitalWrite(3,HIGH);//An PIN3 wird der Pullup Widerstand aktviert pinMode(5,OUTPUT);//Die LED wird an PIN5 angeschlossen } // int incomingByte = 0; //Anzahl der eingehenden Zeichen void loop() { inCount = 0;//Anzahl der eingehenden Zeichen ist 0 do { while (!Serial.available()); //Warte bis ein Zeichen anliegt empfString[inCount] = Serial.read(); //Lese ein Zeichen ein und speichere es in empfString if (empfString [inCount] == INTERMINATOR) break;//Wenn ein Zeilenumbruch kommt beende die Schleife } while(++inCount < INLENGTH);//Solange der String kleiner als das Maximum ist empfString[inCount] = 0; //Mit Null wird der String beendet for(int i=0;i<inCount-1;i++){//Das erste Zeichen ist der Befehl empfDataString[i]=empfString[i+1];//der neue String ist ohne das erste Zeichen (Befehl) } switch(empfString[0]){//Zeichen für das Kommando case 'A': Serial.print("A");//Mit A (Analogwert) wird der Distanzsensor abgefragt val = analogRead(analogPin); // val ist der eingelesene Analogwert Serial.println(val);//Die Distanz wird zurückgesendet break; case 'D': //Die digital Ein- und Ausgänge werden abgefragt if(empfDataString[0]=='2'){//Taster2 an PIN 2 wird abgefragt taster2 = digitalRead(2); Serial.print("D");//Kommando wird zurückgegeben Serial.println(taster2);//gedrückt ist 0 und ungedrückt ist 1 } if(empfDataString[0]=='3'){ taster3 = digitalRead(3);//Taster3 an PIN 3 wird abgefragt Serial.print("D");//Kommando wird zurückgegeben Serial.println(taster3);//gedrückt ist 0 und ungedrückt ist 1 } if(empfDataString[0]=='5'){ digitalWrite(5,HIGH);//Led wird angeschalten } if(empfDataString[0]=='6'){ digitalWrite(5,LOW);//Led wird ausgeschalten } break; case'S': Serial.print("S");//Sollwert für Servo int mein_integer_data = atoi(empfDataString);//Sollwertgenerierung meinservo.write(mein_integer_data);//Servo break; } }