Menu
CoddyTech

Ricordare la modalità

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

La pressione di un pulsante dura una frazione di secondo, ma ciò che avvia può durare molto più a lungo. Per continuare dopo aver rilasciato il pulsante, lo sketch deve ricordare cosa sta facendo. Una variabile che serve a questo scopo si chiama stato o modalità:

int mode = 0;   // 0 = spento, 1 = lampeggiante

Dividi loop() in due parti. Prima, gli input cambiano solo la modalità. Poi, il resto del ciclo fa ciò che indica la modalità:

// 1. gli input cambiano la modalità
if (digitalRead(blinkButton) == LOW) {
  mode = 1;
}

// 2. la modalità determina cosa succede
if (mode == 1) {
  // fai lampeggiare con millis()
} else {
  digitalWrite(ledPin, LOW);
}

Ogni numero rappresenta una cosa che lo sketch può fare. Scrivi in un commento cosa significa ciascun numero. Uno sketch può avere tutte le modalità di cui ha bisogno: 0, 1, 2, 3 e altre.

challenge icon

Sfida

Facile

Il pulsante verde è sul pin 2 e quello rosso sul pin 3.

  • il verde imposta mode su 1, il rosso lo imposta su 0
  • quando mode è 1, il LED sul pin 13 lampeggia con millis(), 500 ms acceso e 500 ms spento
  • quando mode è 0, il LED è spento

Premi Run, premi il pulsante verde, rilascialo, poi premi quello rosso. Poi Check.

Provalo tu

const int ledPin = 13;
const int blinkButton = 2;   // verde
const int offButton = 3;     // rosso

int mode = 0;   // 0 = spento, 1 = lampeggiante

unsigned long previousMillis = 0;
int ledState = LOW;

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

void loop() {
  // 1. i pulsanti cambiano solo la modalità

  // 2. poi esegui ciò che prevede la modalità
}
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