Devo acquisire un valore numerico con range 0-9999 dalla seriale, la quale ovviamente riceve un char per volta.
Ho provato a fare così
#define led 12 // led connesso al pin n°12
void setup()
{
Serial.begin(9600); // imposto la UART per lavorare a 9600
pinMode(led, OUTPUT); // imposto il pin sul quale è collegato il led come uscita
Serial.flush(); // svuoto il buffer di ricezione seriale
}
void loop() {
if (Serial.available() >0) { // Controllo se il buffer di ricezione contiene qualcosa
int value = leggiSeriale();
}
}
int leggiSeriale() {
char buffer[4];
int value = 0;
int index = 0;
int moltiplicatore = 1;
while (Serial.available() > 0) {
buffer[index] = Serial.read();
index++;
}
while(index >= 0) {
value = value + moltiplicatore*buffer[index];
index--;
moltiplicatore = moltiplicatore*10;
}
return value;
}
if (value>'5') // se ho ricevuto un valore maggiore di 5
{
digitalWrite(led,HIGH); // accendo il led
Serial.println("Led Acceso"); //e stampo a video lo stato del led
}
else // se invece
if value<'4') // ho ricevuto un valore inferiore a 5
{
digitalWrite(led,LOW); // spengo il led
Serial.println("Led spento"); //e stampo a video lo stato del led
}
}
ma il debug mi da errori aspettandosi una dichiarazione prima dell'if...
Ciao, Salvatore