8x32 PI : interface web, matrice verticale, compatibilité Raspbian 11
- Interface web (serveur_web.py, Flask, gabarits dans web/) : dépôt de GIF, PNG animés et séquences de PNG, aperçus animés, ordre de lecture, activer / désactiver, corbeille, « jouer maintenant » et « suivante ». Service systemd vitrine-web, activé par installer.sh. - Lecteur : réagit aux demandes de la page web (post-it dans /run/vitrine-pixels), écrit l'animation en cours, éteint la matrice proprement sur SIGTERM. - Matrice posée debout : réglage ROTATION (90 = image 8 × 32) dans matrice.py ; images couchées tournées automatiquement ; exemples, animations codées, aperçus et page web adaptés au format vertical. - Compatibilité Raspbian 11 Bullseye : partition /boot, Pillow 8.1, Flask 1.1. - Doc : nouveau guide INTERFACE_WEB.md ; README, GUIDE_KRITA, MODE_VITRINE, CODER_EN_PYTHON mis à jour (format 8 × 32, adresses Wi-Fi / câble du Pi). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+32
-20
@@ -67,8 +67,8 @@ def anim_arc_en_ciel():
|
||||
for temps in range(256):
|
||||
for x in range(LARGEUR):
|
||||
for y in range(HAUTEUR):
|
||||
# La teinte dépend de la colonne et du temps qui passe.
|
||||
pixel(x, y, teinte(x * 8 + temps * 2))
|
||||
# La teinte dépend de la position et du temps qui passe.
|
||||
pixel(x, y, teinte((x + y) * 8 + temps * 2))
|
||||
montrer()
|
||||
attendre(20)
|
||||
|
||||
@@ -95,16 +95,16 @@ def anim_pluie():
|
||||
|
||||
|
||||
# --- Animation 3 : un dessin en pixel art qui défile ---
|
||||
# Une lettre par pixel, « . » = éteint. 8 lignes de même longueur.
|
||||
# Une lettre par pixel, « . » = éteint. Toutes les lignes de même longueur,
|
||||
# pas plus de 8 pixels de large ni de haut (le petit côté de la matrice).
|
||||
DESSIN = [
|
||||
"..RR.RR..",
|
||||
".RBRRRRR.",
|
||||
".RRRRRRR.",
|
||||
".RRRRRRR.",
|
||||
"..RRRRR..",
|
||||
"...RRR...",
|
||||
"....R....",
|
||||
".........",
|
||||
".RR..RR.",
|
||||
"RBBRRRRR",
|
||||
"RBRRRRRR",
|
||||
"RRRRRRRR",
|
||||
".RRRRRR.",
|
||||
"..RRRR..",
|
||||
"...RR...",
|
||||
]
|
||||
|
||||
# Un « dictionnaire » associe chaque lettre à une couleur.
|
||||
@@ -114,20 +114,32 @@ COULEUR_DE_LETTRE = {
|
||||
}
|
||||
|
||||
|
||||
def dessiner_dessin(depart_x):
|
||||
def dessiner_dessin(depart_x, depart_y):
|
||||
for y, ligne in enumerate(DESSIN): # enumerate donne le numéro ET la ligne
|
||||
for x, lettre in enumerate(ligne):
|
||||
if lettre in COULEUR_DE_LETTRE:
|
||||
pixel(depart_x + x, y, COULEUR_DE_LETTRE[lettre])
|
||||
pixel(depart_x + x, depart_y + y, COULEUR_DE_LETTRE[lettre])
|
||||
|
||||
|
||||
def anim_dessin_qui_defile():
|
||||
largeur_dessin = len(DESSIN[0]) # len = longueur de la ligne
|
||||
for x in range(LARGEUR, -largeur_dessin - 1, -1):
|
||||
effacer()
|
||||
dessiner_dessin(x)
|
||||
montrer()
|
||||
attendre(70)
|
||||
hauteur_dessin = len(DESSIN) # = nombre de lignes
|
||||
if HAUTEUR > LARGEUR:
|
||||
# Matrice DEBOUT : le dessin monte du bas vers le haut.
|
||||
x = (LARGEUR - largeur_dessin) // 2 # centré
|
||||
for y in range(HAUTEUR, -hauteur_dessin - 1, -1):
|
||||
effacer()
|
||||
dessiner_dessin(x, y)
|
||||
montrer()
|
||||
attendre(70)
|
||||
else:
|
||||
# Matrice COUCHÉE : le dessin passe de droite à gauche.
|
||||
y = (HAUTEUR - hauteur_dessin) // 2
|
||||
for x in range(LARGEUR, -largeur_dessin - 1, -1):
|
||||
effacer()
|
||||
dessiner_dessin(x, y)
|
||||
montrer()
|
||||
attendre(70)
|
||||
|
||||
|
||||
# --- Animation 4 : étincelles ---
|
||||
@@ -144,8 +156,8 @@ def anim_etincelles():
|
||||
def anim_ma_premiere():
|
||||
for x in range(LARGEUR):
|
||||
effacer()
|
||||
pixel(x, 3, JAUNE)
|
||||
pixel(x, 4, JAUNE)
|
||||
pixel(x, HAUTEUR // 2 - 1, JAUNE) # deux points au milieu de la hauteur
|
||||
pixel(x, HAUTEUR // 2, JAUNE)
|
||||
montrer()
|
||||
attendre(50)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user