Entrada y Salida Digital
1. Qué es la entrada/salida digital? #
La entrada/salida digital permite interactuar con componentes electrónicos que solo pueden tener dos estados: encendido (HIGH) o apagado (LOW).
- Entrada digital: Leer datos desde sensores o componentes externos, por ejemplo, un pulsador.
- Salida digital: Enviar señales para controlar dispositivos externos, por ejemplo, encender o apagar un LED.
2. Configuración de pines digitales #
Antes de usar los pines digitales, deben configurarse con la función pinMode():
1pinMode(numeroPin, modo);
numeroPin: El pin que usarás (0-13 para Arduino UNO).modo:INPUT: Entrada estándar (requiere resistencia pull-up o pull-down externa para evitar que el pin quede "flotante").OUTPUT: Salida para controlar actuadores o LEDs.INPUT_PULLUP: Entrada con resistencia interna de pull-up (20k-50kΩ a 5V) activada en el microcontrolador. Permite conectar pulsadores directamente entre el pin y GND sin componentes externos (el botón leeHIGHen reposo yLOWal pulsarlo).
Ejemplo:
1pinMode(13, OUTPUT); // pin 13 configurado como salida para un LED 2pinMode(2, INPUT_PULLUP); // pin 2 como entrada con resistencia pull-up interna para un botón a GND 3pinMode(4, INPUT); // pin 4 como entrada con resistencia externa
3. Escribir y leer señales digitales #
digitalWrite() #
La función digitalWrite() permite asignar un valor digital a un pin de salida (HIGH o LOW):
1digitalWrite(numeroPin, valor);
Ejemplo para encender/apagar un LED:
1digitalWrite(13, HIGH); // Enciende el LED en el pin 13 2digitalWrite(13, LOW); // Apaga el LED
digitalRead() #
La función digitalRead() permite leer el valor digital de un pin configurado como entrada:
1valor = digitalRead(numeroPin);
- Devuelve
HIGHsi recibe voltaje oLOWsi no recibe voltaje.
Ejemplo para leer un botón:
1int estadoBoton = digitalRead(2); 2 3if (estadoBoton == HIGH) { 4 // el botón está presionado 5} else { 6 // el botón no está presionado 7}
4. Uso de LEDs con Arduino #
Conexión básica de un LED: #
- Patilla larga (ánodo, +) a un pin digital a través de una resistencia (220Ω recomendado).
- Patilla corta (cátodo, -) a tierra (GND).
Ejemplo práctico - LED intermitente:
1const int pinLED = 13; 2 3void setup() { 4 pinMode(pinLED, OUTPUT); 5} 6 7void loop() { 8 digitalWrite(pinLED, HIGH); 9 delay(1000); // espera 1 segundo 10 digitalWrite(pinLED, LOW); 11 delay(1000); // espera otro segundo 12}
5. Uso de botones (pulsadores) con Arduino #
Conexión básica de un botón: #
- Una terminal conectada al pin digital configurado como entrada.
- Otra terminal conectada a voltaje (5V).
- Se recomienda usar una resistencia de pull-down conectada a tierra (GND), o usar la resistencia interna (pull-up) del Arduino.
Ejemplo práctico con resistencia interna (pull-up):
1const int pinBoton = 2; 2const int pinLED = 13; 3 4void setup() { 5 pinMode(pinBoton, INPUT_PULLUP); // resistencia pull-up interna activada 6 pinMode(pinLED, OUTPUT); 7} 8 9void loop() { 10 int estadoBoton = digitalRead(pinBoton); 11 12 if (estadoBoton == LOW) { // pulsado (pull-up activa invierte lógica) 13 digitalWrite(pinLED, HIGH); 14 } else { 15 digitalWrite(pinLED, LOW); 16 } 17}
Resumen del tema
Conceptos clave #
- Estados Lógicos Digitales: señales discretas de dos niveles:
HIGH(5V o nivel lógico 1) yLOW(0V o nivel lógico 0). - Configuración de Pines:
pinMode(pin, modo)establece la dirección del flujo de datos comoINPUToOUTPUT. - Escritura y Lectura:
digitalWrite(pin, valor)para activar o desactivar salidas, ydigitalRead(pin)para consultar el estado de entradas. - Conexiones y Resistencias: uso de resistencias limitadoras de corriente para LEDs (220Ω) y resistencias pull-up internas (
INPUT_PULLUP) para evitar estados de alta impedancia o ruido flotante en pulsadores.
Qué debes recordar #
Al utilizar pulsadores con INPUT_PULLUP, la lógica se invierte: el estado en reposo es HIGH y al ser presionado se lee LOW.