#define MAX_MESSAGE_LENGTH 64 //define max message length
String messageString; //define output String
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
Serial.println();
}
void loop() {
parseMessage();
}
void readinSerial(){
static unsigned int message_pos = 0; //saves the current pos of character
while(Serial.available() > 0){ // check if there is something in the serial buffer
static char message[MAX_MESSAGE_LENGTH]; //create a char array to store the incoming message
char inByte = Serial.read(); //read in the next Byte from the serial buffer
if(inByte != '\n' && (message_pos < MAX_MESSAGE_LENGTH - 1)){ //check for terminating character
message[message_pos] = inByte; //save the byte from the serial buffer to the char array
message_pos++; //move to next position
}else{
message[message_pos] = '\0'; //if the message is over
messageString = message; //save it to the output String
message_pos = 0; //reset the char position
}
}
}
void parseMessage(){
readinSerial();
newledOn(messageString);
newledOff(messageString);
newledBlink(messageString);
messageString ="";
}
void newledOn(String message){
if (message == "LED_on"){
digitalWrite(LED_BUILTIN, HIGH);
}
}
void newledOff(String message){
if (message == "LED_off"){
digitalWrite(LED_BUILTIN, LOW);
}
}
void newledBlink(String message){
int separatorIndex = message.indexOf(':'); // Finde die Position des Trennzeichens (:) im String
if (separatorIndex != -1) { // Wenn das Trennzeichen gefunden wurde
String command = message.substring(0, separatorIndex); // Extrahiere den Befehl (z.B. "LED_blink")
int value = message.substring(separatorIndex + 1).toInt();
// Ausgabe zur Kontrolle
Serial.println("Command: " + command);
Serial.print("Value: ");
Serial.println(value);
// Hier kannst du entsprechend auf den Befehl reagieren
if (command == "LED_blink") {
digitalWrite(LED_BUILTIN, HIGH);
delay(value);
digitalWrite(LED_BUILTIN, LOW);
delay(value);
digitalWrite(LED_BUILTIN, HIGH);
delay(value);
digitalWrite(LED_BUILTIN, LOW);
delay(value);
digitalWrite(LED_BUILTIN, HIGH);
delay(value);
digitalWrite(LED_BUILTIN, LOW);
delay(value);
}
}
}