Lección Teach
STM32 Mbed CodeIDE (1/8): primer parpadeo
El alumnado usa STM32 Mbed CodeIDE para editar main.cpp, compilar y subir un programa DigitalOut de parpadeo, y registrar evidencia del LED en la placa real.
Resultados de aprendizaje
Reconocer el flujo de trabajo de STM32 Mbed CodeIDE y el archivo de entrada
main.cpp.Escribir un programa Mbed mínimo con
DigitalOutyThisThread::sleep_for().Recoger evidencias de que el código compiló, se cargó y cambió una salida real.
Vista previa de la actividad del estudiante
Contenido de la actividad
Solo vista previa. En una sesión de clase, los estudiantes pueden completar respuestas y entregar su trabajo al docente.
Antes de abrir el laboratorio
8 min
Mbed OS da a tu programa de C++ un conjunto de API preparadas para trabajar con microcontroladores: pines digitales, entradas analógicas, salidas PWM, temporización, hilos y mensajes serie. En este laboratorio, CodeIDE proporciona ese entorno Mbed para la placa STM32 remota. Tu programa vive en main.cpp, incluye mbed.h, empieza en int main() y controla hardware creando objetos de Mbed.
Por ejemplo, DigitalOut status_led(PB_5, 0); crea un objeto de salida llamado status_led conectado al pin STM32 PB_5. En lecciones posteriores usarás otros objetos de Mbed como DigitalIn, AnalogIn y PwmOut.
Puedes completar el curso con las explicaciones de esta actividad. Si quieres tener cerca la referencia oficial mientras trabajas, abre estas páginas:
- API de entrada/salida de Mbed OS
- Referencia de la API de Mbed CE
Qué muestra el laboratorio STM32 Mbed CodeIDE
Usa el botón Abrir laboratorio de la actividad para abrir este laboratorio STM32 Mbed CodeIDE. En esta primera lección, ignora los interruptores, botones, potenciómetros, la caja de entrada de consola serie de la vista del laboratorio y el medidor de potencia. Solo necesitas CodeIDE y la cámara en directo. En CodeIDE, usa la consola inferior de compilación/estado solo para comprobar mensajes de compilación y carga; la evidencia del parpadeo viene de la cámara en directo.
Mapa rápido de CodeIDE
Después de abrir el laboratorio, usa el panel Files para abrir main.cpp, el editor para reemplazar y guardar código, Compile para compilar, Upload to board para programar la placa STM32 remota y la zona de consola para leer mensajes de compilación o carga. Guarda main.cpp cada vez que cambies el código, antes de compilar.
La idea inicial es un parpadeo: encender una salida, esperar, apagarla, esperar y repetir.
En Mbed primero creas un objeto conectado a un pin:
DigitalOut status_led(PB_5, 0);
Lee esa línea así: "crea una salida digital llamada status_led en el pin PB_5 y empieza con valor 0".
La placa que vas a programar es la STM32 Nucleo WB55RG.
Placa STM32 Nucleo WB55RG
Esta foto muestra la placa del microcontrolador. Sirve para orientarte, no para identificar el LED exacto a partir de una imagen fija. El laboratorio remoto en directo puede mostrar también controles o hardware de entrenamiento separados, que no aparecen en esta foto. No conectas nada a tu ordenador; CodeIDE envía el programa compilado a la placa remota.
Dentro de while (true), el programa se repite para siempre:
status_led = !status_led.read();
ThisThread::sleep_for(500ms);
Lee la primera línea así: "lee el valor actual, cámbialo al valor opuesto y guarda ese nuevo valor en la salida". El operador ! significa "no" u "opuesto" para un valor 0/1.
Un cambio de estado es una transición, por ejemplo de encendido a apagado o de apagado a encendido. Un ciclo completo de parpadeo encendido-apagado necesita dos cambios de estado: uno para encender y otro para volver a apagar.
Para el programa de 500 ms: ¿cuál es el intervalo entre cambios de estado en milisegundos, cuántos cambios de estado ocurren por segundo y cuánto dura un ciclo completo de parpadeo? Recuerda: un ciclo completo necesita dos cambios de estado.
Crear y probar el parpadeo
26 min
Al copiar este programa, copia todas las líneas desde #include "mbed.h" hasta la última }. Si usas un PDF impreso o exportado, comprueba que el bloque de código no continúa en la página siguiente antes de compilar.
#include "mbed.h"
DigitalOut status_led(PB_5, 0);
int main() {
while (true) {
status_led = !status_led.read();
ThisThread::sleep_for(500ms);
}
}
Antes de cambiar el tiempo de espera, predice qué pasará. Usa tu respuesta sobre el tiempo entre cambios de estado para decidir si 1000ms debería hacer que el LED cambie más rápido, más lento o casi igual.
Antes de probarlo, predice qué cambiará al usar 1000ms en lugar de 500ms. ¿El LED cambiará más rápido, más lento o casi igual? Explica tu respuesta usando el tiempo de espera entre cambios de estado.
Cómo encontrar el LED que cambia: después de cargar el programa, compara la vista de la cámara antes y después de que empiece a ejecutarse. Ignora los LED que permanecen siempre encendidos o apagados, y los destellos breves de carga/estado. Usa el LED que sigue cambiando con el tiempo programado; cuando pases de 500ms a 1000ms, el mismo LED debería seguir cambiando con el nuevo ritmo.
La tarjeta del laboratorio tiene un botón Marcar práctica como completada. No lo pulses todavía; úsalo solo después de completar todos los pasos numerados, incluida la nueva prueba con 1000ms.
Abre el laboratorio STM32 Mbed CodeIDE desde el botón Abrir laboratorio de esta actividad.
En CodeIDE, abre
main.cpp.Reemplaza el contenido del archivo con el programa anterior.
Guarda el archivo.
Compila. Si aparece un error, revisa la ortografía, las llaves
{}, los paréntesis()y los puntos y coma que falten.Antes de pulsar Upload, mira una vez la cámara en directo y elige la zona de la placa que vas a observar.
Carga el programa en la placa. Espera a que la zona de consola/estado indique que la carga/programación terminó.
Observa la misma zona de la cámara y busca el LED que cambia repetidamente con el tiempo programado. Ignora LED de alimentación/estado siempre encendidos y destellos breves de carga/estado. Registra al menos cinco cambios de estado del LED repetitivo; por ejemplo, apagado-a-encendido cuenta como un cambio.
Cambia
500mspor1000ms, guardamain.cpp, compila, carga y observa de nuevo la misma zona del LED.Solo después de completar el paso 9, pulsa Marcar práctica como completada.
Registra las dos observaciones en las cajas siguientes. Para medir el tiempo, mide cinco intervalos: empieza a cronometrar en una transición visible, detente en la sexta transición visible y divide entre 5 para estimar un intervalo de cambio de estado.
Para 500ms, responde con esta lista:
- Transiciones 1-5 observadas:
- Duración medida para 5 intervalos:
- Intervalo estimado de cambio de estado:
- Ciclo completo de parpadeo:
- ¿Coincidió con tu predicción? sí/no
Para 1000ms, responde con esta lista:
- Transiciones 1-5 observadas:
- Duración medida para 5 intervalos:
- Intervalo estimado de cambio de estado:
- Comparado con 500ms: más rápido/más lento/igual
- ¿Coincidió con tu predicción? sí/no
- ¿Necesitaste solucionar algún problema? sí/no. Si sí, ¿qué cambió?
Si tu predicción era incorrecta, añade la explicación corregida.
Escribe una nota de evidencia de placa real. Incluye cuatro detalles: si la compilación/carga terminó, dónde apareció el LED cambiante en la vista de la cámara, qué cambió en la cámara y en qué se veía diferente la versión de 1000 ms respecto a la de 500 ms. Ejemplo: "La compilación terminó, la carga/programación terminó y el LED cerca del lado izquierdo de la zona de la placa cambió de estado más lentamente cuando cambié 500ms por 1000ms."
Entender la estructura de Mbed
8 min
La mayoría de los programas de este curso siguen la misma estructura Mbed OS: incluir mbed.h, crear objetos de hardware como DigitalOut, empezar en int main() y poner el comportamiento repetido del controlador dentro de while (true).
Con tus propias palabras, ¿qué hace while (true) en este programa de parpadeo? ¿Por qué es necesario?
Enviar tu código
8 min
Antes de enviar, deja guardada en main.cpp la versión final con 1000ms. Esa es la versión que adjuntarás desde el espacio de trabajo del laboratorio.
Adjunta tu main.cpp final guardado
Pulsa Comprobar archivos guardados, confirma que main.cpp contiene el programa final de parpadeo con 1000ms y luego pulsa Adjuntar código guardado. Después de adjuntar el código, pulsa Enviar entrega al final de la actividad. El adjunto requerido para esta lección es la captura de código guardado de main.cpp.