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 ser INPUT (entrada) o OUTPUT (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 HIGH si recibe voltaje o LOW si 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}