Archivi tag: BBC micro:bit

MicroPython – Python per microcontrollori – usarlo su BBC micro:bit – lezione 3

Disegnare immagini statiche è divertente, ma ancora più divertente è farle muovere e fare questo con MicroPython è molto semplice, è sufficiente indicare un elenco di immagini, in questa lezione vedremo come fare.

Per capire come animare una serie di immagini abbiamo necessità di utilizzare le liste.

Lista della spesa:

Uova
Prosciutto
Pomodori

Questo è il modo per rappresentare una lista in Python:

spesa = ["Uova", "Prosciutto", "Pomodori" ]

Abbiamo creato un elenco chiamato spesa   che contiene tre elementi. Python sa che è un elenco perché è racchiuso tra parentesi quadre ([  e ] ). Gli elementi nella lista sono separati da una virgola (, ) e in questo caso gli elementi sono tre stringhe di caratteri: “Uova”, “Prosciutto” e “Pomodori”. Sappiamo che sono stringhe di caratteri perché sono racchiusi tra virgolette .

Nota

I numeri non hanno bisogno di essere inseriti all’interno delle doppie virgolette, in quanto rappresentano un valore (piuttosto che una stringa di caratteri).

Quindi 2  senza virgolette rappresenta il valore numerico 2 mentre 2 tra virgolette “2”  rappresenta il carattere/cifra che rappresenta il numero 2.

È possibile memorizzare elementi di diverso tipo all’interno della stessa lista:

lista_mista = [“ciao!”, 1.234, Image.HAPPY]

Notate che l’ultimo elemento è un’immagine!

E’ possibile dire a MicroPython di animare un elenco di immagini. Fortunatamente sono disponibili un paio di elenchi di immagini già integrate, si chiamano Image.ALL_CLOCKS  e Image.ALL_ARROWS :

from microbit import *

display.show(Image.ALL_CLOCKS, loop=True, delay=100)

Verrà visualizzata una lancetta che girerà in senso orario, l’intervallo di accensione dei tre LED è di 100 millisecondi.

Come abbiamo visto per la visualizzazione di una sola immagine usiamo display.show  per mostrarlo sul display del micro:bit. Quando diciamo a MicroPython di usare Image.ALL_CLOCKS  ci verranno mostrate in sequenza tutte le immagini della lista, inoltre nell’istruzione con il parametro loop=True  indichiamo che la lista delle immagini deve scorrere per sempre e con l’argomento delay=100  indichiamo che ogni immagine deve essere visualizzata per 100 millisecondi (1/10 di secondo).

  • Avete capito come animare la lista Image.ALL_ARROWS  ?
  • Come si evita il loop infinito?
    (suggerimento: l’opposto di True  è False  sebbene il valore predefinito per loop sia False )
  • Potete cambiare la velocità dell’animazione?

Vediamo come creare un’animazione di un’esplosione di luci, una sequenza che parte con l’accensione del LED centrale per espandersi verso il perimetro con differenti intensità luminose dei LED

from microbit import *

luce1 = Image("00000:"
"00000:"
"00900:"
"00000:"
"00000")

luce2 = Image("00000:"
"09990:"
"09590:"
"09990:"
"00000")

luce3 = Image("00000:"
"05550:"
"05350:"
"05550:"
"00000")

luce4 = Image("09590:"
"93339:"
"93039:"
"93339:"
"09590")

luce5 = Image("03330:"
"30003:"
"30003:"
"30003:"
"03330")

luce6 = Image("00000:"
"00000:"
"00000:"
"00000:"
"00000")

luci = [luce1, luce2, luce3, luce4, luce5, luce6]
display.show(luci, delay=200)

 

Questo è il modo con cui funziona il programma:

  • creiamo sei immagini luce  nello stesso modo descritto sopra.
  • Poi le inseriamo tutte in una lista chiamata luci .
  • Infine chiedo a display.show  di animare la lista con un ritardo di 200 millisecondi.
  • Poiché non abbiamo impostato loop=True  vedremo l’animazione una sola volta.

Proviamo ora a creare una sequenza che si ripete ciclicamente, in questo caso sarà sufficiente inserire il codice all’interno di un blocco while

