Curso C para Arduino
¿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.
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: Puede serINPUT(entrada) oOUTPUT(salida).
Ejemplo:
1pinMode(13, OUTPUT); // pin 13 configurado como salida 2pinMode(2, INPUT); // pin 2 configurado como entrada
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}
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}
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}