Archivi categoria: programmazione

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

MicroPython è in grado di gestire la griglia di LED 5×5 (LED: light emitting diodes le lucine che si accendono sulla parte anteriore della scheda), inoltre permette il controllo sul display per creare una serie di effetti interessanti.

MicroPython è dotato di molte immagini incorporate che possono essere mostrate sul display. Ad esempio per mostrare un viso felice sul display potete digitare:

from microbit import *
display.show(Image.HAPPY)

Sicuramente ricorderete dalla lezione precedente cosa fa la prima linea. La seconda riga utilizza l’oggetto display  con il metodo show  per visualizzazione l’immagine incorporata di un viso felice chiamata HAPPY. Ciò che vogliamo mostrare è inserito tra parentesi tonde: ((  e ) ).

Ciò che segue è una lista di immagini incorporate all’interno di MicroPython che potete utilizzare all’interno dei vostri programmi:

Image.HEART
Image.HEART_SMALL
Image.HAPPY
Image.SMILE
Image.SAD
Image.CONFUSED
Image.ANGRY
Image.ASLEEP
Image.SURPRISED
Image.SILLY
Image.FABULOUS
Image.MEH
Image.YES
Image.NO
Image.CLOCK12, Image.CLOCK11, Image.CLOCK10, Image.CLOCK9, Image.CLOCK8, Image.CLOCK7, Image.CLOCK6, Image.CLOCK5, Image.CLOCK4, Image.CLOCK3, Image.CLOCK2, Image.CLOCK1
Image.ARROW_N, Image.ARROW_NE, Image.ARROW_E, Image.ARROW_SE, Image.ARROW_S, Image.ARROW_SW, Image.ARROW_W, Image.ARROW_NW
Image.TRIANGLE
Image.TRIANGLE_LEFT
Image.CHESSBOARD
Image.DIAMOND
Image.DIAMOND_SMALL
Image.SQUARE
Image.SQUARE_SMALL
Image.RABBIT
Image.COW
Image.MUSIC_CROTCHET
Image.MUSIC_QUAVER
Image.MUSIC_QUAVERS
Image.PITCHFORK
Image.XMAS
Image.PACMAN
Image.TARGET
Image.TSHIRT
Image.ROLLERSKATE
Image.DUCK
Image.HOUSE
Image.TORTOISE
Image.BUTTERFLY
Image.STICKFIGURE
Image.GHOST
Image.SWORD
Image.GIRAFFE
Image.SKULL
Image.UMBRELLA
Image.SNAKE

Sono tantissime! Provate a modificare il codice che visualizza un viso felice, è sufficiente sostituire Image.HAPPY  con una delle immagini incorporate nell’elenco sopra indicato.

 Gestire i pixel

Potete impostare la luminosità di uno specifico LED sul display utilizzando il metodo set_pixel :

from microbit import *

display.set_pixel(1,2,9)

Ricordando che la coordinata 0, 0 specifica il LED che si trova in alto a sinistra, l’istruzione indicata nel codice sopra, imposta il LED in colonna 1 e riga 2  con luminosità 9 . La luminosità può assumere un valore compreso tra 0 e 9, con 0 indichiamo spegnimento del LED e 9 massima luminosità del LED.

Allo stesso modo nel caso in cui desiderate accendere alla massima luminosità il LED che si trova in basso a sinistra, l’istruzione da utilizzare sarà:

from microbit import *

display.set_pixel(0,4,9)

Per l’accensione del LED che si trova in alto a sinistra:

from microbit import *

display.set_pixel(0,0,9)

Vediamo ora come accendere tutti i LED alla massima luminosità:

Potete utilizzare un ciclo for , così come indicato nel programma che segue:

from microbit import *

display.clear()
for x in range(0, 5):
    for y in range(0, 5):
        display.set_pixel(x,y,9)

Il ciclo for  esegue le istruzioni in esso contenuto per un numero di volte specificato, nel nostro caso nell’intervallo da   0   a 5, questa operazione viene eseguita con la funzione  range(0,5)  che restituisce la lista di interi da 0   a 4  escludendo il massimo, in questo caso il valore 5:

for x in range(0,5)

il ciclo for  sarà eseguito 5 volte, ogni volta la variabile x sarà sostituita dai valori che vanno   0   a 4  (5 valori). Si uscirà dal loop quando sarà raggiunto il valore finale dell’intervallo.

All’interno del primo for  troviamo un secondo ciclo:

for y in range(0,5):

