Saltar al contenido principal
Un microcontrolador es un pequeño ordenador completo en un solo chip: procesador, memoria y patillas de entrada y salida para leer sensores y controlar luces, motores o pantallas. Está dentro de lavadoras, mandos, coches y termostatos. Arduino es una plataforma de placas y software libre que hace muy fácil programarlos, y es la forma más habitual de empezar con la electrónica programable en institutos y universidades.

Lo que vas a aprender

  • Qué es un microcontrolador y qué tiene la placa Arduino Uno.
  • La estructura de un programa de Arduino.
  • Cómo encender un LED y leer un pulsador.
  • Las entradas analógicas y el conversor analógico-digital.
  • Qué es el PWM y para qué sirve.
  • La comunicación serie y los sensores más habituales.

Fundamentos

La placa Arduino Uno

Otras placas habituales: el Arduino Nano (igual pero pequeño), el ESP32 (con wifi y Bluetooth, 3,3 V) y la Raspberry Pi Pico.

Estructura de un programa

Un programa (sketch) se escribe en C++ simplificado y tiene dos funciones obligatorias:

Salidas digitales: el LED

Un LED externo siempre lleva una resistencia en serie: R=5−VLEDI=5−20,015=200R = \frac{5 - V_{LED}}{I} = \frac{5 - 2}{0{,}015} = 200 Ω, se elige 220 Ω. Para cargas de más corriente (relés, motores) hace falta un transistor o un MOSFET.

Entradas digitales: el pulsador

Una entrada al aire lee valores aleatorios: hay que fijar su nivel con una resistencia. Arduino tiene resistencias de pull-up internas:
Los pulsadores mecánicos rebotan: durante unos milisegundos dan varios pulsos. Se filtra por programa (esperar unos 20 ms y volver a leer) o con un condensador.

Entradas analógicas

analogRead(A0) convierte una tensión de 0 a 5 V en un número de 0 a 1023 (10 bits). Cada paso son 5/1024=4,95/1024 = 4{,}9 mV. Así se leen potenciómetros, LDR, termistores o sensores de temperatura como el TMP36. La teoría está en muestreo y conversión ADC.
Muchos sensores resistivos se conectan como un divisor de tensión con una resistencia fija.

PWM

Arduino no tiene salidas analógicas reales: las patillas marcadas con ~ generan modulación por ancho de pulsos, una onda cuadrada de unos 490 Hz cuyo ciclo de trabajo se fija con analogWrite(pin, valor), de 0 (siempre apagado) a 255 (siempre encendido). La tensión media es Vmedia=5⋅valor255V_{media} = 5\cdot\frac{\text{valor}}{255}. Sirve para regular el brillo de un LED o la velocidad de un motor.

Comunicación serie

En el ordenador, el monitor serie muestra los valores: es la herramienta básica para depurar.

Sensores y actuadores habituales

Ejemplos resueltos

Ejemplo 1 · Regular el brillo con un potenciómetro

Dividir entre 4 pasa de 10 bits a 8. También se puede usar map(pot, 0, 1023, 0, 255).
El TMP36 da 0,5 V a 0 °C y sube 10 mV por grado: T=V−0,50,01T = \frac{V - 0{,}5}{0{,}01}.
Con una lectura de 153, V=0,748V = 0{,}748 V y T=24,8T = 24{,}8 °C. La resolución es de unos 0,5 °C.
delay() detiene todo el programa. Para hacer varias cosas a la vez se usa millis(), que da los milisegundos desde el arranque:
Es una pequeña máquina de estados, la forma habitual de organizar programas de microcontroladores.
El HC-SR04 da un pulso cuya duración es el tiempo de ida y vuelta del sonido (343 m/s):
Un eco de 1166 µs corresponde a 20 cm.

Errores frecuentes

  • Conectar un LED sin resistencia o un motor directamente a una patilla: se quema la patilla o el microcontrolador.
  • Dejar entradas al aire sin pull-up ni pull-down: leen valores aleatorios.
  • Mezclar placas de 5 V y 3,3 V sin adaptar niveles: un ESP32 se puede dañar con 5 V en una entrada.
  • Usar delay() largos cuando el programa tiene que atender varias cosas a la vez.
  • Olvidar unir las masas de la placa y de una fuente externa.

Preguntas frecuentes

Arduino es un microcontrolador: arranca al instante, controla hardware con precisión de microsegundos y consume muy poco, pero tiene poca memoria. La Raspberry Pi es un ordenador completo con Linux: sirve para tareas con red, cámara, interfaz gráfica o mucho cálculo, pero no es tan buena para el control en tiempo real. Muchos proyectos combinan las dos.
En Arduino Uno, no (tiene muy poca memoria). En placas más potentes como la Raspberry Pi Pico o el ESP32 se puede usar MicroPython, una versión reducida de Python.

Temas relacionados

Divisor de tensión

Conectar sensores resistivos.

Código de colores

Identificar las resistencias.

Controlador PID

Un PID programado en un microcontrolador.
Última modificación el 12 de octubre de 2026