#include SoftwareSerial s(13,15); #include int livello, min, max; void setup() { Serial.begin(9600); s.begin(2400); } void loop() { if (s.available() > 0) { static char rxBuffer[32]; // la direttiva static fa in modo che la variabile locale mantiene in memoria il valore static int index =0; char ch = s.read(); // Leggiamo un carattere per volta (non bloccante come parseInt()) rxBuffer[index++] = ch; // Questa istruzione aggiunge ch all'array e contemporaneamente incrementa index di 1 if (ch == '\n' ) { // Trasmissione completa -> reset di index (ed eventualmente dell'array se necessario) index = 0; // conversione del char array to int con l'istruzione C sscanf sscanf(rxBuffer, "%d;%d;%d", &livello, &min, &max); Serial.print("Hai inviato il numero "); Serial.println(livello); livello = map(livello, min, max, 0, 500); Serial.print("Risultato del map "); Serial.println(livello); } }