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.
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.
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.
El programa usará esta conversión:
int lectura = analogRead(POT_1);
int brillo = map(lectura, 0, 1023, 0, 255);Según ese fragmento, si el potenciómetro está cerca del máximo, ¿esperas un brillo bajo, medio o alto?
Controlar brillo con una lectura analógica
29 min
Abre el laboratorio STM32 Arduino y
main.ino.Copia el programa de referencia.
Compila y sube.
Mueve el potenciómetro 1 a tres posiciones: baja, media y alta.
Observa el brillo del canal azul y la consola serie.
Cambia el canal de salida de
RGB_AZULaRGB_VERDEo invierte el mapa.Compila, sube y comprueba que el cambio se nota.
#include <Arduino.h>
const int POT_1 = PC0;
const int RGB_ROJO = PA8;
const int RGB_VERDE = PA9;
const int RGB_AZUL = PA10;
void setup() {
pinMode(RGB_AZUL, OUTPUT);
Serial.begin(115200);
}
void loop() {
int lectura = analogRead(POT_1);
int brillo = map(lectura, 0, 1023, 0, 255);
analogWrite(RGB_AZUL, 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, describe el brillo o color que viste en la placa.
| Posición del potenciómetro | Lectura en Serial | Brillo calculado | Salida observada | ¿Tiene sentido? |
|---|---|---|---|---|
Usa al menos dos filas para explicar la relación entre la lectura del potenciómetro y el brillo observado.
Cambiar la conversión
8 min
Elige una de estas modificaciones:
- Cambia la salida a RGB_VERDE.
- Invierte el mapa: map(lectura, 0, 1023, 255, 0).
- Enciende dos canales a la vez con brillos distintos.
¿Qué modificación elegiste? Copia la línea principal que cambiaste y describe qué evidencia muestra que funcionó.
Entregar tu código
10 min
Entrega tu main.ino final
Guarda main.ino antes de adjuntarlo. El snapshot debe mostrar la versión final que lee el potenciómetro, calcula el brillo y escribe valores por Serial.
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.