La Palla Calda Radioattiva
Obiettivo: Creare un gioco multiplayer utilizzando la radio del Micro:bit. Gli studenti impareranno a trasmettere variabili tra dispositivi e a gestire lo "stato" di un programma (Attivo/Inattivo).
Concetti Chiave:
- Comunicazione Radio (Gruppi e Canali).
- Variabili booleane/di stato (Ho la palla? Sì/No).
- Algoritmo di passaggio dati.
Materiali:
- Almeno 2 Micro:bit (ideale uno per studente o coppia).
- Battery pack (fondamentale per muoversi liberamente).
1. Introduzione Teorica
Spiega alla classe la logica del gioco:
"Immaginate una bomba a orologeria digitale. Il timer parte da 30 secondi. Chi ha il Micro:bit in mano vede il tempo scorrere. Quando lo scuote, il Micro:bit invia il tempo rimasto (es. 24 secondi) a un altro compagno e si spegne. Il compagno riceve il "24" e continua il conto alla rovescia. Se arriva a zero mentre lo hai in mano... BOOM!"
La sfida logica: Come fa il Micro:bit a sapere se deve contare o stare zitto?
- Useremo una variabile chiamata ho_la_palla.
- Se è 1, conto.
- Se è 0, aspetto.
2. Realizzazione del Codice: Passo dopo Passo
PASSO 1: Preparazione e Radio
Dobbiamo assicurarci che tutti parlino la stessa lingua (stesso Gruppo Radio).
Blocco: on start (All'avvio)
Azione 1: radio set group 1 (Imposta gruppo radio 1).
- Nota: Se ci sono più gruppi in classe, assegna numeri diversi (es. Gruppo A=1, Gruppo B=2).
Azione 2: Creare variabile ho_la_palla e impostarla a 0 (set ho_la_palla to 0).
Azione 3: show icon (Smile) (Per confermare che è acceso).
PASSO 2: L'Innesco (Start)
Solo una persona premerà questo tasto per iniziare la partita.
Blocco: on button A+B pressed
Azione 1: Creare variabile tempo e impostarla a 30 (set tempo to 30).
Azione 2: set ho_la_palla to 1 (Chi preme, inizia con la bomba in mano).
PASSO 3: Il Cuore del Programma (Il Loop)
Qui gestiamo il passare del tempo, ma SOLO se abbiamo la palla.
Blocco: forever (Per sempre)
Logica: Inserire un blocco if (Se).
Condizione: if ho_la_palla = 1 then.
Dentro il "Se" (Azioni):
show number tempo (Mostra i secondi).
pause (ms) 1000 (Aspetta 1 secondo reale).
change tempo by -1 (Togli 1 secondo).
Controllo Sconfitta: Inserire un altro if qui dentro.
- Condizione: `if tempo <= 0 then.
- Azione: show icon (Skull)` (Teschio).
- Azione: play sound (Sad)` (Opzionale).
- Azione: set ho_la_palla to 0` (Ferma il conteggio).
PASSO 4: Il Passaggio (Trasmissione TX)
Quando scuoto, passo il problema a qualcun altro.
- Blocco: on shake (Quando scuoti)
- Logica: if ho_la_palla = 1 then (Controllo di sicurezza: non posso passare la bomba se non ce l'ho!).
- Dentro il "Se" (Azioni):
radio send number tempo (Invia via radio il valore attuale dei secondi).
set ho_la_palla to 0 (Io non ho più la palla).
clear screen (Pulisci lo schermo per mostrare che sono salvo).
PASSO 5: La Ricezione (Ricezione RX)
Cosa succede quando ricevo il segnale?
Blocco: on radio received receivedNumber (Su radio ricevuto numero)
Azioni:
- set tempo to receivedNumber (Aggiorno il mio timer con il numero arrivato via radio).
- set ho_la_palla to 1 (Ora tocca a me!).
3. Riepilogo Dettagliato dei Blocchi
Ecco la "lista della spesa" dei blocchi che gli studenti devono avere sullo schermo alla fine:
In on start:
- radio set group 1
- set ho_la_palla to 0
- show icon (Smile)
In on button A+B pressed:
- set tempo to 30
- set ho_la_palla to 1
In on shake:
- if ho_la_palla = 1 then
- radio send number tempo
- set ho_la_palla to 0
- clear screen
In on radio received receivedNumber:
- set tempo to receivedNumber
- set ho_la_palla to 1
In forever:
- if ho_la_palla = 1 then
- show number tempo
- pause (ms) 1000
- change tempo by -1
- if tempo <= 0 then
- show icon (Skull)
- set ho_la_palla to 0
4. Fase di Test e Gioco
Download: Fai scaricare il codice su tutti i Micro:bit.
Cerchio: Disponi gli studenti in cerchio (o in piedi sparsi per l'aula).
Setup: Collega le batterie. Tutti dovrebbero vedere lo Smile.
Start: Chiedi a uno solo studente di premere A+B.
Azione: Il cronometro parte sul suo display. Dopo qualche secondo, digli di scuotere il Micro:bit (simulando il lancio della palla).
Verifica: Controlla che il suo display si spenga e che quello di qualcun altro (a caso!) si accenda continuando il conteggio.
- Nota sulla Radio: La radio invia a "chiunque ascolti". Se ci sono 20 Micro:bit accesi, scuotendone uno, tutti gli altri 19 riceveranno il tempo e si attiveranno contemporaneamente!
Variante "Caos Totale" vs "Coppie"
Tutti contro Tutti: Come descritto sopra. Uno lancia, tutti gli altri ricevono. È caotico ma divertente per vedere la tecnologia funzionare.
A Coppie: Assegna a ogni coppia un radio group diverso (Gruppo 1 per la coppia A, Gruppo 2 per la coppia B, ecc.). Così giocano a "ping pong" digitale.
5. Debugging Comune
Problema: "Scuoto ma il numero resta lì."
Soluzione: Hai inserito clear screen nel blocco on shake? Hai impostato ho_la_palla to 0?
Problema: "Il tempo ricomincia sempre da 30 quando ricevo."
Soluzione: Hai usato set tempo to 30 nel blocco on radio received invece di set tempo to receivedNumber?
Problema: "Tutti ricevono la palla contemporaneamente!"
Spiegazione: È normale! Il segnale radio è broadcast (a tutti). Per passare a una persona specifica servirebbe un codice più complesso (ID univoci), ma per questa lezione il "tutti attivi" è una dimostrazione potente della radio.