Il Magico Interruttore a Battito di Mani

Hai imparato a padroneggiare tutti i pezzi del puzzle: gli eventi che ascoltano, le variabili che ricordano e i condizionali che decidono. Ora, in questa missione di sintesi, li unirai per creare un progetto classico e magico: un interruttore che accende e spegne la luce con un battito di mani. Preparati a costruire il tuo primo dispositivo per la "casa intelligente" e a dimostrare tutto quello che hai imparato!

Sintesi Eventi Variabili di Stato Condizionali Toggle Domotica Sensore di Rumore

Livello Intermedio

Apri in Protobject

Cosa faremo?

Sei un insegnante?

Corsi

  • Classi 6-12

Materiali

  • Cellulare, tablet o computer
  • Connessione a Internet
  • Cartone, forbici e un paio di elastici per fissare il telefono al cartone

Descrizione

Questo è un progetto di sintesi pensato per ripassare e consolidare il ciclo interattivo (Evento -> Variabile -> Condizionale) in un'applicazione pratica ed essenziale. Introduce un'architettura di programma guidata interamente dagli eventi, che non richiede un loop principale per la sua logica, mostrando un paradigma di programmazione efficiente.

Obiettivi Educativi

  • Sintetizzare e applicare i concetti di eventi, variabili di stato e condizionali in un unico progetto.
  • Implementare il funzionamento di un "interruttore" (toggle).
  • Costruire un programma efficiente e guidato interamente dagli eventi.
  • Collegare i concetti di programmazione ad applicazioni del mondo reale come la domotica.

Inizio (10 minuti) - Assembliamo il Motore

  1. Dai il benvenuto alla classe: "Oggi faremo gli ingegneri e monteremo insieme tutti i pezzi che abbiamo imparato per costruire un prodotto finito che li mostri tutti. Il nostro obiettivo: un interruttore della luce che si attiva battendo le mani."
  2. Chiedi agli studenti di ricavare da soli l'architettura: "Quali 'pezzi' di programmazione che già conosciamo pensate ci serviranno per costruirlo?" Guidali a individuare la necessità di:
    • Un evento per rilevare il battito di mani.
    • Una variabile per ricordare se la luce è accesa o spenta.
    • Un condizionale per decidere se accendere o spegnere.
  3. Fai loro i complimenti: "Esatto! Avete già il progetto in testa. Ora costruiamolo davvero."

Sintesi: Uniamo i Pezzi del Puzzle

Hai imparato i tre superpoteri della programmazione interattiva:

  • Eventi: Per reagire alle azioni del mondo esterno (come un battito di mani).
  • Variabili: Per dare una memoria al tuo programma e ricordarne lo stato (per esempio se la luce è accesa o spenta).
  • Condizionali: Per prendere decisioni in base a quello stato. In questo progetto non impareremo un concetto nuovo: combineremo questi tre in un'unica applicazione elegante e funzionante, dimostrando che hai già tutto il necessario per creare progetti complessi.

Architettura Guidata dagli Eventi

Questo progetto usa un'architettura di programma molto pulita ed efficiente. A differenza di un programma che ha bisogno di un loop principale costantemente in funzione per animare, qui non c'è nessun loop principale per la logica! All'inizio il programma è completamente fermo. Tutta l'azione (cambiare la variabile E decidere cosa fare con la luce) avviene dentro lo stesso blocco evento. Il programma si "sveglia" al battito di mani, fa il suo lavoro in un istante e torna a "dormire". Questo modo di programmare è molto diffuso nelle applicazioni moderne perché fa risparmiare energia e risorse del processore.

Sviluppo (20-30 minuti) - Costruiamo l'Interruttore Intelligente

  1. Con l'architettura ormai chiara, gli studenti possono iniziare il montaggio.
  2. Guidali attraverso le istruzioni per creare l'interruttore, come dettagliato qui sotto. Fai loro notare l'assenza di un loop principale e discutete insieme perché questa volta non serve.