Anche in questo caso il ciclo sarà eseguito 5 volte e la variabile y  sarà sostituita dai 5 valori da 0   a 4  . Si uscirà dal loop quando sarà raggiunto il valore finale dell’intervallo.

Vediamo ora come accendere e spegnere l’intera matrice di LED:

from microbit import *

# accensione e spegnimento di tutta la matrice di led
# dall'alto verso il basso partendo dal LED in alto a sinistra
# di coordinate (0, 0)

display.clear()
for x in range(0, 5):
    for y in range(0, 5):
        display.set_pixel(x,y,9)
        sleep(100)
for x in range(0,5):
    for y in range(0, 5):
        display.set_pixel(x,y,0)
        sleep(100)

Si noti che l’azione di spegnimento è simile a quella dell’accensione dove l’unica differenza risiede nell’istruzione: display.set_pixel(x,y,0) in cui impostiamo la luminosità a 0  .

Vediamo ora come effettuare l’accensione del display partendo dal LED situato in basso a destra alle coordinate (5, 5):

from microbit import *

# accensione e spegnimento dei LED partendo in modo orizzontale
# dal LED in posizione (5, 5) spostandosi per righe
# da destra verso sinistra

# Poiche' la funzione range restituisce una serie di valori da un
# valore minimo a un valore massimo per effettuare un decremento
# dell'indice si utilizzano le operazioni: y=4-y e x=4-x

display.clear()

for y in range(0, 5):
    y=4-y
    for x in range(0, 5):
        x=4-x
        display.set_pixel(x,y,9)
        sleep(100)

for y in range(0, 5):
    y=4-y
    for x in range(0, 5):
        x=4-x
        display.set_pixel(x,y,0)
        sleep(100)

display.clear()

Poichè la funzione range restituisce una serie di valori da un valore minimo a un valore massimo, per effettuare un decremento dell’indice si utilizzano le operazioni: y=4-y e x=4-x

Vedremo nella lezione successiva come realizzare dei cicli infiniti per realizzare giochi di luce accendendo e spegnendo i LED in modo sequenziale.

Creiamo le nostre immagini

Volete creare un’immagine personalizzata da visualizzare sul display del micro:bit?
E’ molto semplice.

La luminosità di ogni LED sul display, così come detto ad inizio lezione, può essere impostata con un valore da spento  ( 0 )  a luminosità massima  (9).

from microbit import *

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

display.show(luce)

Quando il programma è in esecuzione il dispositivo visualizza un’immagine circolare con i LED con diversa intensità luminosa:

Sicuramente avrete notato che ogni riga del display fisico è rappresentato da una linea di numeri che terminano con :  il tutto racchiuso tra doppie virgolette

Ogni numero rappresenta la luminosità del LED a cui fa riferimento, quindi potrete specificare la luminosità per ogni LED.

Tutto molto semplice! 🙂

In realtà, non è necessario scrivere su più righe il comando per l’accensione dei LED, potete scrivere tutto su una linea sola:

luce = Image(“09590:93339:93039:93339:09590”)

Buon Coding a tutti 🙂

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

Da diverso tempo mi sto occupando di didattica con BBC micro:bit, una splendida scheda elettronica progettata appositamente per fare Coding a scuola, ben si adatta per studenti di scuola elementare, media e primi anni delle superiori. Su questo sito come saprete ho raccolto in una sezione specifica lezioni e sperimentazioni. Recentemente è stato aggiunto a Scratch, come segnalato in qualche tempo fa, il supporto a micro:bit quindi a livello didattico si potrebbero implementare percorsi interessanti che partono da Scratch, passano per JavaScript Blocks Editor per poi giungere a MicroPython.

Dal mio punto di vista MicroPython è il trampolino di lancio che mi permetterà di aggiungere sperimentazioni di automazione con microcontrollori, un modo naturale per realizzare continuità dal secondo anno dell’ITIS al terzo/quarto anno poi. Ovviamente non solo MicroPython, tanto C anche con Arduino, ma è essenziale per me aggiungere anche questa competenza.

MicroPython è una reinterpretazione di Python 3 per microcontrollori e sistemi embedded, inoltre Python è uno dei linguaggi di programmazione più belli, ottimo per la didattica ed averlo anche su sistemi elettronici rende incredibilmente divertente ed efficiente lo sviluppo di sistemi di controllo.

