86 lines
3.0 KiB
Python
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()
|