from microbit import *

ritardo=100

luce1 = Image("00000:"
"00000:"
"00900:"
"00000:"
"00000")

luce2 = Image("00000:"
"09990:"
"09590:"
"09990:"
"00000")

luce3 = Image("00000:"
"05550:"
"05350:"
"05550:"
"00000")

luce4 = Image("09590:"
"93339:"
"93039:"
"93339:"
"09590")

luce5 = Image("03330:"
"30003:"
"30003:"
"30003:"
"03330")

luce6 = Image("00000:"
"00000:"
"00000:"
"00000:"
"00000")

luci = [luce1, luce2, luce3, luce4, luce5, luce6]

while True:
    display.show(luci, delay=ritardo)

Come si nota è stato inserito all’interno di un loop infinito: while True  l’istruzione display.show(luci, delay=ritardo) . Rispetto alla versione precedente è stata anche parametrizzato il valore del delay , inserito come parametro ritardo  all’inizio del codice, ciò permetterà di variare ad inizio programma la velocità con cui apparirà la sequenza delle sei immagini.

L’esempio riportato sopra ripeterà ad ogni ciclo la sequenza delle immagini da luce1  a luce6 , nel caso in cui si voglia dare un’effetto di ribalzo sarà sufficiente creare due collezioni luciA  e luciB  i cui la sequenza delle immagini è invertita:

from microbit import *

ritardo=100

luce1 = Image("00000:"
"00000:"
"00900:"
"00000:"
"00000")

luce2 = Image("00000:"
"09990:"
"09590:"
"09990:"
"00000")

luce3 = Image("00000:"
"05550:"
"05350:"
"05550:"
"00000")

luce4 = Image("09590:"
"93339:"
"93039:"
"93339:"
"09590")

luce5 = Image("03330:"
"30003:"
"30003:"
"30003:"
"03330")

luce6 = Image("00000:"
"00000:"
"00000:"
"00000:"
"00000")

luciA = [luce1, luce2, luce3, luce4, luce5, luce6]
luciB = [luce6, luce5, luce4, luce3, luce2, luce1]

while True:
    display.show(luciA, delay=ritardo)
    display.show(luciB, delay=ritardo)

Per avere una struttura compatta del codice, così come mostrato in precedenza, il codice può essere scritto in questo modo:

from microbit import *

ritardo=100

luce1 = Image("00000:00000:00900:00000:00000")
luce2 = Image("00000:09990:09590:09990:00000")
luce3 = Image("00000:05550:05350:05550:00000")
luce4 = Image("09590:93339:93039:93339:09590")
luce5 = Image("03330:30003:30003:30003:03330")
luce6 = Image("00000:00000:00000:00000:00000")

luciA = [luce1, luce2, luce3, luce4, luce5, luce6]
luciB = [luce6, luce5, luce4, luce3, luce2, luce1]

while True:
    display.show(luciA, delay=ritardo)
    display.show(luciB, delay=ritardo)

Buon Coding a tutti 🙂

Fare coding a scuola con BBC micro:bit – seconda edizione


Parte domani la seconda edizione del corso sull’uso di BBC micro:bit a scuola che svolgerò per Tecnica della Scuola. Molte le novità introdotte in questa edizione, analizzeremo la nuova interfaccia di programmazione introdotta ufficialmente la  scorsa settimana, mostrerò le possibilità di programmazione del micro:bit offerte anche da altri ambienti di sviluppo che supportano micro:bit tra cui Scratch 3. Verranno dati suggerimenti per lo sviluppo di attività pratiche utilizzando anche altri dispositivi collegabili al micro:bit vedremo come, con semplici materiali di recupero è possibile implementare un semplice percorso di didattica della robotica.

Durante l’attività di formazione utilizzerò una nuova collezione di schede di lavoro, che si aggiungono a quelle proposte nel precedente corso, schede immediatamente spendibile in classe, utilizzabili per un percorso di Coding che potrete in piena libertà modificare ed espandere in funzione delle vostre esigenze.

