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.
¿Primera vez en LabsLand? Crea tu cuenta de docente
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.
Sigue el valor desde la entrada hasta la salida
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?
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.
Inicia el laboratorio STM32 Arduino y abre la pestaña del editor
main.inoen CodeIDE.
Pega el programa inicial. En el TODO 1, selecciona un pin RGB declarado. En
los TODO 2 y 3, completa un mapa PWM directo para que la lectura mínima
esté apagada y la máxima tenga brillo completo.
Busca
TODO; sustituye los tres antes de compilar. Guarda, compila, esperael éxito y después sube y espera la confirmación.
Abre Serial a
115200 baudios. Si no aparecen líneas después de una subidacorrecta, confirma la velocidad y vuelve a abrir la consola antes de cambiar
el código.
Prueba inicial: mueve el potenciómetro 1 a posiciones baja, media y alta. En cada
una, espera 3-5 líneas de Serial, copia una pareja aproximada de valores y
observa el canal RGB elegido.
Completa las tres filas y la explicación que aparece justo debajo de la tabla
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.
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.
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.