Bonjour,
Joli projet et bravo pour avoir eu la patience de souder les 60 leds 
A titre personnel, j’ai un Rpi 3B+ équipé d’un module Sense Hat qui affiche les infos des capteurs, le tout écrit en Python. Le module comprend une matrice 64 leds est des capteurs de température, humidité, pression atmosphérique, humidité, accéléromètre, gyroscope.
Le code affiche un message de bienvenu au démarrage, les infos des capteurs et une animation « arc en ciel ». Le programme tourne en boucle infinie.
Vous pouvez paramétrer la couleur des leds en fonction de la température.
Une vidéo de démonstration : sensehat - YouTube
Le code à adapter selon votre application :
# On importe les librairies nécessaires.
from sense_hat import SenseHat
from random import randint
import time
import psutil
from time import localtime, strftime
#sense.set_rotation(180) #pour changer l’angle d’affichage
sense = SenseHat()
#On définit des couleurs
green = (89, 166, 89)
red = (255, 0, 0)
blue = (179, 217, 255)
blue1 = (0, 115, 230)
blue2 = (38, 38, 115)
yellow = (255, 255, 0)
white = (255, 255, 255)
none = (0, 0, 0)
orange = (255, 255, 153)
orange1 = (255,69,0)
#On affiche un message de démarrage
sense.show_message(« Bonjour », text_colour=blue, back_colour=none, scroll_speed=0.08)
sense.show_message(« :) », text_colour=blue, back_colour=none, scroll_speed=0.08)
sense.show_message(« Bienvenue sur… », text_colour=blue, back_colour=none, scroll_speed=0.08)
sense.show_message(« Sense Hat ! », text_colour=blue, back_colour=none, scroll_speed=0.08)
#On lance une boucle infinie pour faire notre script
while True :
# On réalise une animation random
for i in range (0,400) :
x = randint(0, 7)
y = randint(0, 7)
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
sense.set_pixel(x, y, r, g, b)
time.sleep(0.02)
for i in range (0, 1):
#On lit les valeurs différents capteurs
humidity = sense.get_humidity()
#print("Humidity: %s %%H" % humidity)
sense_pressure = sense.get_pressure()
#print("Pressure: %s Millibars" % sense_pressure)
temp1 = sense.get_temperature_from_humidity()
#print("Temperature1: %sC" % temp1)
temp2 = sense.get_temperature_from_pressure()
#print("Temperature2: %sC" % temp2)
temp3 = (((temp1 + temp2)/2)-11)
#print("Temperature3: %sC" % temp3)
cpu_pc = psutil.cpu_percent()
#print cpu_pc
cpu_temp = round(int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3,1)
#print cpu_temp
#En fonction de la température lue, on change la couleur d'écriture
if temp3 < 10 :
#print "cas 1"
color = white
elif temp3 >= 10 and temp3 < 16 :
#print "cas 2"
color = blue
elif temp3 >= 16 and temp3 < 28 :
#print "cas 3"
color = yellow
elif temp3 >= 28 and temp3 < 30 :
#print "cas 4"
color = orange
elif temp3 >= 30 and temp3 < 35 :
#print "cas 5"
color = orange1
elif temp3 >= 35 :
#print "cas 5"
color = red
#On affiche les valeurs des capteurs sur la matrice
sense.show_message("T:%dC" % temp3, text_colour=color, scroll_speed=0.1)
sense.show_message("P:%dMbars" % sense_pressure, text_colour=color, scroll_speed=0.1)
sense.show_message("H:%d%%" % humidity, text_colour=color, scroll_speed=0.1)
sense.show_message("CPU Temp %sC" % cpu_temp, text_colour=color, scroll_speed=0.1)
#sense.show_message("CPU Load %s" % cpu_pc, text_colour=color, scroll_speed=0.08)
#sense.show_message("CPU Temp %sC" % cpu_temp, text_colour=color, scroll_speed=0.08)
#sense.show_message("Free Ram %s" % mem_avail_mb, text_colour=color, scroll_speed=0.08)
time.sleep(1)
#On réalise une animation arc-en-ciel pour finir
pixels = [
[255, 0, 0], [255, 0, 0], [255, 87, 0], [255, 196, 0], [205, 255, 0], [95, 255, 0], [0, 255, 13], [0, 255, 122],
[255, 0, 0], [255, 96, 0], [255, 205, 0], [196, 255, 0], [87, 255, 0], [0, 255, 22], [0, 255, 131], [0, 255, 240],
[255, 105, 0], [255, 214, 0], [187, 255, 0], [78, 255, 0], [0, 255, 30], [0, 255, 140], [0, 255, 248], [0, 152, 255],
[255, 223, 0], [178, 255, 0], [70, 255, 0], [0, 255, 40], [0, 255, 148], [0, 253, 255], [0, 144, 255], [0, 34, 255],
[170, 255, 0], [61, 255, 0], [0, 255, 48], [0, 255, 157], [0, 243, 255], [0, 134, 255], [0, 26, 255], [83, 0, 255],
[52, 255, 0], [0, 255, 57], [0, 255, 166], [0, 235, 255], [0, 126, 255], [0, 17, 255], [92, 0, 255], [201, 0, 255],
[0, 255, 66], [0, 255, 174], [0, 226, 255], [0, 117, 255], [0, 8, 255], [100, 0, 255], [210, 0, 255], [255, 0, 192],
[0, 255, 183], [0, 217, 255], [0, 109, 255], [0, 0, 255], [110, 0, 255], [218, 0, 255], [255, 0, 183], [255, 0, 74]
]
msleep = lambda x: time.sleep(x / 1000.0)
def next_colour(pix):
r = pix[0]
g = pix[1]
b = pix[2]
if (r == 255 and g < 255 and b == 0):
g += 1
if (g == 255 and r > 0 and b == 0):
r -= 1
if (g == 255 and b < 255 and r == 0):
b += 1
if (b == 255 and g > 0 and r == 0):
g -= 1
if (b == 255 and r < 255 and g == 0):
r += 1
if (r == 255 and b > 0 and g == 0):
b -= 1
pix[0] = r
pix[1] = g
pix[2] = b
for i in range (0,2500):
for pix in pixels:
next_colour(pix)
sense.set_pixels(pixels)
msleep(1)