Saranno svolti 4 incontri in webinar di 2 ore ciascuno per un totale di 8 ore di formazione:

  • Lunedì 5 novembre 2018 – Ore 17.00/19.00
  • Venerdì 9 novembre 2018 – Ore 17.00/19.00
  • Lunedì 12 novembre 2018 – Ore 17.00/19.00
  • Venerdì 16 novembre 2018 – Ore 17.00/19.00

Nel caso foste interessati è possibile ancora iscriversi, per maggiori informazioni sui contenuti e sulla modalità di iscrizione seguite il link sul sito di Tecnica della Scuola.

TinyTrak:bit – un cingolato con il cuore di un micro:bit

Idee che nascono sotto l’ombrellone 🙂

Qualche mese fa parlavo con l’amica e collega Maria Grazia Berardo dell’IIS Vallauri: “Michele se ti chiedessi di progettare un robot con gli allievi che tipologia realizzeresti?”

Io: “sicuramente un cingolato”

Maria Grazia: “ecco come tutti i ragazzi preferite i cingoli! 🙂 ma da cosa dipende?”

Io: “… banalmente dal fatto che da bambino sognavo di guidare un escavatore o un trattore cingolato… e poi posso andare ovunque… ed il rumore del motore… sinfonia 😊… ma in ogni caso dipende dal contesto e dalla gara robotica”

Maria Grazia: “ma sai che nel decidere con i miei allievi quale tipo di robot costruire per le varie gare robotiche quasi tutti i ragazzi hanno optato per un cingolato… sarà come per te qualcosa che nasce dall’infanzia 😀”

E per non smentirmi era da tempo che desideravo mettere i cingoli al DotBot:bit e surfando senza meta sul web sono giunto al gruppo Facebook Tiny Trak – Micro FPV Crawler che mi ha colpito, potrete vedere molti piccoli cingolati con telecamera. Il progetto mi ha ricordato una chiacchierata fatta qualche hanno fa ad un JobOrienta con un artificiere della Polizia di Stato in cui si parlava di realizzazione di micro robot con telecamera a bassissimo costo di produzione da far transitare in tubazioni o spazi ristretti… al tempo le micro telecamere erano parecchio costose, i tempi sono cambiati e gli obiettivi pure… didattica e gioco 😊

Ulteriori risorse su questa tipologia di cingolati le potete trovare su Thingiverse trovate molte informazioni.

Facendo il mix tra i progetti trovati sul gruppo Tiny Track e quanto già fatto per DotBot:bit ho realizzato velocemente il primo prototipo del piccolo cingolato. Per velocizzare la produzione ho utilizzato un cingolo Lego e modificato strutture già realizzati da altri.
Renderò disponibile tutto nei prossimi giorni, voglio solamente ottimizzare i supporti che reggono il micro:bit, bilanciare il tutto e costruire qualche piccolo esempio di programmazione.

Nel caso abbiate suggerimenti/necessità utili per le sperimentazioni che desiderate fare con i vostri allievi volentieri accetto suggerimenti.

Buon Coding a tutti.

Scratch 3.0 – alcune cose da sapere sulla nuovissima versione presto on-line

Mi stupisco sempre dell’enorme quantità di giochi, storie ed animazioni che gli studenti sono in grado di realizzare con Scratch, senza alcun dubbio è tra i software più utilizzati e conosciuti per fare Coding a scuola.
Il prossimo agosto verrà reso disponibile una nuova versione (link alle versione beta) di questo utilissimo software, Scratch 3.0 che espanderà il modo in cui gli studenti creeranno e condivideranno i loro progetti e offrirà maggiori possibilità per gli insegnanti nel supportare gli allievi all’apprendimento dell’uso di Scratch. La nuova versione includerà nuove immagini, nuovi materiali di supporto e nuove funzionalità di programmazione e potrà essere utilizzata su un’ampia varietà di dispositivi tra cui anche i Tablet.

Quindi il prossimo agosto vedremo la versione on-line di Scratch 3.0 mentre a partire dal 2 gennaio 2019 Scratch 3.0 sarà integrato all’interno del sito inoltre sarà disponibile una versione offline autonoma (da scaricare).

