RPi SenseHat python è uno degli esercizi che hanno eseguito gli allievi del corso Raspberry Pi for beginner organizzato la scorsa settimana e di cui sono stato il docente.
Durante un corso raspberry puro è difficile trovare delle eservitazioni che siano al contempo formative e divertenti per i partecipanti in quanto la maggior parte delle nozioni che apprendi sono sistemistiche.
Poi è richiesta una base di programmazione python che non tutti hanno ed insegnarla in 3 giorni insieme a tutte le altre informazioni su un sistema operativo come Linux è sempre complesso.
Tuttavia mi stupisce sempre l’impegno di ciascun partecipante e la fantasia che impegna.
RPi SenseHat python
in questa sessione di corso ho dedicato 3 ore alla programmazione python partendo dal presupposto che nessuno degli allievi avesse mai usato questo linguaggio.
Nel tempo dedicato all’argomento ho anche mostrato loro il simulatore presente su raspbian e la shield reale SenseHat chiedendo di immaginarsi un progetto e realizzarlo.
Poche ore dopo avevano realizzato tanti progetti interessanti, tra cui:
- videochat ( senza audio )
- rendering di una icona ( facebook ) su matrice di led
- semplice centralina di temperatura con visualizzazione dello stato mediante icona
In particolare gli ultimi due progetti te li racconto, a nome degli allievi, in questo articolo.
Rendering di una icona ( facebook ) su matrice di led
il rendering di una icona è stato tra i primi progetti che ho visto realizzare ai ragazzi che si sono impegnati non solo sul fronte raspberry ma anche grafico, hanno ridotto l’icona FB, presa dal noto social network, ad una icona 8×8 pixel essendo la matrice di led di tali dimensioni:
poi hanno scritto il codice seguente:
from sense_hat import SenseHat sense = SenseHat() sense.clear() sense.load_image("facebook-on2.png")
in cui la prima linea include la libreria SenseHat come hai già letto in miei precedenti articoli;
linee 03-04: la prima inizializza l’istanza sense della classe SenseHat() e la seconda pulisce la matrice di led, li spegne tutti, in vista del rendering seguente;
linea 05: carichi l’immagine denominata “facebook-on2.png” e la passi alla matrice di led mediante il metodo load_image;
Il risultato è il segunete:
colgo l’occasione di questo esperimento per invitarti a seguire la mia pagina FB.
Semplice centralina di temperatura con visualizzazione dello stato mediante icona
Il secondo esempio RPi SenseHat python che un gruppo di ragazzi ha realizzato è stata la centralina di rilevazione temperatura con visualizzazione ad icone.
In pratica non mostra la temperatura come indice numerico ma mediante due icone che ti raccontano se la temperatura rilavata è piacevole o insopportabile.
Puoi far evolvere il progetto aggiungendo altri gli stati intermedi con cui raccontare la condizione delle temperature rilavate.
L’icona per la temperatura elevata è la seguente:
mentre quella disegnata per una temperatura piacevole potrebbe essere:
stabilita la soglia di cambio dell’icona tra la prima e la seconda a circa 20° ecco il codice:
from sense_hat import SenseHat sense = SenseHat() sense.clear() temp = sense.get_temperature() tempThreshold = 20 print("Temperature: %s C" % temp) r = [255, 0, 0] o = [255, 127, 0] y = [255, 255, 0] g = [0, 255, 0] b = [0, 0, 255] i = [75, 0, 130] v = [159, 0, 255] e = [0, 0, 0] # questo significa led completamente spento if temp<tempThreshold: print("Si sta bene!") image = [ e,e,e,e,e,e,e,e, e,e,y,y,y,y,e,e, e,y,e,y,y,e,y,e, y,y,y,y,y,y,y,y, y,y,y,y,y,y,y,y, e,y,e,e,e,e,y,e, e,e,y,y,y,y,e,e, e,e,e,e,e,e,e,e ] if temp>tempThreshold: print("si sta male!") image = [ e,e,e,e,e,e,e,e, e,e,y,y,y,y,e,e, e,y,e,y,y,e,y,e, y,y,y,y,y,y,y,y, y,y,y,y,y,y,y,y, e,y,e,e,r,r,y,e, e,e,y,y,r,r,e,e, e,e,e,e,e,e,e,e ]
hai notato che nel codice di questo secondo esempio della RPi SenseHat python le icone non sono state caricate mediante il metodo load_image ma disegnate come immagini direttamente sulla matrice.
Le prime 3 linee sono identiche a quelle precedenti;
linea 06: usando il metodo get_temperature() della libreria SenseHat ricevi e salvi nella variabile temp il valore di temperatura rilavato;
linea 07: imposti la soglia di variazione della temperatura a 20°C;
linee 10-17: imposti i colori per le variabili r,o,y,g,b,i,v,e;
linea 19: se la temperatura rilevata è inferiore alla soglia imposti image in modo che visualizzi sulla matrice l’icona smile;
linea 32: in caso di temperatura superiore alla soglia le linee 34-43 ti servono a mostrare l’icona che ti comunica di aver raggiunto una temperatura elevata.
Un GRAZIE speciale ai ragazzi che hanno partecipato al corso e condiviso le proprie idee e conoscenze acquisite.