Come per la lezione precedente, andate sul sito BBC micro:bit e fate click su “Let’s Code”.
Scegliere la modalità di programmazione JavaScript Blocks Editor
All’interno del “Microsoft Block Editor” click su “New project”.
Cancellate le istruzioni che compaio di default: “on start” e “forever”. Per cancellare un’istruzione potete trascinarla verso sinistra sulla sezione comandi, comparirà un cestino, oppure selezionatela e cancellatela con il tasto DEL.
Esercizi di approfondimento
Fate click su “Variables” e selezionate l’istruzione “set item to…”, trascinatela nell’area di programmazione, selezionate l’elemento “item” per aprire il menù a discesa, selezionate “rename variable” per cambiare il nome in “contatore”, confermate con un OK.
All’interno del campo numerico inserite il numero 9 al posto dello 0.
Selezionate all’interno del menù comandi il gruppo di istruzioni “Basics” e trascinate il blocco “show number” all’interno della finestra di programmazione.
Nel menù “Variables” cercate la variabile “contatore” all’interno della finestra di programmazione.
Trascinate la variabile “contatore” all’interno dell’istruzione “show number” al di sopra del valore “0”, incastratela al posto dello “0”.
Inseriamo ora l’istruzione “show number” all’interno dell’istruzione “forever” che permette di ripetere in un loop infinito le istruzioni in esso incluse, trovate l’istruzione all’interno della sezione “Basics”.
Come potete notare il valore visualizzato è “0” e non “9” come ci si potrebbe aspettare, ciò accade perché l’assegnazione del valore “9” alla variabile “contatore” deve avvenire all’interno di una istruzione “on start”.
L’istruzione “on start” potete trovarla nella sezione “Basic”. Effettuando tale modifica visualizzerete il numero “9” fisso sulla matrice di LED, in questo modo diciamo alla nostra scheda di visualizzare ripetutamente il numero 9 sulla matrice di LED.
Cosa accadrebbe se il numero fosse costituito da più cifre?
Provate ad assegnare a contatore il numero: 1967 vedrete ripetere in un loop infinito la sequenza dei numeri 1, 9, 6, 7
Ora procediamo con l’assegnare al pulsante “A” un’azione. All’interno della sezione “Inputs” troviamo l’istruzione “on button A pressed“ che permette di eseguire le istruzioni in esso contenute se viene premuto il pulsante “A”.
Inserite all’interno dell’istruzione “on button” l’assegnazione: “set contatore to 1”, ciò permetterà di sostituire il valore 1 al valore 9 una volta che premiamo il pulsante “A”.
Per effettuare un conto alla rovescia quando premiamo il pulsante “B”, abbiamo necessità di creare un’altra variabile. All’interno della sezione “Variables” trascinare all’interno dell’area di programmazione un’altra istruzione “set item to…” e rinominate la variabile di default “item” in “ContatoreIndietro”.
All’interno della sezione “Logic” trascinate il blocco “false” e collegatelo all’interno dell’impostazione variabile “set ContatoreIndietro to false” e inserite il blocco all’interno del blocco “on start”
All’interno della sezione “Logic” trascinate il blocco “false” e collegatelo all’interno dell’impostazione variabile “set ContatoreIndietro to false” e inserite il blocco all’interno del blocco “on start”
E’ necessario verificare quando viene effettuata la richiesta di conto alla rovescia, ciò accade quando la variabile “ContatoreIndietro” assume il valore “vero”. Reperiamo la variabile “ContatoreIndietro” dalla sezione “Variables” e lo stato logico “true” dalla sezione “Logic”, per avere una struttura come rappresentato nell’immagine che segue:
Inseriamo una pausa di 1 secondo appunto perché dobbiamo realizzare un timer.
Ad ogni ciclo è indispensabile decrementare di 1 il contatore, per fare ciò usiamo l’istruzione “change” che consente di effettuare sulla stessa variabile un’operazione di incremento o decremento, nel nostro caso l’operazione da eseguire è la sottrazione di una unità: -1
Ad ogni ciclo bisogna verificare se la variabile contatore assume il valore “0” o negativo ciò significa che non è più necessario effettuare il conto alla rovescia perché si è raggiunta la fine del conteggio “0”. Per bloccare il conto alla rovescia bisogna impostare la variabile “ContatoreIndietro” a false.
Ad ogni ciclo bisogna verificare se la variabile contatore assume il valore “0” o negativo ciò significa che non è più necessario effettuare il conto alla rovescia perché si è raggiunta la fine del conteggio “0”. Per bloccare il conto alla rovescia bisogna impostare la variabile “ContatoreIndietro” a false.
A questo punto noterete che premendo il pulsante “B” il timer incomincia a contare all’indietro partendo da 9 fino a 0, premendo il pulsante “A” viene reimpostato il timer a 9 secondi.
Dovreste notare che al termine del conteggio, quando sul display compare “0” la pressione successiva del pulsante “B” visualizzerà sul display il valore “-1”, ciò capita perché l’ultimo valore assunto da “contatore” è proprio “-1”.
Come possiamo risolvere il problema?
Dovreste notare che al termine del conteggio, quando sul display compare “0” la pressione successiva del pulsante “B” visualizzerà sul display il valore “-1”, ciò capita perché l’ultimo valore assunto da “contatore” è proprio “-1”.
Come possiamo risolvere il problema?
E’ sufficiente reimpostare la variabile “contatore” a “0” non appena è concluso il controllo della fine del conteggio, così come indicato nell’immagine che segue: