micro:bit

Prácticas avanzadas — MakeCode

Sesión de ampliación para alumnado con mayor capacidad en programación con bloques. Conceptos de variables, lógica, funciones, radio y sensores avanzados.

Nivel avanzado 50 min 3 prácticas + reto 1º ESO · Tecnología y Digitalización
Distribución temporal de la sesión (50 min)
INTRO 5'
PRÁCTICA 1 — 10'
PRÁCTICA 2 — 12'
PRÁCTICA 3 — 15'
RETO 13'
CIERRE 5'
// 01
Práctica 1 · Variables y lógica
P1 Contador de eventos con pantalla dinámica ≈ 10 min
Variables Condicionales Botones A/B
Objetivo: Usar variables numéricas para almacenar y mostrar información que cambia según la interacción del usuario. Introducir la lógica condicional con si / si no.

Pasos

  • 01Crear una variable llamada contador con valor inicial 0 (bloque al iniciar).
  • 02Al pulsar botón A: incrementar contador en 1 y mostrar el valor en la pantalla LED.
  • 03Al pulsar botón B: decrementar contador en 1, pero solo si el contador es mayor que 0 (bloque si). Si el contador llega a 0, mostrar una carita triste.
  • 04Al pulsar A+B simultáneamente: reiniciar el contador a 0 y mostrar el icono de corazón durante 1 segundo.
  • 05Extensión: Añadir una condición extra — si el contador supera 9, mostrar la cadena de texto "MAX" en lugar del número.
al iniciar contador = 0 al pulsar botón A contador += 1 mostrar número(contador) al pulsar botón B si contador > 0 entonces contador -= 1 mostrar número(contador) si no mostrar icono(cara triste) al pulsar A+B contador = 0 mostrar icono(corazón) · pausa(1000ms) limpiar pantalla
// 02
Práctica 2 · Sensores avanzados
P2 Termómetro visual con niveles de alerta ≈ 12 min
Sensor temperatura Bucles Variables
Objetivo: Leer el sensor de temperatura interno, mapear el valor a una escala visual de 0–5 píxeles en la columna central de LEDs y añadir alertas por umbrales con sonido.
  • 01En el bloque para siempre, leer la variable predefinida temperatura (°C) y guardarla en una variable temp.
  • 02Limpiar la pantalla y trazar una "barra vertical" encendiendo LEDs en la columna 2 (centro). Usar el bloque trazar (x, y) dentro de un bucle para de 0 a 4.
  • 03Usar la función asignar en rango (map) para convertir el rango de temperatura típico (15°C–40°C) al rango 0–4 de filas LED.
  • 04Si la temperatura supera 28°C, reproducir el tono Mi (329 Hz) durante 200 ms y parpadear la fila superior.
  • 05Extensión: Al pulsar A, mostrar el valor numérico exacto de la temperatura. Al soltar el botón, volver a la vista de barra.
para siempre temp = temperatura (°C) nivel = asignar en rango(temp, 15, 40, 0, 4) limpiar pantalla para i = 0 hasta nivel trazar(x=2, y=4-i) // barra desde abajo si temp > 28 entonces reproducir tono(Mi, 200ms) parpadear fila(0) pausa(500ms)
// 03
Práctica 3 · Funciones y radio
P3 Comunicación por radio: piedra, papel o tijera ≈ 15 min
Radio Funciones Lógica compleja
Objetivo: Crear funciones propias reutilizables, enviar y recibir datos numéricos por radio entre dos micro:bit y aplicar lógica de comparación para determinar el ganador.
  • 01Configurar el grupo de radio (mismo número en ambas placas, p.ej. 42). Usar variables miElección y suElección (0=piedra, 1=papel, 2=tijera).
  • 02Crear la función mostrarElección(valor) que, según el número recibido, muestre un icono: ✊ piedra, ✋ papel o ✌ tijera en la pantalla LED usando bloques de si / si no si / si no.
  • 03Al sacudir el micro:bit (al sacudir): generar un número aleatorio 0–2, guardarlo en miElección, enviarlo por radio con enviar número y llamar a la función para mostrarlo.
  • 04Al recibir número por radio: guardar en suElección y llamar a la función auxiliar determinarGanador().
  • 05Crear la función determinarGanador() con la lógica completa: si miElección = suElección → empate (icono indeterminado), si no, evaluar las 6 combinaciones de victoria y mostrar "WIN" o "LOSE".
  • 06Extensión: Añadir un marcador de victorias con la variable puntuación. Al pulsar A, mostrar la puntuación acumulada.
al iniciar radio.establecer grupo(42) miElección = -1 suElección = -1 función mostrarElección(val) si val = 0mostrar icono(✊) si no si val = 1mostrar icono(✋) si nomostrar icono(✌) al sacudir miElección = número aleatorio(0, 2) radio.enviar número(miElección) mostrarElección(miElección) al recibir número receivedNumber suElección = receivedNumber si suElección ≠ -1 y miElección ≠ -1 determinarGanador()
// RETO
Reto integrador
⚡ Reto final · 13 min
Sistema de votación en tiempo real

Combinar radio, variables y lógica para construir un sistema de votación entre dos micro:bit. Una actúa de "emisor de voto" (botones A/B) y otra de "receptor/contador" que acumula los resultados y los muestra.

Nivel 1 · base

El emisor envía 1 ó 2 al pulsar A o B. El receptor suma los votos en dos variables y muestra cuál lleva más con un icono.

Nivel 2 · ampliación

El receptor muestra en tiempo real la diferencia de votos como barra LED horizontal. Añade un botón de reset (A+B).

Nivel 3 · experto

Invertir el sistema: tres micro:bit votando, una recibiendo. El receptor usa funciones propias para calcular el porcentaje y enviar feedback de vuelta a cada votante.

// INFO
Consejos para el docente
🔧

Usar el simulador de MakeCode para la práctica 3 antes de tener dos placas físicas. Acepta radio entre dos simuladores en la misma pestaña.

🔀

Las prácticas son independientes. Si un alumno termina antes, puede encadenarlas: añadir temperatura a la pantalla del receptor de votos.

📋

Pedir al alumnado que guarde el enlace del proyecto con "Compartir" antes de cerrar el navegador. Facilita la evaluación posterior.

💡

El bloque asignar en rango está en Matemáticas → Avanzado. Mostrar su ubicación en los primeros 2 minutos de la práctica 2.

🧩

Para las funciones propias (práctica 3), ir a Avanzado → Funciones → Crear función. Muchos alumnos no han encontrado esa sección aún.

🎯

El reto tiene tres niveles para que nadie se quede sin avanzar. Animar a los del nivel 1 a intentar el 2 si les sobra tiempo.