Alterna a ogni pressione
Fa parte della sezione Ingressi del percorso Arduino di Coddy. Lezione 4 di 22.
Finora il LED ha imitato il pulsante: acceso mentre lo tieni premuto, spento quando lo rilasci. Un interruttore della luce funziona diversamente: premi una volta per accenderla, premi di nuovo per spegnerla. Questo si chiama toggle.
Per alternare lo stato, lo sketch deve rilevare il momento in cui il pulsante viene premuto: è premuto adesso, ma non lo era l'ultima volta che loop() è stato eseguito. Quel momento si chiama fronte. Conserva l'ultima lettura in una variabile sopra setup(), come un contatore:
int lastReading = HIGH;
void loop() {
int reading = digitalRead(2);
if (reading == LOW && lastReading == HIGH) {
// il pulsante è stato premuto
}
lastReading = reading;
}Tenendo premuto il pulsante, la lettura rimane LOW, quindi il fronte si verifica una volta per ogni pressione, per quanto a lungo tu lo tenga premuto.
Per invertire un bool, usa !, che significa "non": ledOn = !ledOn; trasforma true in false e viceversa.
Sfida
MedioIl pulsante è sul pin 2 (INPUT_PULLUP) e il LED sul pin 13. Fai in modo che ogni pressione alterni lo stato del LED:
- quando il pulsante viene premuto (
LOWora,HIGHl’ultima volta), invertiledOn - salva la lettura in
lastReadingalla fine diloop() - accendi o spegni il LED in base a
ledOn
Premi Run, premi il pulsante alcune volte, poi Check.
Provalo tu
const int buttonPin = 2;
const int ledPin = 13;
bool ledOn = false;
int lastReading = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
// inverti ledOn quando il pulsante viene premuto
// memorizza questa lettura per la prossima volta
// accendi o spegni il LED in base a ledOn
}
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