""" ============================================================================= 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 (la matrice étant posée comme dans la vitrine : debout si ROTATION = 90) Sinon : changez INVERSER_X / INVERSER_Y (ou ROTATION) 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()