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.