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 🙂