Coding a scuola con BBC micro:bit – lezione 9

Incominciamo questa lezione fornendo la soluzione agli esercizi della lezione precedente.

Esercizio 1

Realizzare un programma che alla pressione del pulsante “A” fa apparire sul display un messaggio: “freddo!” se la temperatura è inferiore ai 15° C, mentre se maggiore di 15° C “caldo!”

Alla pressione del pulsante “A” viene cancellato lo schermo e memorizzato all’interno della variabile “temperatura” il valore rilevato della temperatura esterna, con “show number” viene visualizzato il valore che persiste sul display per 1000 millisecondi (1 secondo). L’istruzione “if temperatura < 15 then freddo! else caldo!” svolgerà la seguente operazione: SE temperatura < 15 ALLORA stampa la stringa “freddo!” ALTRIMENTI stampa la stringa “caldo!”

Esercizio 2

Realizzare un programma che misuri la temperatura e visualizzi un messaggio sul display non appena la temperatura supera un valore di soglia. Il messaggio potrebbe essere anche un disegno che lampeggia per un certo determinato tempo.

Lo svolgimento di questo esercizio è simile al precedente con la differenza che il controllo della temperatura viene effettuato con una istruzione “if condizione then istruzione” in cui non è presente l’alternativa else. Per evidenziare un messaggio di avvertimento, nel caso la temperatura superi i 20° C, viene utilizzata l’istruzione “for..do” che dato una variabile indice che varia da 0 a 4 ripete per 4 volte le istruzioni contenute all’interno del “do“, che nell’esempio è stato realizzato con la visualizzazione di due immagini che appaiono a distanza di mezzo secondo.

Proseguiamo con la lezione 9

Introduzione

Durante l’introduzione al corso avevo segnalato che il micro:bit è dotato di una bussola elettronica, vediamo quindi in questa lezione come rilevare i punti cardinali: Nord, Sud, Est ed Ovest facendo apparire rispettivamente le lettere: N, S, E, O in funzione di come verrà ruotata la scheda. Per far ciò utilizzeremo l’istruzione “IF condizione THEN istruzioni ELSE altre_istruzioni

Per rendere semplice la realizzazione del programma limiterò l’individuazione dei punti cardinali ad un intervallo di gradi, selezionerò settori di 90° in cui farò corrispondere:

  • da 0° a 45° individuerò il Nord
  • da 45° a 135° individuerò l’Est
  • da 135° a 225° individuerò il Sud
  • da 225° a 315° individuerò l’Ovest
  • da 315° a 360° individuerò ancora il Nord

Il controllo della posizione del micro:bit avverrà usando 4 istruzioni annidate “IF condizione THEN istruzione ELSE istruzione

La simulazione via software della bussola avviene ruotando il logo del micro:bit sulla scheda, così come evidenziato nell’immagine che segue:

Di cosa avete bisogno

  • n.1 BBC micro:bit
  • n.1 Micro USB
  • n.1 Computer o tablet
  • n.2 x Batterie AAA ed un contenitore per le batterie (opzionale perché la scheda potrà essere alimentata direttamente anche via USB)

Programmiamo

  1. Inseriremo la totalità delle istruzioni all’interno dell’istruzione “forever” in modo che si abbia un controllo continuo della posizione della bussola. 
Dal menù “Basic” trasciniamo l’istruzione “forever” nell’area di programmazione

  1. Dal menù “Variables” creiamo una nuova variabile “angolo”, così come avete imparato nelle lezioni precedenti, la variabile la utilizzeremo per memorizzare l’angolo di rotazione della scheda rispetto al logo superiore, con la scheda parallela al suolo

  1. Trascinate all’interno dell’istruzione “forever” l’istruzione “set to” ed impostiamo come variabile “angolo

  1. Per rilevare l’angolo di rotazione abbiamo necessità della funzione: “compass heading (°)” che si trova nella sezione “Inputs