Per seguire queste brevi lezioni non bisogna essere professionisti nella programmazione di Python (anche io non programmo spesso in questo linguaggio) il percorso parte da un livello 0. Il mio obiettivo è quello di fornire uno strumento che poi invogli alla sperimentazione.

La documentazione è pensata per studenti ed insegnanti di ogni ordine e grado.

MicroPython non vuol dire solo micro:bit ma anche PyBoard, ESP8266/ESP 32 e molto altro.

Pertanto ho pensato di realizzare, nel limite del tempo didattico che posso dedicare a queste piattaforme un corso introduttivo, didascalico e spero semplice. Ciò che scriverò sarà indirizzato all’uso di micro:bit, ma con qualche impostazione iniziale, tutto si adatta benissimo anche alle altre piattaforme.

Da dove incominciare?

Nei link indicati sopra trovate i riferimenti essenziali, ma un libro fondamentale è: Programming with MicroPython – by Nicholas Tollervey and pyboard lite il link rimanda ad amazon.it, l’acquisto può essere fatto anche con la 18app o con la carta del docente.

Tutto il percorso si basa sull’ottimo lavoro realizzato da Mike Rowbitt con First Steps with MicroPython ne ho fatto in parte una traduzione ed in parte ho aggiunto altri argomenti ed esercizi.

