Menu
CoddyTech

Pull-up interno

Fa parte della sezione Ingressi del percorso Arduino di Coddy. Lezione 3 di 22.

Hai usato INPUT_PULLUP sin da Leggere un pulsante. Attiva una resistenza interna alla scheda, da 20k a 50k ohm, tra il pin e 5V: il pull-down della lezione precedente, ma al contrario e senza componenti aggiuntivi. Il pulsante collega solo il pin a GND.

Il problema è che la logica è al contrario: a riposo legge HIGH, quando è premuto legge LOW, e ritrovarsi == LOW dappertutto in uno sketch rende facile confondersi. Un confronto come digitalRead(2) == LOW restituisce true o false, e un bool è una variabile che contiene true o false. Salvala con un nome che ne indichi il significato:

bool pressed = digitalRead(2) == LOW;

if (pressed) {
  // il pulsante è premuto
}

Da quel momento in poi il codice si legge nel verso giusto. Stampando un bool si visualizza 1 per true e 0 per false.

challenge icon

Sfida

Facile

Il pulsante collega il pin 2 a GND e il LED è sul pin 13:

  • imposta il pin 2 su INPUT_PULLUP
  • memorizza digitalRead(buttonPin) == LOW in una variabile bool chiamata pressed
  • stampa pressed, accendi il LED mentre è true, poi attendi 100 ms

Check si aspetta 1 mentre il pulsante è premuto e 0 quando è rilasciato. Premi Run, tieni premuto il pulsante, poi Check.

Provalo tu

const int buttonPin = 2;
const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  // attiva la resistenza di pull-up del pin del pulsante
}

void loop() {
  // bool pressed = ...
  // stampa il valore, accendi il LED finché è true, attendi 100 ms
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Ingressi

Esercitati da solo: Playground Arduino