Controllo del periodo di lampeggio tramite pulsante (blocking mode)
L'esperienza è tratta da: http://www.maffucci.it/2011/03/10/arduino-lezione-4-realizzare-un-programma-che-identifica-le-variazioni-di-stato/
Ma con modifiche!
Il pulsante è collegato al pin 7 (input) e il LED al pin 13 (output). Questa volta al posto dei
#define BUTTON 7 // pin di input a cui è collegato il pulsante #define LED 13 // LED collegato al pin digitale 13vengono utilizzate le costanti intere che svolgono egregiamente lo stesso compito
const int BUTTON = 7; // pin di input a cui è collegato il pulsante const int LED = 13; // LED collegato al pin digitale 13
Attenzione che è necessario tenere premuto il pulsante circa un secondo affinché Arduino senta il comando
(questo è un problema che impareremo a risolvere più avanti)
- Inizio: led acceso
- Primo tocco: led lampeggia con periodo di mezzo secondo
- Secondo tocco: led lampeggia con periodo di 1 secondo
- Terzo tocco: led lampeggia con periodo di 1 secondo e mezzo (al tocco successivo si riprende dal punto 1)
// All'inizio led acceso // Primo tocco: led lampeggia con periodo di mezzo secondo // Secondo tocco: led lampeggia con periodo un secondo // Terzo tocco: led lampeggia con periodo un secondo e mezzo // Quarto tocco: led acceso // N.B. Affinché la pressione venga letta e abbia efficacia // è necessario tenere premuto il pulsante per un breve periodo const int BUTTON = 7; // pin di input a cui è collegato il pulsante const int LED = 13; // LED collegato al pin digitale 13 // Variabili globali bool statoButton; // stato del pulsante int countButton = 0; // Conteggio del bottone // Avvio dell'applicazione void setup() { pinMode(LED, OUTPUT); // imposta il pin digitale come output pinMode(BUTTON, INPUT); // imposta il pin digitale come input digitalWrite(LED, HIGH); // accende il LED } // Avvio del loop void loop() { statoButton = digitalRead(BUTTON); // legge il valore dell'input e lo conserva if(statoButton == HIGH) // verifico se l'utente ha premuto il bottone { // Aumento il count del bottone if(countButton<=3) countButton=countButton+1; else countButton=0; while(digitalRead(BUTTON) == HIGH); // Aspettare il rilascio del pulsante // delay(200); // debounce, decommentare se necessario } // In base allo stato del bottone scelgo l'azione del led switch (countButton) { // Led lampeggia ogni mezzo secondo case 1: digitalWrite(LED, HIGH); // accende il LED delay(250); // aspetta 250 millisecondi digitalWrite(LED, LOW); // spegne il LED delay(250); // aspetta 250 millisecondi break; // Led lampeggia ogni secondo case 2: digitalWrite(LED, HIGH); // accende il LED delay(500); // aspetta 500 millisecondi digitalWrite(LED, LOW); // spegne il LED delay(500); // aspetta 500 millisecondi break; // led lampeggia ogni secondo e mezzo case 3: digitalWrite(LED, HIGH); // accende il LED delay(750); // aspetta 750 millisecondi digitalWrite(LED, LOW); // spegne il LED delay(750); // aspetta 750 millisecondi break; // Led si spegne case 0: digitalWrite(LED, HIGH); delay(15); // aspetta per aumentare le performance break; } }
Ultime modifiche: martedì, 24 marzo 2020, 21:07