Uso de Botones con Resistencia Pull-Up en Arduino

Clase 28 de 38Curso Fundamentos de Desarrollo de Hardware con Arduino

Resumen

Aprende a dominar el uso de un botón en Arduino con la resistencia pull up interna, evitando cortos, ahorrando componentes y controlando un LED como salida. Además, recuerda las bases vistas: lectura analógica con potenciómetro y PWM para brillo de LED y futura velocidad de motor. Con estas prácticas, tus proyectos serán más limpios y confiables.

¿Cómo funciona la resistencia pull up con un botón en Arduino?

La resistencia pull up asegura que la entrada digital tenga un estado estable siempre. Con el botón conectado entre el pin y tierra, al presionar se crea el camino de menor resistencia hacia GND y la lectura es 0, es decir, estado bajo o low. Al soltar, el circuito se abre y la entrada “sube” a VCC, lectura 1, estado alto o high.

  • La corriente toma el camino de menor resistencia. Por eso, al presionar, va a GND.
  • La resistencia evita un cortocircuito entre VCC y GND. Sin ella, el consumo sería alto y dañino.
  • Valores típicos mencionados: 5 a 10 kΩ para pull up externo cuando se usa fuera del microcontrolador.
  • Nivel de referencia común: 5 V en Arduino Uno.
  • Con pull up la lógica queda invertida: presionar equivale a low; soltar equivale a high.

¿Cómo activar INPUT_PULLUP y cablear el push button al LED?

El microcontrolador Atmel del Arduino Uno incluye resistencias pull up internas en pines digitales. Así se evita montar una resistencia externa: solo conecta el botón del pin digital a GND y activa la configuración por código con INPUT_PULLUP.

  • Conecta el botón entre pin digital y GND. Sin resistencia externa.
  • Usa el LED interno en el pin 13 y el botón en el pin 12 para simplificar.
  • Carga el sketch antes de cablear: los pull ups se activan por código.
  • Evitas ocupar espacio en protoboard y ahorras pads en tu PCB.

Ejemplo mínimo funcional en Arduino:

const int LED1 = 13;   // LED interno.
const int BOTON1 = 12; // Botón entre pin y GND.

void setup() {
  pinMode(BOTON1, INPUT_PULLUP); // Activa resistencia pull up interna.
  pinMode(LED1, OUTPUT);         // LED como salida.
}

void loop() {
  if (digitalRead(BOTON1) == LOW) { // Presionado lee LOW.
    digitalWrite(LED1, HIGH);       // Enciende LED.
  } else {
    digitalWrite(LED1, LOW);        // Apaga LED.
  }
}

Tips de implementación:

  • Declara pines como constantes: const int. Claridad y seguridad.
  • Cuida la indentación para legibilidad del código.
  • En comparaciones usa ==, no =. Evita el error clásico de asignación.
  • Verifica y compila antes de conectar el botón a GND.

¿Qué habilidades, keywords y buenas prácticas se refuerzan?

Más allá del botón, se consolidan habilidades ya vistas y esenciales para proyectos reales con Arduino.

  • Lectura analógica con potenciómetro: base para cualquier sensor analógico.
  • PWM para controlar brillo de LED y, más adelante, velocidad de motor.
  • Uso de la resistencia pull up interna: menos componentes y menos errores.
  • Cableado correcto del push button: pin digital a GND.
  • Manejo de funciones: pinMode, digitalRead, digitalWrite.
  • Lógica invertida con INPUT_PULLUP: presionar es low; soltar es high.
  • Corrección de errores típicos en C: usar == para comparación.
  • Trabajo con IDE y sketch: verificar, compilar y cargar antes de cablear.
  • Componentes citados: switch o push button, LED interno del pin 13, LED ultrabrillante, cables macho-hembra.

¿Quieres que en la siguiente entrega se conecte un sensor de temperatura y un LCD para leer, procesar y mostrar grados centígrados? Cuéntame en los comentarios qué sensor te interesa integrar y qué quieres visualizar en pantalla.