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 🙂

Questa voce è stata pubblicata in i miei allievi, programmazione e contrassegnata con , , , . Contrassegna il permalink.

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.