Teach Lecciones con laboratorios remotos

Lección Teach

STM32 con Arduino API (2/4): secuencia y botones

El alumnado amplía un sketch Arduino para STM32 con varios LEDs y entrada de botón, y explica cómo el ritmo y el botón afectan la salida.

  • STM32 Nucleo (Arduino)
  • 55 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

  • Crear una secuencia de salidas usando una lista de pines.

  • Leer un botón activo en LOW y usarlo para cambiar el comportamiento.

  • Registrar dos estados de prueba y explicar la decisión del programa.

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

Un botón activo en LOW

8 min

En este montaje, el botón que usaremos está conectado al pin PC5. Es un botón
activo en LOW: cuando está pulsado, digitalRead(PC5) devuelve LOW; cuando
no está pulsado, devuelve HIGH.

Si el botón está pulsado y el programa ejecuta digitalRead(BOTON_1), ¿qué valor debe comparar: HIGH o LOW?

2

Secuencia con modo rápido

27 min

El programa usa tres salidas RGB de la placa. Primero las prepara en setup().
Después, en loop(), decide el tiempo de espera según el estado del botón.

Vista de montaje del laboratorio STM32 Nucleo WB55RG con placa, entradas y salidas disponibles.

Vista de montaje del laboratorio. En esta sesión no cambias cables: solo usas
pines ya disponibles desde el programa.

  1. Abre el mismo laboratorio STM32 Arduino de la sesión anterior.

  2. Abre main.ino y copia el programa de referencia.

  3. Compila y sube el programa.

  4. Observa la secuencia sin pulsar el botón.

  5. Pulsa el botón 1 en la interfaz del laboratorio y observa de nuevo.

  6. Cambia el valor rápido de 150 ms a otro valor visible, compila, sube y prueba.

#include <Arduino.h>

const int LEDS[] = {PA8, PA9, PA10};
const int TOTAL_LEDS = 3;
const int BOTON_1 = PC5;  // Activo en LOW: pulsado == LOW

void apagarTodos() {
  for (int i = 0; i < TOTAL_LEDS; i++) {
    analogWrite(LEDS[i], 0);
  }
}

void setup() {
  pinMode(BOTON_1, INPUT);
  for (int i = 0; i < TOTAL_LEDS; i++) {
    pinMode(LEDS[i], OUTPUT);
  }
}

void loop() {
  bool pulsado = digitalRead(BOTON_1) == LOW;
  int espera = pulsado ? 150 : 500;

  for (int i = 0; i < TOTAL_LEDS; i++) {
    apagarTodos();
    analogWrite(LEDS[i], 180);
    delay(espera);
  }
}

Rellena la tabla después de subir el programa y probar el botón. Usa solo dos
filas y deja vacías las demás si Teach muestra más:

- Fila 1: botón sin pulsar.
- Fila 2: botón pulsado.
- En Valor esperado de digitalRead, escribe HIGH o LOW según la lógica
activa en LOW.
- En Espera usada, anota el valor que aplica el programa en ese caso.
- En Explicación breve, conecta el estado del botón con la velocidad
observada.

Estado del botón Valor esperado de digitalRead Espera usada Secuencia observada Explicación breve

Explica cómo sabes que el botón cambió el comportamiento del programa. Usa tus dos filas como evidencia.

3

Modificar una regla

10 min

Elige una modificación pequeña:

- Cambiar la velocidad del modo rápido.
- Cambiar la velocidad del modo normal.
- Encender dos colores a la vez en una parte de la secuencia.
- Invertir la lógica para que el botón haga la secuencia más lenta.

¿Qué modificación hiciste? ¿Qué línea cambiaste y qué observaste después de compilar y subir?

4

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 con la lectura del botón y la secuencia modificada que quieres que revise tu profesor.

¿Por qué un botón activo en LOW puede confundir al principio? Escribe una regla corta que te ayudaría a no equivocarte.