In questo progetto mediante il monitor seriale invieremo stringhe ad Arduino per cambiare il colore della luce emessa da un LED RGB.
Ci serviremo della funzione
Serial.parseInt()
per rilevare da una stringa valori separati da un carattere non alfanumerico, che in genere è una punteggiatura come una virgola, un punto; va bene anche uno spazio.
Questa funzione restituisce il primo numero intero valido (di tipo long) letto dal buffer seriale; vengono saltati i caratteri che non siano un numero intero o il segno meno.
Componenti
- LED RGB
- 3 resistenze 220 Ω
- Fili di collegamento
Il codice
const int pinVerde = 9;
const int pinBlu = 10;
const int pinRosso = 11;
void setup() {
Serial.begin(9600);
pinMode(pinRosso, OUTPUT);
pinMode(pinVerde, OUTPUT);
pinMode(pinBlu, OUTPUT);
}
void loop() {
while (Serial.available() > 0) {
int rosso = Serial.parseInt(); // leggi il primo dato
int verde = Serial.parseInt(); // leggi il secondo dato
int blu = Serial.parseInt(); // leggi il terzo dato
if (Serial.read() == '\n') { // se la stringa è esaurita
/* //RGB ad anodo comune
rosso = 255 - constrain(rosso, 0, 255);
verde = 255 - constrain(verde, 0, 255);
blu = 255 - constrain(blu, 0, 255);
*/
// RGB a catodo comune
rosso = constrain(rosso, 0, 255); // Nel caso si ecceda l’intervallo (0,255)
verde = constrain(verde, 0, 255);
blu = constrain(blu, 0, 255);
// configura il rosso, il verde, ed il blu sul LED RGB
analogWrite(pinRosso, rosso);
analogWrite(pinVerde, verde);
analogWrite(pinBlu, blu);
} // end if
}
// end while
}
// end loop