int pinA = 2; int pinB = 3; int pinC = 4; int pinD = 5; int stop = 0; int VarSign = 1; int SerIn = -1; long VarN[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; int PosN = -1; char VarHandlerChar = '@'; // SERIAL PARSER ********************************** void SerialParser(void) { while (Serial.available()) { SerIn = '@'; SerIn = Serial.read(); // debugging CODE // Serial.print(' '); // Serial.print(SerIn); if ((SerIn >= 65) && (SerIn <= 90)) { // if ASCII 'A' - 'Z' VarHandlerChar = SerIn; for (PosN = 0; PosN < 9; PosN++) { // clean up VarN[PosN] = 0; // reset Var array } PosN = -1; } if (SerIn == 45) { VarSign = -1; } if ((SerIn >= 48) && (SerIn <= 57)) { // if ASCII numeric '0' - '9' VarN[PosN] = VarN[PosN] * 10 + (SerIn - 48); } if (SerIn == ' ') { // if ASCII " " detected if (PosN > -1) { VarN[PosN] = VarSign * VarN[PosN]; // assign sign VarSign = 1; } PosN++; } if (SerIn == 33 || SerIn == 10 || SerIn == 13) { // '!' or CR or LF ends all this spooky things ... VarN[PosN] = VarSign * VarN[PosN]; // assign sign VarSign = 1; CallHandler(); // Call funktion by first Char } // IfEND CR spooky things } } //************************************* void CallHandler(void) { switch(VarHandlerChar) { case 'A': LED(pinA, VarN[0]); break; case 'B': LED(pinB, VarN[0]); break; case 'C': // LED(pinC, VarN[0]); break; case 'D': // LED(pinD, VarN[0]); break; } // Switch END } void LED(int ledNr, int OnOff){ if (OnOff <= 0 ){ digitalWrite(ledNr, LOW); } else { digitalWrite(ledNr, HIGH); } } void setup(void) { Serial.begin(115200); pinMode(pinA, OUTPUT); pinMode(pinB, OUTPUT); pinMode(pinC, OUTPUT); pinMode(pinD, OUTPUT); } void loop(void) { SerialParser(); }