Un proyecto completo con Arduino combina entradas, salidas y lógica de control en un solo circuito funcional que resuelve un problema real.
En las lecciones anteriores aprendiste a usar pines digitales, pines analógicos, PWM, el Monitor Serial y la función map(). Ahora vas a unir todo eso en un proyecto concreto: un sistema de alerta con sensor y LED.
El proyecto: sistema de alerta por temperatura simulada
Este sistema lee un valor de un potenciómetro (que simula un sensor de temperatura), lo convierte a una escala de 0 a 100, y enciende un LED en diferentes intensidades según el nivel de "calor". Si el valor supera 75, el LED parpadea rápido como alerta.
Materiales necesarios
| Componente | Cantidad | Precio aproximado |
|---|---|---|
| Arduino UNO | 1 | $250 |
| Potenciómetro 10 kΩ | 1 | $15 |
| LED rojo 5 mm | 1 | $3 |
| Resistor 220 Ω | 1 | $2 |
| Protoboard | 1 | $45 |
| Cables jumper | 10 | $20 |
Total estimado: menos de $335. Puedes encontrar estos componentes en tiendas como Electronilab o en Mercado Libre México.
Conexiones del circuito
Sigue este esquema de conexión:
- Potenciómetro: pin izquierdo a 5 V, pin derecho a GND, pin central a A0.
- LED: ánodo (pata larga) a través del resistor de 220 Ω al pin 9 (
~9), cátodo (pata corta) a GND.
Regla práctica: Siempre conecta el resistor en serie con el LED. Sin resistor, el LED puede quemarse en segundos.
El código completo
Copia este sketch en tu IDE de Arduino:
// Sistema de alerta con sensor y LED
// Proyecto final - Arduino y Electrónica Básica
const int PIN_SENSOR = A0;
const int PIN_LED = 9;
void setup() {
pinMode(PIN_LED, OUTPUT);
Serial.begin(9600);
Serial.println("Sistema de alerta iniciado.");
}
void loop() {
int lectura = analogRead(PIN_SENSOR);
int nivel = map(lectura, 0, 1023, 0, 100);
int brillo = map(nivel, 0, 100, 0, 255);
Serial.print("Nivel: ");
Serial.print(nivel);
Serial.println("%");
if (nivel > 75) {
// Modo alerta: parpadeo rapido
digitalWrite(PIN_LED, HIGH);
delay(100);
digitalWrite(PIN_LED, LOW);
delay(100);
Serial.println("ALERTA: nivel alto");
} else {
// Brillo proporcional al nivel
analogWrite(PIN_LED, brillo);
delay(200);
}
}
¿Qué hace cada parte?
const int: declara el número de pin como constante. Si cambias el hardware, solo modificas una línea.map(lectura, 0, 1023, 0, 100): convierte la lectura analógica a un porcentaje de 0 a 100.map(nivel, 0, 100, 0, 255): convierte ese porcentaje al rango deanalogWrite().if (nivel > 75): activa el modo alerta cuando el nivel es alto.analogWrite(PIN_LED, brillo): controla el brillo del LED con PWM cuando no hay alerta.
Salida esperada en el Monitor Serial
Cuando el potenciómetro está al mínimo:
Sistema de alerta iniciado.
Nivel: 0%
Nivel: 2%
Nivel: 3%
Cuando el potenciómetro supera el 75%:
Nivel: 78%
ALERTA: nivel alto
Nivel: 80%
ALERTA: nivel alto
El LED parpadea y el Monitor Serial imprime el mensaje de alerta. Así puedes verificar el comportamiento sin medir con un multímetro.
Errores comunes al integrar proyectos
Error 1: Usar delay() dentro del modo alerta y también fuera
Si pones delay(200) en el bloque else y delay(100) en el bloque if, el tiempo de respuesta cambia según el estado. Esto puede hacer que el sistema parezca "lento" al cambiar de modo. Solución: usa tiempos consistentes o aprende millis() en proyectos futuros.
Error 2: No declarar constantes para los pines
Escribir analogRead(A0) directamente funciona, pero si después cambias el pin, debes buscar y reemplazar cada ocurrencia. Usar const int PIN_SENSOR = A0; al inicio hace el código más fácil de mantener.
Error 3: Confundir digitalWrite() con analogWrite() en el modo alerta
En el bloque if, el parpadeo usa digitalWrite() porque queremos encendido/apagado total. Si usaras analogWrite() con valor 255, también funcionaría para encender, pero digitalWrite() es más claro para esta intención.
Error 4: Olvidar el resistor del LED Sin resistor de 220 Ω, el LED consume más corriente de la que el pin de Arduino puede manejar de forma segura (máximo 40 mA por pin). Esto puede dañar el microcontrolador de forma permanente.
Cómo documentar tu proyecto
Documentar es tan importante como construir. Un proyecto sin documentación es difícil de modificar o compartir.
Estructura de documentación recomendada
| Sección | Contenido |
|---|---|
| Descripción | Qué hace el proyecto en 2–3 oraciones |
| Materiales | Lista con cantidades y precios en $ |
| Diagrama de conexión | Imagen o tabla de pines |
| Código comentado | Cada bloque con un comentario breve |
| Resultados | Foto del circuito funcionando o captura del Serial |
| Mejoras posibles | Qué agregarías con más tiempo o recursos |
Herramientas gratuitas para documentar:
- Fritzing: crea diagramas visuales de circuitos.
- GitHub: sube tu código y documentación en Markdown.
- Google Docs o Notion: redacta la memoria técnica del proyecto.
Si construyes un portafolio de proyectos documentados, puedes mostrarlo en entrevistas de trabajo técnico. Empresas como FEMSA o Bimbo que automatizan líneas de producción valoran a candidatos que saben Arduino y pueden explicar lo que construyen.
Extensiones del proyecto
Una vez que el proyecto base funciona, puedes ampliarlo de estas formas:
Nivel 1 — Agrega un segundo LED verde: Enciende el LED verde cuando el nivel es menor de 40 y el rojo cuando supera 75. Necesitas un pin PWM adicional y otro resistor de 220 Ω.
Nivel 2 — Reemplaza el potenciómetro por un sensor real:
El sensor de temperatura LM35 entrega un voltaje proporcional a la temperatura. Su salida se conecta igual que el potenciómetro a A0. El rango de map() cambia según la escala del sensor.
Nivel 3 — Agrega un buzzer:
Conecta un buzzer pasivo al pin 8. Usa tone(8, 1000) para activar una alarma sonora cuando el nivel supera 75. Esto hace el sistema más parecido a los paneles de control industriales.
Lo que aprendiste en este curso
A lo largo de estas 8 lecciones cubriste los fundamentos completos para trabajar con Arduino:
- Lección 1–2: qué es Arduino y cómo funciona el IDE.
- Lección 3:
digitalWrite()ypinMode()para controlar salidas digitales. - Lección 4:
digitalRead()para leer botones e interruptores. - Lección 5:
delay()y el flujo de tiempo en el sketch. - Lección 6: el Monitor Serial para depurar y mostrar datos.
- Lección 7:
analogRead(),analogWrite()y PWM para señales variables. - Lección 8: integración de todo en un proyecto completo con buenas prácticas.
Próximos pasos recomendados
Ahora que tienes una base sólida, estos son los temas que te conviene explorar a continuación:
millis(): controla el tiempo sin bloquear el programa condelay().- Comunicación I2C y SPI: conecta pantallas LCD, sensores de humedad y módulos de reloj.
- Módulos de comunicación: Bluetooth (HC-05) y Wi-Fi (ESP8266) para proyectos conectados.
- Librerías de Arduino: aprende a instalar y usar librerías para sensores específicos.
- PCB básico: diseña tu propio circuito impreso con KiCad (software gratuito).
El costo de seguir aprendiendo es bajo. Un kit de sensores básico en Mercado Libre México cuesta entre $150 y $400 y te da materiales para docenas de proyectos.
Resumen del proyecto
Este proyecto de alerta con sensor y LED demuestra los cuatro pilares de cualquier sistema embebido: entrada (potenciómetro), procesamiento (lógica if/else y map()), salida (LED con PWM) y retroalimentación (Monitor Serial). Dominar estos cuatro pilares es suficiente para construir sistemas reales de monitoreo, automatización y control.