Chiusura (5-10 minuti) - Un Programma Efficiente

  1. Una volta che tutti riescono a controllare la propria luce battendo le mani, è tempo di analizzare l'eleganza del codice.
  2. Avvia la discussione: "Guardate il vostro codice finito. Notate qualcosa di importante che manca rispetto ai progetti precedenti?" (Non c'è il loop principale!). "Perché non ci serve? Perché tutta la logica avviene dentro l'evento. Questo è un modo di programmare molto efficiente."

Rifletti

Guarda la struttura del tuo codice: non c'è nessun loop principale, tutta la logica vive dentro l'evento. Che vantaggio offre rispetto a un programma che ripete istruzioni per sempre? Quale pensi consumi meno batteria, e perché?

L'idea di "domotica", o "casa intelligente", si basa proprio su dispositivi come questo. Quali altri apparecchi di casa ti piacerebbe controllare con eventi come la voce, il movimento o un battito di mani?

Al momento qualsiasi rumore forte fa scattare l'interruttore. Come potresti renderlo più affidabile, in modo che non si attivi per sbaglio (per esempio con un colpo di tosse)?

Presenta Piano Lezione Modellino di cartone

Sintesi: Uniamo i Pezzi del Puzzle

Hai imparato i tre superpoteri della programmazione interattiva:

  • Eventi: Per reagire alle azioni del mondo esterno (come un battito di mani).
  • Variabili: Per dare una memoria al tuo programma e ricordarne lo stato (per esempio se la luce è accesa o spenta).
  • Condizionali: Per prendere decisioni in base a quello stato. In questo progetto non impareremo un concetto nuovo: combineremo questi tre in un'unica applicazione elegante e funzionante, dimostrando che hai già tutto il necessario per creare progetti complessi.

Architettura Guidata dagli Eventi

Questo progetto usa un'architettura di programma molto pulita ed efficiente. A differenza di un programma che ha bisogno di un loop principale costantemente in funzione per animare, qui non c'è nessun loop principale per la logica! All'inizio il programma è completamente fermo. Tutta l'azione (cambiare la variabile E decidere cosa fare con la luce) avviene dentro lo stesso blocco evento. Il programma si "sveglia" al battito di mani, fa il suo lavoro in un istante e torna a "dormire". Questo modo di programmare è molto diffuso nelle applicazioni moderne perché fa risparmiare energia e risorse del processore.

Crea

Costruiamo l'interruttore magico!

Costruisci il modellino di cartone— servono anche un paio di elastici per fissare il telefono al cartone

  1. Ci serviranno 2 componenti sul nostro smartphone: LivelloRumore per rilevare il battito di mani (un aumento improvviso del rumore) e DisegnoLED che farà da 'lampadina'.
  2. Ricordati di scansionare o aprire entrambi i componenti sul tuo dispositivo.

Siamo pronti per programmare un po' di magia!

Composizione del Codice

Questo codice è un esempio perfetto di efficienza. Quando inizia il programma si limita a impostare la variabile stato su falso: lo schermo parte spento e il programma resta lì, in attesa del primo battito di mani. Poi il programma aspetta senza fare nulla. Il blocco evento quando il livello di rumore rileva aumenta improvviso fa tutto il lavoro: prima usa la logica dell'interruttore (stato = non stato) per invertire lo stato attuale. Subito dopo, un blocco se... altrimenti... legge il nuovo valore di quella stessa variabile e accende o spegne la luce. Quest'ordine non è facoltativo: se il se... altrimenti... leggesse la variabile prima di invertirla, la luce mostrerebbe sempre lo stato precedente — l'interruttore resterebbe indietro di un battito di mani. Tutto succede in un istante, e solo quando serve.

Rifletti

Guarda la struttura del tuo codice: non c'è nessun loop principale, tutta la logica vive dentro l'evento. Che vantaggio offre rispetto a un programma che ripete istruzioni per sempre? Quale pensi consumi meno batteria, e perché?

L'idea di "domotica", o "casa intelligente", si basa proprio su dispositivi come questo. Quali altri apparecchi di casa ti piacerebbe controllare con eventi come la voce, il movimento o un battito di mani?

Al momento qualsiasi rumore forte fa scattare l'interruttore. Come potresti renderlo più affidabile, in modo che non si attivi per sbaglio (per esempio con un colpo di tosse)?