La funzione restituisce l’angolo di rotazione che verrà assegnata alla variabile “angolo” e il valore in esso memorizzato sarà utilizzato per visualizzare il punto cardinale.

  1. Dalla gruppo “Logic” selezionare l’istruzione “IF condizione THEN istruzione ELSE istruzione” e trascinatela al di sotto dell’istruzione “set to

  1. L’istruzione IF verrà eseguita se la condizione logica che segue è verificata, nel nostro caso l’istruzione logica da verificare è se “angolo” è minore di 45°, pertanto dalla sezione “Logic” trasciniamo l’istruzione che permette questo controllo

  1. Il controllo dovrà essere fatto tra il valore memorizzato nella variabile “angolo” e 45°, nel caso la condizione risulti vera, sul display dovrà comparire la lettera “N” altrimenti (THEN) nel caso in cui il confronto logico non fosse vero bisognerà verificare se la scheda è ruotata di un angolo diverso

  1. Proseguendo allo stesso modo per il controllo degli altri punti cardinale, si otterrà

Lascio a voi come proposta di esercizio il perfezionamento per rendere più precisa l’indicazione del punto cardinale, ad esempio potreste aggiungere anche le indicazioni per il Nord-Est, Sud-Est, Sud-Ovest e Nord-Ovest.

Esercizio 1
Rilevare lo spostamento sinistra destra della scheda.

Realizzare un programma che permette, una volta che la scheda è stata puntata verso il NORD magnetico la rilevazione dello spostamento destra/sinistra

Esercizio 2
Rilevare quando la scheda risulta non in movimento

Realizzare un programma che permette di rilevare la rotazione e l’inclinazione, nel caso non venga rilevato nessun movimento visualizzare una linea orizzontale piatta, nel caso venga rilevato un movimento visualizzare un simbolo che identifica un’onda

Esercizio 3

Ricordate l’esercizio del contatore all’indietro della lezione 7?

L’obiettivo era quello di realizzare un contatore all’indietro che partisse da 9, vi ho dato soluzione nella lezione 8:

E se volessi impostare mediante il pulsante “A” il valore massimo da cui partire? Ovvero tenendo premuto il pulsante “A” incremento i numeri dei secondi ad un valore massimo non superiore a “9”, con il pulsante “B” faccio partire il timer.

Le soluzioni nella prossima lezione.

4 pensieri su “Coding a scuola con BBC micro:bit – lezione 9

  1. Francesco

    Ciao Michele,

    provo man mano gli esercizi che proponi con l’idea di preparare poi delle esercitazioni da proporre ai bambini a cui insegno coding: sei sempre un’ottima fonte di ispirazione!

    Questa volta però ho avuto un problema. Caricando questo programma sul mio micro:bit, invece di partire quanto programmato, parte quello che credo fosse il codice di default (Draw a circle). Se sostituisco la lettura della bussola con quella dell’accelerometro invece tutto va a gonfie vele. Ho ipotizzato che con questo comportamento micro:bit voglia dirmi qualcosa… tipo “non mi funziona il magnetometro…” Ti sembra possibile? Ti è mai capitato qualcosa di simile?

    Inoltre, una curiosità: perché hai preferito proporre la cascata di if-then-else annidati, invece di creare la sequenza if-then-else_if-then-else_if…?

    Grazie di tutto.

    Ciao.

    F~

    Rispondi
    1. admin Autore articolo

      🙂 Grazie Francesco.

      Come sai il micro:bit possiede un magnetometro interno che permette di utilizzarlo come bussola e al primo utilizzo questa bussola deve essere calibrata in modo che la lettura dei valori risulti precisa. Quando carichi un programma che fa uso della bussola il micro:bit farà comparire prima il messaggio ‘DRAW A CIRCLE’ o ‘TILT TO FILL SCREEN’ sullo schermo, tieni il micro:bit in orizzontale e poi inclinalo in modo da completare il riempimento del cerchio o dell’intero schermo, dopo aver eseguito questa operazione il programma verrà eseguito.

      Una spiegazione estesa sulla calibrazione del micro:bit la trovi al seguente link: https://support.microbit.org/support/solutions/articles/19000008874-calibrating-the-micro-bit-compass-what-does-it-mean-when-the-micro-bit-says-draw-a-circle-or-tilt

      Un caro saluto.

      Rispondi
      1. Francesco

        Grazie mille, proverò.

        La mia ipotesi era errata, ma per fortuna che ho posto la domanda… non immaginavo proprio che il motivo potesse essere questo 🙂

        Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.