Velocità di lampeggio da seriale
Fa parte della sezione Ingressi del percorso Arduino di Coddy. Lezione 17 di 22.
Digita 250 e la scheda riceve tre caratteri, '2', '5' e '0', poi il carattere di nuova riga. Serial.parseInt() legge le cifre e le trasforma nel numero 250, fermandosi al primo carattere che non è una cifra.
C'è un inconveniente: quando non arriva alcuna cifra, parseInt() aspetta fino a 1 secondo che ne arrivi una, poi restituisce 0. Succede dopo ogni numero che digiti: il carattere di nuova riga che ha terminato il numero è ancora in attesa, quindi Serial.available() è di nuovo maggiore di 0 e parseInt() non trova cifre, aspetta un secondo e restituisce 0.
Quindi considera uno 0 come «niente di utile» e mantieni il valore precedente:
if (Serial.available() > 0) {
int n = Serial.parseInt();
if (n > 0) {
wait = n;
}
}Vedrai il LED fare una pausa di un secondo dopo ogni numero che digiti: è parseInt() che aspetta.
Sfida
MedioIl LED sul pin 13 lampeggia, resta acceso per wait ms e spento per wait ms, con wait che parte da 500. Lascia che il monitor Serial cambi la velocità:
- quando ci sono caratteri in attesa, leggi un numero con
Serial.parseInt() - se è maggiore di 0, memorizzalo in
wait
Premi Run, invia 100 dal monitor Serial, poi premi Check.
Provalo tu
const int ledPin = 13;
int wait = 500;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// quando ci sono caratteri in attesa, leggi un numero in wait (se è maggiore di 0)
digitalWrite(ledPin, HIGH);
delay(wait);
digitalWrite(ledPin, LOW);
delay(wait);
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Ingressi
3Input seriale
Leggere un carattere serialeComandi a paroleVelocità di lampeggio da serialeLampeggiare su comandoEsercitati da solo: Playground Arduino