Scratch 3.0 avrà più modi per creare e condividere

  • Creare, condividere e remixare progetti su tablet (oltre ovviamente a laptop e desktop)
  • Scelta tra dozzine di nuovi personaggi, sfondi e suoni
  • Nuovi editor per disegnare e manipolare l’audio, quindi maggior libertà e semplicità nell’effettuare il remix e la manipolazione di personaggi, musica e suoni
  • Nuove funzioni (blocchi di programmazione) con cui gli studenti potranno programmare dispositivi fisici, (FANTASTICO!!!) come BBC micro:bit, Lego Mindstorms EV3, Lego WeDo 2.0, Lego Boost, ma anche servizi web come come Google Traduttore

Scratch 3.0 avrà un nuovo supporto per chi incomincia a fare Coding

  • Funzionalità che facilitano gli utenti inesperti ad apprendere l’uso di Scratch
  • Nuovi video tutorial di dimensioni ridotte che mostrano l’utilizzo di una particolare funzione non solamente in modalità testuale o immagine ma anche mediante video
  • Saranno aggiornate le Scratch Activity Cards and Educator Guides
  • Saranno aggiornate le Creative Computing Curriculum realizzate da ScratchEd
  • Saranno aggiornati i tutorial Code Club e CS First

Scratch 3.0 è quello che già conosci ma si espande

  • Tutti i progetti e gli account esistenti continueranno a funzionare in Scratch 3.0
  • Tutti i blocchi di programmazione che già si usavano nella versione 2 saranno ancora presenti e ne saranno aggiunti altri
  • Scratch 3.0 sarà disponibile in molte lingue
  • Le versioni offline di Scratch 1.4 e Scratch 2.0 saranno ancora disponibili
  • Potrete importare progetti realizzati in Scratch 2 in Scratch 3
  • Scratch continuerà ad essere gratuito per tutti!

Per maggiori dettagli su ciò che sta arrivando in Scratch 3.0, date uno sguardo all’FAQ di Scratch 3.0.

Buon coding a tutti 🙂

Nome in codice DotBot Bubble

Obiettivo di quest’ultima versione: tondeggiante, veloce da costruire, trasportabile, economicamente accessibile per le scuole, multipiattaforma: #Arduino (UNO e Nano), #Raspberry Pi (3, 2, Zero), #microbit, #STM32F401 #Nucleo-64 e visto che lo avevo promesso ad una persona durante la scorsa Maker Faire di Roma anche #UDOO #NEO. Per ogni piattaforma ho disegnato un tutorial per realizzare un robot segui linea, evita ostacoli e altre tipologie di interazioni in cantiere. La struttura avrà, in una successiva versione, un involucro trasparente per proteggere i circuiti elettronici aggiungerò inoltre  elementi che permetteranno personalizzazioni estetiche.
Sto ancora studiando l’alimentazione più efficace, ho sperimentato con Li-Po però per alleggerire la struttura sto pensato a delle batterie Li-Ion che sperimenterò nella prossima settimana, per la versione preliminare 6 batterie AA da 1,5 V.

I sorgenti grafici per la stampa 3D per realizzarlo?
Entro qualche settimana,

perché?

Sto verificando l’efficacia della struttura meccanica e del software e della didattica, nel corso che si svolge presso l’IIS Vallauri di Fossano: ITS “Tecnico Superiore per l’Automazione e l’Innovazione di Processi e Prodotti Meccanici” – ITS VI (2016-2018), 2^ annualità (studenti neodiplomati) per cui sto svolgendo il corso: Microcontrollori.

Inoltre sperimenterò l’utilizzo con un nutrito gruppo di insegnanti durante il laboratorio: “La robotica tra i banchi di scuola: da BBC micro:bit ad Arduino”, attività che si svolgerà in occasione dell’evento organizzato dall’USR Piemonte: “La scuola europea del domani: le nuove tecnologie e i nuovi spazi di apprendimento ” venerdì 18 maggio 2018 presso l’Aula Magna LC M. d’Azeglio – via Parini 8 – Torino.

Spero poter regalare questa nuova piattaforma robotica al più presto in modo che possa essere usata da chi vorrà dal prossimo anno scolastico in attività di #Coding e #robotica

Buon Coding a tutti 🙂

Un’anteprima di alcuni dettagli del kit