Files
vitrine-pixels/8x32 PI/test_matrice.py
T
2026-10-08 15:25:14 +02:00

86 lines
3.0 KiB
Python

"""
=============================================================================
TEST DE LA MATRICE — branchement, orientation, alimentation
Workshop « Vitrine pixels »
=============================================================================
À lancer EN PREMIER, après chaque nouveau montage :
sudo ~/vitrine-env/bin/python test_matrice.py
(ou, pour voir à quoi ça ressemble sans matériel :
python3 test_matrice.py --simulateur)
Trois tests s'enchaînent, puis tout s'éteint :
1. LES COINS : un pixel de couleur dans chaque coin, 5 secondes.
ROUGE en haut à gauche VERT en haut à droite
BLEU en bas à gauche BLANC en bas à droite
Sinon : changez INVERSER_X / INVERSER_Y dans matrice.py.
2. L'ORDRE DE LA CHAÎNE : un point orange parcourt les 256 LED
dans l'ordre où le signal les traverse. On voit le serpentin.
Si le point s'arrête en route : une LED ou une soudure est abîmée
à cet endroit (tout ce qui suit reste éteint).
3. LES COULEURS PLEINES : tout en rouge, puis vert, puis bleu, puis
blanc. Vérifie l'ordre des couleurs (GRB) et l'alimentation.
Le blanc est le plus gourmand : si la matrice devient orangée ou
clignote, l'alimentation est à sa limite (voir README, partie 10).
"""
import matrice
from matrice import LARGEUR, HAUTEUR, NB_LEDS, ROUGE, VERT, BLEU, BLANC, ORANGE
def test_coins():
print("1. Test des coins : rouge ↖ vert ↗ bleu ↙ blanc ↘")
matrice.effacer()
matrice.pixel(0, 0, ROUGE)
matrice.pixel(LARGEUR - 1, 0, VERT)
matrice.pixel(0, HAUTEUR - 1, BLEU)
matrice.pixel(LARGEUR - 1, HAUTEUR - 1, BLANC)
matrice.montrer()
matrice.attendre(5000)
def test_ordre_des_leds():
print("2. Ordre de la chaîne : le point orange suit le serpentin")
# Pour suivre l'ordre de la CHAÎNE (et pas l'ordre des coordonnées),
# on cherche, pour chaque numéro de LED, la position (x, y) qui lui
# correspond grâce à XY().
position = {}
for x in range(LARGEUR):
for y in range(HAUTEUR):
position[matrice.XY(x, y)] = (x, y)
matrice.effacer()
for numero in range(NB_LEDS):
x, y = position[numero]
matrice.pixel(x, y, ORANGE) # la tête du serpent
matrice.montrer()
matrice.pixel(x, y, (60, 20, 0)) # laisse une trace plus sombre
matrice.attendre(15)
matrice.attendre(1000)
def test_couleurs_pleines():
print("3. Couleurs pleines : rouge, vert, bleu, blanc")
for nom, couleur in [("rouge", ROUGE), ("vert", VERT), ("bleu", BLEU), ("blanc", BLANC)]:
print(" tout en", nom)
matrice.effacer(couleur)
matrice.montrer()
matrice.attendre(2000)
if __name__ == "__main__":
matrice.demarrer()
try:
test_coins()
test_ordre_des_leds()
test_couleurs_pleines()
print("Terminé.")
except KeyboardInterrupt:
print("\nArrêt demandé.")
finally:
matrice.eteindre()