Teach Lecciones con laboratorios remotos

Lección Teach

STM32 con Arduino API (3/4): potenciómetro y RGB

El alumnado lee un potenciómetro con analogRead(), transforma el valor en salida RGB y prueba colores y umbrales en la placa real.

  • STM32 Nucleo (Arduino)
  • 55 min
  • Secundaria (15–18 años)
  • Español
  • Sistemas embebidos
STM32 Nucleo (Arduino)
STM32 Nucleo (Arduino)

Resultados de aprendizaje

  • Leer una entrada analógica y convertirla a un rango útil.

  • Usar PWM para controlar el brillo de una salida RGB.

  • Usar la consola serie como evidencia de depuración.

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

Dos rangos distintos

8 min

analogRead(PC0) devuelve una lectura que trataremos como un valor entre 0 y
1023. analogWrite(PA10, brillo) espera un brillo entre 0 y 255. Por eso
usamos map: convierte un rango en otro.

Sigue el valor desde la entrada hasta la salida

Recorrido de la señal desde el potenciómetro pot1 en PC0, pasando por valores de analogRead entre 0 y 1023 y valores de map entre 0 y 255, hasta las salidas PWM RGB en PA8, PA9 y PA10.

El programa usará esta conversión:

int lectura = analogRead(POT_1);
int brillo = map(lectura, 0, 1023, 0, 255);

Con la conversión directa mostrada, ¿qué debe producir una lectura del
potenciómetro cercana al máximo?

2

Controlar brillo con una lectura analógica

29 min

Serial.begin(115200) fija la comunicación en 115200 baudios. Después de una
subida, abre la consola Serial de CodeIDE y selecciona 115200 si pide una
velocidad. Cada línea debe mostrar una lectura ADC (0-1023 cuentas) y un brillo
PWM (0-255). map(valor, entMin, entMax, salMin, salMax) coloca el valor en el
punto correspondiente entre los dos extremos de salida.

  1. Inicia el laboratorio STM32 Arduino y abre la pestaña del editor main.ino

  2. en CodeIDE.

  3. Pega el programa inicial. En el TODO 1, selecciona un pin RGB declarado. En

  4. los TODO 2 y 3, completa un mapa PWM directo para que la lectura mínima

  5. esté apagada y la máxima tenga brillo completo.

  6. Busca TODO; sustituye los tres antes de compilar. Guarda, compila, espera

  7. el éxito y después sube y espera la confirmación.

  8. Abre Serial a 115200 baudios. Si no aparecen líneas después de una subida

  9. correcta, confirma la velocidad y vuelve a abrir la consola antes de cambiar

  10. el código.

  11. Prueba inicial: mueve el potenciómetro 1 a posiciones baja, media y alta. En cada

  12. una, espera 3-5 líneas de Serial, copia una pareja aproximada de valores y

  13. observa el canal RGB elegido.

  14. Completa las tres filas y la explicación que aparece justo debajo de la tabla

  15. antes de modificar el mapa.

#include <Arduino.h>

const int POT_1 = PC0;
const int RGB_ROJO = PA8;
const int RGB_VERDE = PA9;
const int RGB_AZUL = PA10;
const int SALIDA_RGB = TODO_SALIDA_RGB;  // TODO 1: un pin RGB declarado que controlar

void setup() {
  pinMode(SALIDA_RGB, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  int lectura = analogRead(POT_1);
  int brillo = map(lectura, 0, 1023,
                   TODO_PWM_EN_MIN, TODO_PWM_EN_MAX);  // TODO 2-3: extremos del mapa directo

  analogWrite(SALIDA_RGB, brillo);

  Serial.print("pot1=");
  Serial.print(lectura);
  Serial.print(" brillo=");
  Serial.println(brillo);

  delay(200);
}

Rellena la tabla después de mover el potenciómetro y mirar Serial. Usa solo tres
filas y deja vacías las demás si Teach muestra más:

- Fila 1: potenciómetro en posición baja.
- Fila 2: potenciómetro en posición media.
- Fila 3: potenciómetro en posición alta.
- En Lectura en Serial y Brillo calculado, copia valores aproximados; no
hace falta que sean exactos.
- En Salida observada, nombra el canal RGB y describe su brillo.

Posición del potenciómetro Lectura en Serial (cuentas ADC) Brillo calculado (PWM 0-255) Salida observada ¿Tiene sentido?

Usa al menos dos filas para explicar la relación entre la lectura del potenciómetro y el brillo observado.

3

Invertir solo después de registrar la prueba inicial

8 min

Después de completar las tres filas iniciales, intercambia los dos extremos PWM
de map para invertir la conversión. No cambies SALIDA_RGB. Guarda, compila,
sube, vuelve a abrir Serial a 115200 baudios y repite solo las posiciones baja
y alta. Así comparas con claridad sin mezclar un cambio de canal con otro de
conversión.

Responde en tres líneas con este formato:

1. map modificado: ...
2. posición baja: pot1=... brillo=... | LED observado: ...
3. posición alta: pot1=... brillo=... | LED observado: ...

Después añade una frase que explique cómo las dos observaciones demuestran que
la conversión quedó invertida.

4

Entregar tu código

10 min

Entrega tu main.ino final

Guarda main.ino antes de adjuntarlo. El snapshot debe mostrar el mapa invertido
probado, la salida RGB elegida, los mensajes de Serial y ningún token TODO.

Explica por qué un valor entre 0 y 1023 no se puede usar directamente como brillo PWM si el brillo esperado va de 0 a 255.