Leggere un pulsante in input e pilota un LED
Progettare un sistema per accendere e spegnere un LED in base alla pressione di un pulsante:
- pulsante rilasciato → LED ON;
- pulsante premuto → LED OFF.
Soluzione
Collegare un pulsante (normalmente aperto) tra il digital pin 7 e GND (attivando il pull-up interno), e un LED, con un resistore da 220 in serie, tra il digital pin 13 e GND.
/*
Leggi un pulsante in input e pilota un LEd in output:
– pulsante rilasciato –> LED ON
– pulsante premuto –> LED OFF
*/
bool puls; // la variabile booleana puls memorizza lo stato del pulsante
void setup(){
pinMode(7, INPUT_PULLUP); // imposta il pin digitale 7 come input (pull-up interno)
pinMode(13, OUTPUT); // imposta il pin digitale 13 come output
}
void loop(){
puls = digitalRead(7); // leggi il bit sul pin 7, collegato al pulsante
// e memorizzalo nella variabile puls
digitalWrite(13, puls); // scrivi sul pin 13, collegato al LED, il valore di puls
}
Nello sketch si può notare che:
- la variabile puls, destinata a memorizzare un bit, è definita come bool (boolean), sarebbe stato accettato anche il tipo int (integer), ma avrebbe occupato due byte di memoria invece che uno;
- il loop ripete all’infinito la lettura del bit sul pin 7 e la scrittura di tale bit sul pin 13; si sarebbe potuto compattare anche in una istruzione unica: digitalwrite(13, digitalRead (7));
- dato che il pin 13 è collegato anche al LED L sulla scheda, i due LED si accendono e spengono contemporaneamente.
Commento all'articolo