Il Robot che Soffre il Solletico
Fino ad ora i nostri programmi hanno controllato i sensori senza sosta dentro un loop, come un bambino impaziente che chiede "siamo arrivati?". Ma c'è un modo molto più intelligente di programmare! In questa missione daremo dei "riflessi" al nostro programma. Scoprirai gli eventi, che permettono al codice di aspettare in silenzio e di reagire all'istante solo quando succede qualcosa di importante. Preparati a costruire un robot che soffre il solletico e scoppia a ridere quando batti le mani!
Livello Base
Cosa faremo?
Sei un insegnante?
Corsi
- Classi 3-12
Materiali
- Cellulare, tablet o computer
- Connessione a Internet
- Cartone, forbici e un paio di elastici per fissare il telefono al cartone
Descrizione
Questa attività introduce gli studenti al concetto fondamentale della programmazione guidata dagli eventi. Invece di usare un loop principale per controllare di continuo un sensore, impareranno a usare un blocco evento che "ascolta" un cambiamento (un aumento improvviso del rumore) e fa partire una sequenza di azioni.
Obiettivi Educativi
- Comprendere il concetto di "evento" come innesco.
- Distinguere un programma basato sui loop da uno basato sugli eventi.
- Creare una sequenza di azioni che viene eseguita in risposta a un evento.
- Costruire un prototipo più interattivo e più "vivo".
Inizio (10 minuti) - Il Campanello e il Programma Efficiente
- Dai il benvenuto agli studenti e presenta il nuovo concetto: "Oggi impareremo un modo più professionale ed efficiente per far reagire i nostri programmi. Diamo vita a un robot che soffre il solletico!"
- Usa un'analogia semplice: "Pensate a un campanello. Suona di continuo per chiedere se c'è qualcuno alla porta? No! Aspetta in silenzio e suona solo quando qualcuno preme il pulsante. Quella 'pressione del pulsante' è un evento. È una notifica che sveglia il programma."
- Spiega che oggi insegneremo al nostro robot ad aspettare un evento (un applauso) e a reagire, invece di chiedere di continuo se c'è rumore.
Il Problema di Chiedere in Continuazione
Fino ad ora abbiamo usato un loop ripeti per sempre per leggere i nostri sensori. Questo metodo funziona, ma è come un bambino in viaggio in auto che chiede "siamo arrivati?, siamo arrivati?, siamo arrivati?" ogni secondo. Il programma lavora senza sosta e consuma energia solo per chiedere al sensore se qualcosa è cambiato, anche quando non sta succedendo proprio nulla.
Un Modo Più Intelligente: gli Eventi!
La programmazione basata sugli eventi è molto più efficiente. Invece di chiedere senza sosta, il programma si iscrive semplicemente a un sensore e gli dice: "Avvisami se succede qualcosa di interessante". A quel punto il programma può "dormire", cioè aspettare in silenzio. Quando il sensore rileva qualcosa di importante (come un applauso), invia una notifica, un evento, che sveglia il programma e gli dice: "Ehi, è ora di agire!".
L'Evento come Innesco (Trigger)
Nel nostro robot l'applauso è l'evento, e questo evento funziona come un innesco. Non cambia per sempre il comportamento del robot: si limita a "far partire" una sequenza di azioni che avevamo già preparato, cioè l'animazione della risata. Quando la sequenza finisce, il robot torna al suo stato di attesa silenziosa, pronto per il prossimo "scatto".
Sviluppo (20-30 minuti) - Programmiamo i Riflessi del Robot
- Ora che è chiaro che un evento è una notifica, è tempo di costruire il robot.
- Guida gli studenti attraverso le istruzioni per disegnare la faccia del robot e programmare la sua reazione all'evento sonoro, come dettagliato qui sotto. Sottolinea che la logica principale non si trova dentro un loop
ripeti per sempre.
Chiusura (5-10 minuti) - Eventi contro Loop
- Una volta che tutti i robot ridono a ogni applauso, è tempo di consolidare questo nuovo paradigma di programmazione.
- Avvia la discussione: "Avete notato che questo codice è diverso? Dov'è il loop principale che usavamo sempre? Perché secondo voi questa volta non ci serve?" Usa le domande della sezione di riflessione per approfondire l'efficienza e la potenza della programmazione basata sugli eventi.
Rifletti
Questo programma sembra "reattivo": risponde all'istante. Qual è la differenza principale tra usare un evento e usare un loop infinito per controllare un sensore?
L'evento è l'"innesco". Qual è la "sequenza di azioni" che si innesca in questo progetto?
Se volessi far durare di più la risata del robot, quale numero cambieresti nel codice?
Il Problema di Chiedere in Continuazione
Fino ad ora abbiamo usato un loop ripeti per sempre per leggere i nostri sensori. Questo metodo funziona, ma è come un bambino in viaggio in auto che chiede "siamo arrivati?, siamo arrivati?, siamo arrivati?" ogni secondo. Il programma lavora senza sosta e consuma energia solo per chiedere al sensore se qualcosa è cambiato, anche quando non sta succedendo proprio nulla.
Un Modo Più Intelligente: gli Eventi!
La programmazione basata sugli eventi è molto più efficiente. Invece di chiedere senza sosta, il programma si iscrive semplicemente a un sensore e gli dice: "Avvisami se succede qualcosa di interessante". A quel punto il programma può "dormire", cioè aspettare in silenzio. Quando il sensore rileva qualcosa di importante (come un applauso), invia una notifica, un evento, che sveglia il programma e gli dice: "Ehi, è ora di agire!".
L'Evento come Innesco (Trigger)
Nel nostro robot l'applauso è l'evento, e questo evento funziona come un innesco. Non cambia per sempre il comportamento del robot: si limita a "far partire" una sequenza di azioni che avevamo già preparato, cioè l'animazione della risata. Quando la sequenza finisce, il robot torna al suo stato di attesa silenziosa, pronto per il prossimo "scatto".
Crea
Costruiamo il nostro robot che soffre il solletico.
Costruisci il modellino di cartone— servono anche un paio di elastici per fissare il telefono al cartone
- Premi ✙ Aggiungi Dispositivo e seleziona LivelloRumore per rilevare gli applausi.
- Aggiungi il componente DisegnoLED per mostrare la faccia del robot.
- Infine, aggiungi RiproduttoreSuoni per la risata.
- Ricorda che puoi scansionare tutti i codici ▣ QR con lo stesso smartphone.
Siamo pronti a dare vita al nostro robot!
Composizione del Codice
Osserva con attenzione: non c'è nessun loop ripeti per sempre per la logica principale! Il blocco quando inizia il programma imposta la faccia fissa del robot. Tutta la magia avviene nel blocco evento quando il livello di rumore rileva aumenta improvviso. Quando batti le mani, questo blocco si attiva, riproduce il suono ed esegue un loop ripeti 8 volte per animare la bocca. Poi un blocco ferma il suono interrompe la risata se stava ancora suonando, e un ultimo disegna rimette la faccia di riposo — la stessa di quando inizia il programma. Ecco perché il robot resta pronto per il prossimo applauso.
Rifletti
Questo programma sembra "reattivo": risponde all'istante. Qual è la differenza principale tra usare un evento e usare un loop infinito per controllare un sensore?
L'evento è l'"innesco". Qual è la "sequenza di azioni" che si innesca in questo progetto?
Se volessi far durare di più la risata del robot, quale numero cambieresti nel codice?