La resistencia pull-up interna
Parte de la sección Entradas del Journey de Arduino de Coddy. Lección 3 de 22.
Has usado INPUT_PULLUP desde Lee un botón. Activa una resistencia dentro de la placa, de 20k a 50k ohm, entre el pin y 5V: el pull-down de la lección anterior, pero al revés y sin ningún componente adicional. El botón solo conecta el pin a GND.
El inconveniente es que la lógica está invertida: sin pulsar se lee HIGH, al pulsar se lee LOW, y es fácil equivocarse con == LOW por todo el sketch. Una comparación como digitalRead(2) == LOW es en sí misma true o false, y un bool es una variable que contiene true o false. Guárdala con un nombre que indique lo que significa:
bool pressed = digitalRead(2) == LOW;
if (pressed) {
// el botón está pulsado
}A partir de ahí, el código se lee en el sentido correcto. Al imprimir un bool se muestra 1 para true y 0 para false.
Desafío
FácilEl botón conecta el pin 2 a GND y el LED está en el pin 13:
- configura el pin 2 como
INPUT_PULLUP - guarda
digitalRead(buttonPin) == LOWen unboolllamadopressed - imprime
pressed, enciende el LED mientras seatruey después espera 100 ms
Check espera 1 mientras se mantiene presionado el botón y 0 cuando está suelto. Pulsa Run, mantén presionado el botón y después pulsa Check.
Pruébalo tú mismo
const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// activa la resistencia pull-up del pin del botón
}
void loop() {
// bool pressed = ...
// imprime su valor, enciende el LED mientras sea true y espera 100 ms
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Entradas
Practica por tu cuenta: Playground de Arduino