Teach Lecciones con laboratorios remotos

Lección Teach

STM32 con Arduino API (4/4): mini-controlador

El alumnado combina potenciómetro, decisiones, salida RGB/LED y evidencia serie para construir un mini-controlador STM32 con API Arduino.

  • STM32 Nucleo (Arduino)
  • 60 min
  • 4 ESO / Bachillerato inicial / FP básica
  • es
  • Tecnología y Digitalización / Electrónica
STM32 Nucleo (Arduino)
STM32 Nucleo (Arduino)

Resultados de aprendizaje

  • Diseñar un mini-controlador con entrada, decisión, salida y modo manual.

  • Elegir y justificar un umbral usando lecturas reales.

  • Probar dos ramas de una decisión y comunicar el resultado.

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.

1

Entender el reto y diseñar pruebas

10 min

Tu mini-controlador tendrá tres estados:

- Potenciómetro por debajo del umbral: color verde.
- Potenciómetro por encima del umbral: color rojo.
- Botón pulsado: color azul, aunque el potenciómetro indique otra cosa.

El reto no es solo copiar el programa. Al final debes tener un mini-controlador
probado: lee una entrada, decide un estado, cambia el RGB, escribe evidencia por
Serial y conserva una mejora pequeña que puedas defender.

Antes de programar, piensa como si fueras a probar un producto pequeño. Una
buena prueba debe decir qué vas a tocar, qué color esperas ver y qué dato de
Serial confirmaría que el controlador tomó la decisión correcta.

Escribe dos pruebas que deberían demostrar que el mini-controlador funciona. En cada prueba incluye: entrada que vas a usar, salida RGB esperada y dato de Serial que debería confirmarla. Una prueba debe usar el botón 1 pulsado y otra debe cambiar el potenciómetro respecto al umbral.

2

Construir y comprobar el mini-controlador

27 min

La función setRgb evita repetir tres líneas cada vez que quieras cambiar de
color. El umbral inicial es 600, pero tendrás que comprobar si tiene sentido
con tus lecturas reales.

Vas a copiar un programa base, probarlo y ajustarlo. El resultado final debe ser
un controlador pequeño pero completo: lee POT_1, decide con UMBRAL, permite
modo manual con BOTON_1, cambia el RGB y escribe por Serial qué estado eligió.

Detalle del esquema STM32 Nucleo WB55RG para el reto: POT1 en PC0, B1 en PC5 y RGB en PA8, PA9 y PA10.

Detalle legible del esquema para este reto: POT_1 llega a PC0, B1 llega a
PC5 y el LED RGB usa PA8, PA9 y PA10. No necesitas modificar el
montaje; úsalo para entender que el programa conecta entradas, decisión y
salidas ya existentes.

Esquema completo STM32 Nucleo WB55RG

Descarga el esquema completo en PDF si necesitas ampliar una conexión que no
aparece en el recorte.

Esquema completo STM32 Nucleo WB55RG (PDF)
  1. Abre el laboratorio STM32 Arduino y main.ino.

  2. Copia el programa de referencia.

  3. Compila y sube.

  4. Prueba el potenciómetro por debajo y por encima del umbral.

  5. Pulsa el botón 1 y comprueba si el modo manual domina sobre el potenciómetro.

  6. Ajusta UMBRAL a un valor que tenga sentido con las lecturas que ves por Serial.

  7. Compila, sube de nuevo y repite tus dos pruebas principales.

#include <Arduino.h>

const int POT_1 = PC0;
const int BOTON_1 = PC5;  // Activo en LOW
const int RGB_ROJO = PA8;
const int RGB_VERDE = PA9;
const int RGB_AZUL = PA10;

const int UMBRAL = 600;

void setRgb(int rojo, int verde, int azul) {
  analogWrite(RGB_ROJO, rojo);
  analogWrite(RGB_VERDE, verde);
  analogWrite(RGB_AZUL, azul);
}

void setup() {
  pinMode(BOTON_1, INPUT);
  pinMode(RGB_ROJO, OUTPUT);
  pinMode(RGB_VERDE, OUTPUT);
  pinMode(RGB_AZUL, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  int lectura = analogRead(POT_1);
  bool botonPulsado = digitalRead(BOTON_1) == LOW;
  const char* estado;

  if (botonPulsado) {
    setRgb(0, 0, 255);
    estado = "manual";
  } else if (lectura >= UMBRAL) {
    setRgb(255, 0, 0);
    estado = "rojo";
  } else {
    setRgb(0, 180, 0);
    estado = "verde";
  }

  Serial.print("estado=");
  Serial.print(estado);
  Serial.print(" pot1=");
  Serial.print(lectura);
  Serial.print(" boton=");
  Serial.println(botonPulsado ? "pulsado" : "suelto");

  delay(100);
}

Rellena la tabla después de probar el controlador. Cada fila debe conectar una
entrada con una decisión y una evidencia. Usa al menos tres filas y deja vacías
las demás si Teach muestra más:

- Fila 1: potenciómetro bajo el umbral.
- Fila 2: potenciómetro sobre el umbral.
- Fila 3: botón 1 pulsado para comprobar el modo manual.
- En Valores vistos por Serial, copia estado, pot1 y boton de forma
aproximada.
- Si modificas UMBRAL, escribe el valor final que usaste.

Prueba Valores vistos por Serial Umbral usado Salida esperada Salida observada Veredicto

¿Mantendrías el umbral 600 o lo cambiarías? Justifica la decisión con al menos una lectura baja y una lectura alta vistas por Serial, y explica por qué tu umbral separa bien los dos casos.

3

Mejorar una cosa

10 min

Elige una mejora pequeña:

- Cambiar el umbral.
- Cambiar los colores o el brillo.
- Hacer que el modo manual parpadee en azul.
- Añadir una línea de Serial que explique el estado (verde, rojo o manual).

¿Qué mejora aplicaste al mini-controlador? Escribe qué cambiaste en el código y qué evidencia muestra que no rompió las dos pruebas principales: potenciómetro respecto al umbral y botón 1 en modo manual.

4

Presentar el controlador

13 min

Entrega tu main.ino final

Guarda main.ino antes de adjuntarlo. El snapshot debe mostrar el mini-controlador final, con el umbral, la salida de Serial y la mejora que probaste.

Presenta tu mini-controlador en 6-8 líneas. Debe quedar claro qué problema resuelve, qué entrada lee, qué decisión toma, qué salida observable produce, qué pruebas realizaste, qué mejora aplicaste y qué limitación tendría todavía en una situación real.