Tomo 2: ¡El Arduino Aprende a Escuchar! - El Pulsador

¡Saludos, equipo! En nuestra misión anterior, le enseñamos al Arduino a "hablar" usando un LED. Ahora, vamos a darle "oídos" para que pueda escucharnos. Le enseñaremos a recibir órdenes del mundo real a través de un pulsador (o botón).

Hoy dejaremos de ser solo programadores para convertirnos en usuarios. Haremos que nuestro circuito reaccione a nuestras acciones.


🌟 El Protagonista de Hoy: El Pulsador Táctil

Un pulsador es uno de los sensores más sencillos y útiles que existen. Su trabajo es simple: cerrar o abrir un camino para la electricidad cuando lo presionas.

Una foto de un push button de 4 pines, mostrando cuáles son sus pines de conexión y cómo se vería internamente.
Una foto de un push button de 4 pines, mostrando la forma correcta de conexión en el protoboard cruzando el canal central.

🔌 El Circuito: Un Botón para Controlar un LED

Vamos a construir un circuito donde al presionar un botón, se encienda un LED.

Componentes Necesarios:

Cant. Componente
1 Placa Arduino UNO
1 Protoboard
1 LED (cualquier color)
1 Resistencia de 220Ω (el guardaespaldas del LED)
1 Pulsador táctil (Push Button)
Varios Cables Jumper

📝 Instrucciones de Conexión:

Circuito del LED (ya lo conoces):

  1. Conecta una resistencia de 220Ω al Pin 13.
  2. Conecta el otro extremo de la resistencia a la pata larga (+) del LED.
  3. Conecta la pata corta (-) del LED a GND.

Circuito del Botón (usando PULL-UP interno):

  1. Coloca el pulsador en la protoboard (cruzando el canal central).
  2. Conecta una pata del botón al Pin Digital 2 del Arduino.
  3. Conecta la pata diagonalmente opuesta del botón a GND. ¡Así de fácil!

⚡ Diagrama de armado

Un diagrama de TINKERCAD mostrando el circuito completo. El LED en el pin 13 y el botón en el pin 2, conectado a GND.

💡 Conceptos Clave: ¿Está Presionado o No?

El Ruido Eléctrico (Estado Flotante)

Aquí viene un concepto súper importante en la electrónica. Si solo conectamos el pin de Arduino al botón, cuando el botón no está presionado, el pin queda "flotando". No está conectado ni a 5V ni a GND.

Imagina que le preguntas a un amigo: "¿Vienes a la fiesta? Responde SÍ o NO". Si se queda callado, ¿qué significa? No sabes la respuesta. Para un pin de Arduino, ese silencio es ruido eléctrico. Puede interpretar cualquier cosa, ¡un 1, un 0, un 1, un 0! A esto se le llama estado flotante.

Necesitamos asegurarnos de que el pin SIEMPRE tenga una respuesta clara: o es un HIGH (5V) o es un LOW (0V). Para eso, usamos a nuestras viejas amigas: las resistencias.

La Solución: Las Resistencias Pull-Up y Pull-Down

Estas resistencias son como "anclas". Amarran el pin a un estado seguro (HIGH o LOW) cuando el botón no está presionado, evitando que quede flotando.

1. Configuración PULL-DOWN (La más intuitiva):

Diagrama simple de un circuito PULL-DOWN. Muestra el pin de Arduino conectado al botón y a una resistencia de 10k ohmios que va a GND.

2. Configuración PULL-UP (La que usa Arduino internamente):

Diagrama simple de un circuito PULL-UP. Muestra el pin de Arduino conectado al botón y a una resistencia de 10k ohmios que va a 5V.
¡Buenas noticias! Arduino tiene resistencias de Pull-up internas que podemos activar por software. ¡Así nos ahorramos un componente en la protoboard! Hoy usaremos esa.

🧠 El Código: Leyendo el Botón

Este código le dirá al Arduino cómo "escuchar" al botón en el Pin 2 y cómo "hablar" con el LED en el Pin 13.

Código Arduino - Misión 02

/*
 * Misión 02: Escuchando al Mundo - Controlar un LED con un Pulsador
 * Descripción: Al presionar el botón, el LED se enciende.
 * Usaremos la resistencia PULL-UP interna de Arduino.
 * Por: Profe Campos
 * CECyTEM 05 Guacamayas
*/

// --- ZONA DE CONFIGURACIÓN ---
// Aquí declaramos variables para no usar "números mágicos" en el código.
// Es una buena práctica para que tu código sea más fácil de leer y modificar.
int pinBoton = 2; // El pin donde conectamos el botón.
int pinLed = 13;  // El pin donde está nuestro LED.

// Esta variable guardará el estado del botón (si está presionado o no).
int estadoBoton = 0;

// El bloque setup() se ejecuta UNA SOLA VEZ.
void setup() {
  // Configuramos el pin del LED como una SALIDA.
  pinMode(pinLed, OUTPUT);
  
  // Configuramos el pin del botón como una ENTRADA con la resistencia PULL-UP interna activada.
  // ¡Esto nos ahorra poner una resistencia externa!
  pinMode(pinBoton, INPUT_PULLUP); 
}

// El bloque loop() se repite infinitamente.
void loop() {
  // 1. LEEMOS el estado del pin del botón.
  // La función digitalRead() nos dice si el pin está recibiendo una señal HIGH o LOW.
  estadoBoton = digitalRead(pinBoton);

  // 2. TOMAMOS UNA DECISIÓN con la estructura "if/else" (Si/Si no).
  // Recordatorio: con PULL-UP, el pin es LOW cuando se presiona.
  if (estadoBoton == LOW) {
    // Si la condición es VERDADERA (el botón está presionado)...
    // ...entonces encendemos el LED.
    digitalWrite(pinLed, HIGH);
  } else {
    // Si no (si la condición es FALSA, el botón no está presionado)...
    // ...entonces apagamos el LED.
    digitalWrite(pinLed, LOW);
  }
  
  // El loop vuelve a empezar, leyendo y decidiendo una y otra vez, muy rápido.
}

🚀 ¡Inténtalo Tú Mismo! (Retos)

¡Misión cumplida! Ahora tu Arduino no solo habla, sino que también escucha. Has aprendido uno de los conceptos más importantes: cómo recibir una señal del mundo exterior de forma fiable.

¡Sigue experimentando! - Profe Campos