const int lunghezzaComandoMax = 3; // Imposta la lunghezza massima del comando
char comando[lunghezzaComandoMax + 1]; // +1 per il carattere di terminazione della stringa ('\0')
int led_stato=1; // variabile stato led
void setup() {
Serial.begin(9600);
Serial.println("Inserire un comando ( ON - OFF )");
//Serial.print("Comando: ");
}
void loop() {
// Verifica se ci sono dati disponibili sulla porta seriale
if (Serial.available() > 0) {
// Leggi il comando dalla porta seriale fino a un newline ('\n')
int bytesRead = Serial.readBytesUntil('\n', comando, lunghezzaComandoMax);
// Rimuovi il terminatore di riga, se presente (N. bytes letti -1, essendo l'indice shiftato di 1)
// (generalmente non necessario, in quanto la funzione scarta in automatico il ritorno di riga '\n')
if (bytesRead > 0 && comando[bytesRead - 1] == '\n') bytesRead--;
// Aggiungi il terminatore della stringa solo se è stato letto almeno un carattere
if (bytesRead > 0) {
comando[bytesRead] = '\0';
// Esegui azioni in base al comando ricevuto
if (strcmp(comando, "ON") == 0) {
// Esegui azioni per il comando "ON"
Serial.println("Comando ON ricevuto");
digitalWrite(12, HIGH);
led_stato=1;
} else if (strcmp(comando, "OFF") == 0) {
// Esegui azioni per il comando "OFF"
Serial.println("Comando OFF ricevuto");
digitalWrite(12, LOW);
led_stato=1;
} else {
// Comando non riconosciuto
Serial.println("Comando non valido");
while(!Serial.available()) {
digitalWrite(12, led_stato);
led_stato=!led_stato;
delay(400);
}
}
// Aggiungi un ritardo per permettere al buffer di svuotarsi completamente
delay(100);
}
}
// Altre operazioni nel loop
}