L’istruzione IF...ELSE si usa per scegliere tra due alternative.

Con un pulsante e due LED, progetta un sistema in cui:

  • con il pulsante rilasciato si accende solo il LED rosso;
  • premendo il pulsante si accende solo il LED verde.

Il codice dello sketch:

/*
1 pulsante e 2 LED:
- pulsante rilasciato --> LED rosso ON, verde OFF
- pulsante premuto --> LED rosso OFF, verde ON
(L'istruzione IF...ELSE)
*/

bool puls; // la variabile booleana puls memorizza lo stato del pulsante
const int pinPuls=7; // uguaglia la costante pinPuls a 7 (pin del pulsante)
const int pinRosso=12; // uguaglia la costante pinRosso a 12 (pin del LED rosso)
const int pinVerde=13; // uguaglia la costante pinVerde a 13 (pin del LED verde)

void setup(){
pinMode(pinPuls, INPUT_PULLUP); // imposta il pin digitale 7 come input (con pull-up interno)
pinMode(pinRosso, OUTPUT); // imposta il pin digitale 12 come output
pinMode(pinVerde, OUTPUT); // imposta il pin digitale 13 come output
}

void loop(){
puls = digitalRead(pinPuls); // leggi il bit sul pin 7, collegato al pulsante
// e memorizzalo nella variabile puls

if (puls==1){ // se puls=1 (pulsante rilasciato)
digitalWrite(pinRosso, HIGH); // LED rosso ON (pin 12)
digitalWrite(pinVerde, LOW); // LED verde OFF (pin 13)
}
else { // altrimenti se puls=0 (pulsante premuto)
digitalWrite(pinRosso, LOW); // LED rosso OFF (pin 12)
digitalWrite(pinVerde, HIGH); // LED verde ON (pin 13)
}
}

Nello sketch si può notare che:

  • sono state definite le costanti intere pinPuls=7, pinRosso=12 e pinverde=13, che memorizzano i pin a cui sono collegati il pulsante e i due LED; queste sono poi richiamate nello sketch. In questo modo il programma è più leggibile e, nel caso in futuro tu volessi modificare i pin a cui sono collegati i componenti, sarà sufficiente variare il contenuto delle costanti all’inizio dello sketch.
  • È stata usata l’istruzione IF...ELSE per compiere due azioni differenti secondo il valore della variabile puls: se è soddisfatta la condizione tra parentesi (puls==1), sono eseguite le istruzioni del blocco tra le graffe successive, altrimenti quelle del blocco dopo l’else.
  • Il simbolo = è usato per assegnare un valore a una variabile/costante, ad esempio puls()=0.
  • Il simbolo == è usato nelle espressioni per effettuare un confronto (il risultato è booleano, vero o falso), ad esempio nella istruzione if(puls==1) l’espressione tra parentesi è VERA se puls vale 1. È equivalente scrivere if(puls) ma, per maggiore chiarezza, evidenziamo la condizione completa. La sintassi dell’istruzione IF...ELSE è:

if (espressione) {

// blocco di istruzioni A

 

}

else {

// blocco di istruzioni B

}

Se espressione è VERA si esegue il blocco di istruzioni A, altrimenti viene eseguito il blocco B.
L’else è facoltativo e va eliminato se non esiste alternativa ad A :

 

if (espressione) {

// blocco di istruzioni A

}