Per essere informati sulle nuove versioni del manuale in lingua inglese sviluppato da Mike Rowbitt potete iscrivervi alla mailing list: microbit@python.org
(https://mail.python.org/mailman/listinfo/microbit).

Le mie lezioni sono in costruzione, conto di pubblicare almeno un paio di guide alla settimana in modo che per chi vorrà potrà prendere questi appunti reinterpretarli secondo le proprie necessità e realizzare un percorso nella seconda parte dell’anno scolastico.

I progetti e gli esercizi sviluppati in MicroPython su BBC micro:bit fanno uso di:

Mu – un semplice editor di codice, credo che sia il modo più semplice per incominciare a programmare in MicroPython su BBC micro:bit.

Vi invito quindi a scaricare l’editor “mu” per poter lavorare con le lezioni proposte.

Tutte le istruzioni per il download e l’installazione potete trovarle sul sito di riferimento, sono ben fatte e di facile comprensione.

Mu funziona con Windows, OSX and Linux (anche Raspberry Pi).

L’ultima versione di Mu vi permette di selezionare mediante il pulsante “Modes” la modalità di programmazione in funzione della piattaforma: Adafruit CircuitPython, BBC micro:bit, Pygame Zero, Python 3.

Una volta installato Mu selezionate il modo micro:bit, collegate il vostro micro:bit al computer tramite un cavo USB.

Il processo di scrittura è upload su micro:bit richiede pochi passaggi:

  • scrivete il vostro script nella finestra dell’editor
  • fate click sul pulsante “Flash” per trasferire il programma sul micro:bit.
  • se il trasferimento non avviene, assicurati che il vostro micro:bit appaia come periferica USB nel vostro file system.

Faremo queste operazioni tra breve scrivendo un semplicissimo programma.

Prima di andare oltre un richiamo sulle caratteristiche del micro:bit riprese dal corso introduttivo che trovate su questo sito.

La scheda BBC micro:bit è costituita da:

  • 25 LED rossi che possono essere utilizzati per comporre un testo o una icona stilizzata.
  • Due pulsanti programmabili (A e B) che possono essere utilizzati per dire a micro:bit quando si avvia o si interrompe un’operazione.
  • Un sensore di temperatura per rilevare la temperatura ambiente.
  • Un sensore di luce per rilevare le variazioni di luminosità ambientale.
  • Un accelerometro per rilevare un movimento.
  • Un magnetometro per rilevare la direzione del campo magnetico.
  • Connessione Radio e Bluetooth Low Energy per interagire con altri device.

Il primo programma – “Hello World!”

E’ possibile pensare al Coding con micro:bit come ad un ciclo costituito fa 4 fasi:

Il modo tradizionale per iniziare a programmare in una nuova lingua di programmazione è quello di far dire al computer “Hello, World!”.

Fare questo è semplice in MicroPython:

from microbit import *
display.scroll("Hello, World!")

Analizziamo le due linee di codice.

La prima linea:

from microbit import *

Nella prima riga viene richiesto a MicroPython tutto il materiale (codice) necessario per lavorare con micro:bit. Il codice richiesto è un modulo chiamato microbit  (un modulo è una libreria di codice preesistente). Quando fate l’import  (importate qualcosa), state dicendo a MicroPython che volete usarlo, “*” è il modo in cui Python dice tutto.
Quindi from microbit import *  significa, in inglese, “Voglio poter usare tutto ciò che è disponibile dalla libreria di codici microbit”.

Seconda linea:

display.scroll(“Hello, World!”)

dice a MicroPython di usare il display per far scorrere la stringa di caratteri.

La parte di codice display  permette la visualizzazione del testo Hello, World!  .

display  è un oggetto dal modulo microbit che rappresenta la visualizzazione fisica del testo “Hello, World!” sul dispositivo.

La parte di codice indicata con display  è un object (oggetto) del modulo microbit  che rappresenta il display fisico. Possiamo dire al display di eseguire l’operazione indicata fino al .  dopo il .  è presente qualcosa di molto simile ad un comando (che chiameremo metodo). In questo caso stiamo usando il metodo scroll  (scorrimento). Poiché scroll  ha necessità di sapere quali caratteri far scorrere sul display fisico, questi saranno specificati tra doppie virgolette () tra parentesi ( (  e )  ). Tutto ciò che è tra parentesi e tra le virgolette prende il nome di argomento. Quindi, display.scroll(“Hello, World!”)   significa, in inglese, “Voglio che tu usi il display per far scorrere il testo ‘Hello, World!'”. Se un metodo non ha bisogno di argomenti non inseriremo nulla tra parentesi: ()  .

Copiate all’interno dell’editor il codice “Hello, World!” ed eseguite l’upload sul vostro BBC micro:bit.

Siete in grado di capire come cambiare messaggio?

Potete farlo salutare? Ad esempio, potreste far dire “Ciao, Michele!”.
Suggerimento: è necessario modificare l’argomento del metodo di scroll. 🙂

Avvertimento

Potrebbe non funzionare 🙂

Nel caso in cui venga commesso un errore MicroPython ci viene in aiuto, in questo caso scorrerà sul display del micro:bit un messaggio di errore, sempre sul display apparirà il numero della linea di codice in cui è presente l’errore.

Python si aspetta che voi digitiate ESATTAMENTE il codice. Quindi, ad esempio l’istanza, Microbit  , microbit  e microBit  sono tutte cose diverse per Python. Se MicroPython restituisce un errore NameError  , probabilmente avete digitato qualcosa in modo non corretto.

Se MicroPython restituisce un SyntaxError  probabilmente avete scritto qualcosa che MicroPython non riesce a capire. Verificate che non manchino ad esempio i caratteri speciali   o :  .

Usiamo Mu

Colleghiamo il micro:bit al computer:

Utilizziamo Mu per codificare:

Un click sul pulsante Repl per estendere la finiestra di editing e visualizzare l’area in cui vengono mostrati i messaggi inviati dal micro:bit

Per trasferire il programma sul micro:bit click sul pulsante “Flash”:

Durante la fase di trasferimento del programma il led giallo di stato incomincia a lampeggiare al termine il micro:bit verrà disconnesso dal computer ed immediatamente il programma incomincerà a funzionare:

Nel caso in cui nel vostro programma sia presente un errore, nella parte bassa della finestra di editing vi verrà restituito un messaggio che indica il tipo di errore. Usando il comando help() potrete consultare una guida che vi aiuterà a risolvere il problema.

Nel caso di errore sul display del micro:bit apparirà il messaggio di errore.

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 🙂

Compatibilità motori e sensori NXT su Lego Mindstorms EV3

Posseggo diversi brick NXT ma come saprete programmarli con l’ambiente di sviluppo Lego ufficiale non è più possibile a meno che non si utilizzano altri ambienti di sviluppo su cui poter programmare questi mattoncini in C o in Python, ve ne parlerò in un prossimo post.
La bella notizia, per me, è che sia i motori che i sensori, ma anche i cavi del vecchio set NXT sono assolutamente compatibili con il brick EV3.
Non è però possibile collegare i nuovi sensori EV3 al mattoncino NXT.

Potrete collegare tutti i motori e i sensori LEGO NXT e NXT2 ufficiali di Lego al brick EV3.

Ad esempio, è possibile avere una configurazione con Touch Sensor NXT, un motore NXT e due motorie EV3, tutti collegati al brick EV3, così come mostrato nell’immagine e nel video che segue.

Per quanto riguarda la programmazione all’interno dell’ambiente di sviluppo ufficiale Lego nessun problema con motori e sensori NXT tutto funziona correttamente.

I due motori hanno circa le stesse dimensioni, però ad un esame più attento, i due motori richiedono procedure di montaggio diverse. Il motore NXT ha tutti i fori arrotondati, mentre i collegamenti del motore EV3 hanno fori arrotondati e trasversali. Il motore EV3 ha anche una fila aggiuntiva di tre fori vicino al connettore elettrico e ciò lo rende più versatile. I fori del motore EV3 sono molto più bassi e alcuni sono addirittura spostati su un lato.

Bene detto ciò, riapro le vecchie scatole e parto con il Coding su Lego.

Buon Making a tutti 🙂

MakeCode per LEGO MINDSTORMS Education EV3

E’ da qualche tempo che ho ripreso ad utilizzare Lego Mindstorms, come sapete molte delle mie attività di didattica della robotica le incominciai con NXT e poi NXT 2. In questo periodo sto svolgendo un’attività lavorativa in cui devo utilizzare l’EV3 e in queste nottate 🙂 sto realizzando sperimentazioni e tutorial. Dirvi che mi sto divertendo ad usare questo oggetto di “tecnologia didattica” è scontato, usare l’ambiente di programmazione grafico di Lego oltre che piacevole è semplicissimo.
Da tempo utilizzo BBC micro:bit di cui ho apprezzato tantissimo l’interfaccia di programmazione grafica a blocchi, che ben si adatta ad ogni livello di studio.

Da qualche tempo MakeCode di Microsoft ha reso disponibile in versione beta il supporto a Lego Mindstorms EV3, in questo modo potrete ritrovare la stessa interfaccia grafica di programmazione a blocchi drag-and-drop che avete per l’ambiente di sviluppo di BBC micro:bit, in questo modo potrete costruire lezioni usando tecnologie diverse ma un ambiente di sviluppo praticamente identico.

Per la programmazione dell’EV3, così come accade per micro:bit, non sarà necessario installare nessun software sul proprio computer, avrete bisogno solamente di una connessione internet, un browser per accedere all’ambiente di sviluppo online e di una connessione USB tra il vostro computer e l’EV3.

All’interno dell’ambiente di programmazione troverete una serie di blocchi che vi permetteranno di visualizzare immagini e disegni sullo schermo

E’ stata semplificata la visualizzazione dei sensori e la visualizzazione dei valori dei sensori sullo schermo dell’EV3.

Per chi programma con l’ambiente grafico ufficiale di Lego avrà notato che spesso risulta difficoltoso orientarsi tra le molte opzioni dei vari blocchi, con l’ambiente di MakeCode la navigazione tra le varie opzioni risulta decisamente più semplice.

Alcuni esempi

Assegnazione a sensori e motori porte differenti

Tipologia di motore da usare

Valore assegnato alla sterzata

Selezione dell’effetto sonoro, di cui potete averne un’anteprima passando con il puntatore del mouse sull’audio scelto

Interessante anche la modalità con cui è possibile commentare il codice e mantenere ordinati anche i commenti, ad ogni blocco infatti è possibile associare qualcosa di molto simile ad un post-it.

Probabilmente la cosa più interessante di tutte è quella di poter utilizzare il simulatore EVO LEGO MINDSTORMS Education che fornisce un feedback immediato del programma realizzato, quindi un buon modo per effettuare il debug di programmi, in questo modo gli studenti potranno modificare i valori di input del sensore, vedere come si comportano i motori e visualizzare le informazioni sullo schermo.

Naturalmente, così come accade per micro:bit anche con MakeCode per EVO LEGO MINDSTORMS Education è possibile passare da una modalità di programmazione grafica a blocchi a quella mediante editor JavaScript in questo modo studenti con maggiori competenze informatiche potranno realizzare blocchi personalizzati.

Numerosi sono gli esempi di programmazione disponibili sulla piattaforma MakeCode per LEGO MINDSTORMS Education EV3, tutte le esercitazioni forniscono indicazioni dettagliate su come utilizzare ciascun sensore o motore, mentre i progetti contengono istruzioni complete sulla codifica e sulla creazione dei robot

Per iniziare con MakeCode per LEGO MINDSTORMS Education EV3, avrete bisogno di:

  • Un computer con una porta USB e accesso a Internet tramite un browser
  • Il set di base EV3 Education LEGO MINDSTORMS
  • Attenzione che per utilizzare questa modalità di programmazione bisognerà aggiornare il firmware dell’EV3, seguendo le istruzioni che trovate a questo link: makecode.mindstorms.com

Buon coding a tutti 🙂