P2: Controla el LED RGB desde el ordenador
Categorías:
Etiquetas:
Controla el LED RGB desde el ordenador
Qué vas a repasar en este proyecto
En este proyecto combinaremos lo aprendido en las tres lecciones anteriores:
- Control de los canales rojo, verde y azul de un LED RGB.
- Recepción y envío de texto por el puerto COM.
- Uso de una variable para guardar un mensaje.
- Uso de condiciones para decidir qué hacer según la orden recibida.
Requisitos previos
Este proyecto pone en práctica los conceptos aprendidos en L4: LED de intensidad variable, L5: El LED RGB, L6: El puerto serie y L7: El pulsador.
Enunciado
Construye un programa que permita controlar el color del LED RGB desde el ordenador. En el monitor COM podrás escribir estas órdenes:
| Orden | Qué debe hacer la placa |
|---|---|
rojo | Encender el LED en rojo. |
verde | Encender el LED en verde. |
azul | Encender el LED en azul. |
El LED comenzará apagado y mantendrá el color elegido hasta que llegue otra orden válida. Cada vez que cambie de color, la placa enviará una confirmación, por ejemplo: Color cambiado a rojo.
Si recibe una orden desconocida, conservará el color y responderá: Orden desconocida. Usa: rojo, verde o azul.
Antes de empezar
En L6 hicimos un programa de eco: la placa devolvía el texto recibido. Ahora ese texto será una orden que provoca una acción física.
Piensa en el recorrido de una orden: escribes rojo en el ordenador, la placa guarda el texto en una variable, comprueba qué palabra has enviado, cambia el LED y responde por COM.
Prepara una tabla con cada orden, los valores R, G y B que necesita y el mensaje de confirmación. Decide también qué debe ocurrir si escribes una palabra como hola.
Pistas
Consulta estas pistas solo si te hace falta. ¡Primero inténtalo sin mirar!
Ver pistas
- Configura el puerto COM a 115200 bps: el monitor COM funciona siempre a esa velocidad.
- Conserva el montaje de L5: GPIO4 para rojo, GPIO16 para verde y GPIO17 para azul.
- Crea una variable llamada Mensaje con valor inicial "" (texto vacío).
- Comprueba si hay datos disponibles antes de leer. Lee el texto una sola vez y guárdalo en Mensaje.
- Usa el bloque de comparación = de Lógica para comprobar si Mensaje es igual al texto
rojo,verdeoazul. - Amplía un bloque si con dos ramas si no, si y una rama final si no para la orden desconocida.
- Para cada color, pon su canal a 100 y los otros dos a 0.
- Escribe las órdenes en minúsculas, sin comillas ni espacios al principio o al final.
- No necesitas esperas: si no hay una nueva orden, no cambies el LED.
Solución
Consulta la solución solo si ya has intentado resolver el proyecto. Comprueba que tu programa reconoce las tres órdenes y conserva el color cuando no recibe una orden válida.
Ver solución
Materiales
- Placa de desarrollo ESP32.
- Placa de expansión BatSTEM.
- Cable de conexión USB.
- Placa de prototipos.
- LED RGB de 4 patas y cátodo común.
- 3 resistencias de 100 Ohm.
- Cables de conexión.
- Ordenador con acceso a BatSTEM Cloud.
Montaje
Usa el mismo montaje de L5: El LED RGB:
- Conecta GND de la placa de expansión a la línea azul de la placa de prototipos.
- Coloca el LED RGB con cada pata en una línea diferente.
- Conecta la pata común a GND.
- Conecta el canal rojo a GPIO4 mediante una resistencia de 100 Ohm.
- Conecta el canal verde a GPIO16 mediante otra resistencia de 100 Ohm.
- Conecta el canal azul a GPIO17 mediante otra resistencia de 100 Ohm.
- Conecta la placa al ordenador.
Programa
En el bloque configuración:
- Configura el puerto COM a 115200 bps.
- Crea un LED RGB llamado MiLEDRGB y asigna GPIO4 a R, GPIO16 a G y GPIO17 a B.
- Crea la variable Mensaje con valor inicial "".
- Pon los tres canales del LED a 0 para que comience apagado.
En el bucle principal:
- Añade un bloque si con la condición hay datos disponibles en el puerto COM.
- Dentro, pon Mensaje al valor de leer texto del puerto COM.
- A continuación, añade otro bloque si. Usa su engranaje para añadir dos ramas si no, si y una rama si no.
- Compara Mensaje con
rojo,verdeyazulen las tres condiciones. En cada rama, cambia los tres canales del LED y escribe la confirmación correspondiente, con salto de línea. - En la rama final si no, escribe
Orden desconocida. Usa: rojo, verde o azul. No cambies el LED en esa rama.

| Condición | R | G | B | Respuesta por COM |
|---|---|---|---|---|
Mensaje = rojo | 100 | 0 | 0 | Color cambiado a rojo |
Mensaje = verde | 0 | 100 | 0 | Color cambiado a verde |
Mensaje = azul | 0 | 0 | 100 | Color cambiado a azul |
| Cualquier otra orden | Sin cambios | Sin cambios | Sin cambios | Orden desconocida. Usa: rojo, verde o azul |
La comparación = pregunta si dos valores son iguales; no cambia la variable. El bloque poner Mensaje a…, en cambio, guarda un nuevo valor. Las ramas si / si no, si / si no permiten ejecutar únicamente la respuesta correspondiente a la orden recibida.
Todo el procesamiento del mensaje debe quedar dentro de si hay datos disponibles. Así, la placa responde una vez por orden y no llena continuamente el monitor con el mismo mensaje.
Comprueba el resultado
- Ejecuta el sketch y abre Mon. COM. El LED debe comenzar apagado.
- Escribe
rojoy envíalo: el LED debe ponerse rojo y aparecerColor cambiado a rojo. - Espera unos segundos sin enviar nada: el color debe mantenerse y no deben aparecer nuevas respuestas.
- Envía
verdey despuésazul. Comprueba el color y la confirmación en cada caso. - Envía
hola: debe aparecer la ayuda con los comandos válidos y el LED debe seguir azul. - Envía
rojode nuevo para comprobar que el programa sigue aceptando órdenes después de una desconocida.
El monitor COM añade automáticamente un salto de línea al enviar. El bloque de lectura lee hasta ese salto y devuelve el texto sin incluirlo. Escribe solo la palabra: rojo, verde o azul. En este programa, Rojo y rojo son órdenes distintas.
Retos opcionales
- Añade la orden
apagarpara poner los tres canales a 0. - Añade
amarillo,cianymagentamezclando dos canales, como en L5. - Añade
rojo suavepara poner R a 20, G a 0 y B a 0. Compara su intensidad con la ordenrojo. - Añade una orden
ayudaque muestre los comandos disponibles sin cambiar el color. - Amplía las confirmaciones para que también indiquen los valores R, G y B utilizados.
Recuerda ampliar el mensaje de comandos válidos cuando añadas nuevas órdenes.
Resumen del proyecto
- Hemos enviado órdenes desde el ordenador para controlar un componente físico.
- Hemos guardado el texto recibido en una variable y lo hemos comparado con varias palabras.
- Hemos usado condiciones para seleccionar el color de un LED RGB.
- Hemos confirmado las acciones y respondido a órdenes desconocidas por el monitor COM.
- Hemos mantenido el estado del LED hasta recibir una nueva orden válida.