Menu
CoddyTech

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.

challenge icon

Sfida

Medio

Il 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);
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Ingressi

Esercitati da solo: Playground Arduino