Menu
CoddyTech

Una luce temporizzata

Fa parte della sezione Temporizzazione senza delay del percorso Arduino di Coddy. Lezione 6 di 18.

Una luce delle scale si accende quando premi il suo pulsante e si spegne da sola poco dopo. Premilo di nuovo mentre è accesa e il tempo riparte da zero.

Servono due cose: il momento dell'ultima pressione e sapere se la luce è accesa. Memorizza il momento in un unsigned long quando il pulsante viene premuto:

if (digitalRead(buttonPin) == LOW) {
  pressedAt = millis();     // avvia (o riavvia) il conteggio del tempo
  lightOn = true;
  digitalWrite(ledPin, HIGH);
}

Poi, a ogni ciclo, controlla quanto tempo è passato:

if (lightOn && millis() - pressedAt >= onTime) {
  lightOn = false;
  digitalWrite(ledPin, LOW);
}

Le due parti non attendono mai, quindi una pressione viene rilevata in qualsiasi momento, anche mentre la luce è già accesa. Con delay(2000) dopo la pressione, una seconda pressione durante l'attesa andrebbe persa.

challenge icon

Sfida

Facile

Realizza una luce per le scale:

  • una pressione accende subito il LED sul pin 13
  • 2 secondi dopo la pressione, si spegne da sola
  • una pressione mentre è accesa fa ripartire i 2 secondi

Premi Esegui, premi il pulsante alcune volte, poi Verifica.

Provalo tu

const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000;   // per quanto tempo la luce rimane accesa

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // quando il pulsante è premuto: accendi il LED e memorizza l'istante

  // quando è trascorso onTime da quell'istante: spegni il LED
}
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 Temporizzazione senza delay

Esercitati da solo: Playground Arduino