Pulsante a rilascio

Il pulsante a rilascio viene usato per fornire un valore digitale di ingresso. Gli interruttori e i pulsanti a rilascio sono ideali per fornire un livello digitale, perchè si possono portare in uno dei due stati 'on' e 'off'. Un piedino del pulsante viene collegato a GND, e l'altro piedino al pin digitale. Quando si preme il pulsante, il piedino digitale viene collegato a GND e quindi Arduino legge un livello LOW. Ma quando il pulsante è rilasciato il piedino è completamente disconnesso, si dice che è volante. Non è collegato nè ad un livello LOW nè ad un livello HIGH. Di conseguenza si collega una resistenza tra il pin digitale di Arduino e i 5 V, in tal modo, quando il pulsante è rilasciato il piedino è collegato a +5 V (=HIGH).


Se il pulsante è premuto il pin è collegato a GND, se é rilasciato il pin è collegato a 5V. Quindi il livello sul pin sarà LOW quando lo stato del pulsante è premuto (stato ON), e sarà HIGH quando il pulsante è rilasciato (stato OFF).


const int button1Pin = 2;
const int button2Pin = 3;
const int ledPin =  13;
void setup() {
  // i pin su cui sono collegati i pulsanti a rilascio vengono programmati per  INPUT:
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  // il pin su cui è collegato il LED é programmato per OUTPUT:
  pinMode(ledPin, OUTPUT);
}
void loop() {
  int button1State, button2State;  // stati dei pulsanti
  button1State = digitalRead(button1Pin); // lettura dello stato
  button2State = digitalRead(button2Pin);
/* se uno dei due pulsanti è premuto e non sono premuti entrambi */
  if (((button1State == LOW) || (button2State == LOW))
      && ! 
      ((button1State == LOW) && (button2State == LOW))) 
  {
    digitalWrite(ledPin, HIGH);  // Accende il LED
  } else {
    digitalWrite(ledPin, LOW);  // Spegne il LED
  }
}

Esercizi