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:
@@ -100,20 +100,23 @@ grâce à la ligne `from matrice import *`.
|
||||
|
||||
| Outil | Effet |
|
||||
|---|---|
|
||||
| `pixel(x, y, couleur)` | colore le pixel de la colonne `x` (0 à 31) et de la ligne `y` (0 à 7). En dehors : ignoré |
|
||||
| `pixel(x, y, couleur)` | colore le pixel de la colonne `x` (0 à 7) et de la ligne `y` (0 à 31), matrice debout. En dehors : ignoré |
|
||||
| `lire_pixel(x, y)` | renvoie la couleur actuelle d'un pixel |
|
||||
| `effacer()` | éteint toute la toile |
|
||||
| `effacer(couleur)` | remplit toute la toile d'une couleur |
|
||||
| `assombrir(25)` | assombrit toute la toile de 25 % (pour les traînées) |
|
||||
| `montrer()` | **affiche** la toile. Rien n'apparaît tant qu'on ne l'appelle pas ! |
|
||||
| `montrer(image)` | affiche une image Pillow de 32 × 8 (voir partie 5) |
|
||||
| `montrer(image)` | affiche une image Pillow de 8 × 32 (voir partie 5) |
|
||||
| `attendre(100)` | attend 100 millisecondes |
|
||||
| `teinte(t)` | couleur de l'arc-en-ciel : 0 rouge, 32 orange, 64 jaune, 96 vert, 128 cyan, 160 bleu, 192 violet, 224 rose |
|
||||
| `teinte(t, saturation, valeur)` | idem, avec saturation (0 = blanc) et valeur (0 = noir), de 0 à 255 |
|
||||
|
||||
**Couleurs nommées** : `NOIR`, `BLANC`, `ROUGE`, `ORANGE`, `JAUNE`, `VERT`,
|
||||
`CYAN`, `BLEU`, `VIOLET`, `MAGENTA`, `ROSE`.
|
||||
**Dimensions** : `LARGEUR` (32), `HAUTEUR` (8).
|
||||
**Dimensions** : `LARGEUR` (8) et `HAUTEUR` (32) quand la matrice est
|
||||
debout (`ROTATION = 90` dans `matrice.py`) ; 32 et 8 quand elle est couchée.
|
||||
Écrivez vos animations avec `LARGEUR` et `HAUTEUR` plutôt qu'avec des
|
||||
nombres : elles marcheront dans les deux sens.
|
||||
|
||||
Le point `(0, 0)` est **en haut à gauche**, comme dans Krita.
|
||||
|
||||
@@ -181,19 +184,19 @@ utilise Pillow, la bibliothèque d'images :
|
||||
from PIL import Image
|
||||
|
||||
def anim_logo_qui_defile():
|
||||
# Remplacez par le chemin d'une image de 32 × 8 exportée depuis Krita.
|
||||
# Remplacez par le chemin d'une image de 8 × 32 exportée depuis Krita.
|
||||
logo = Image.open("animations/logo.png").convert("RGB")
|
||||
for i in range(100):
|
||||
effacer()
|
||||
# On « colle » le logo deux fois, côte à côte, décalé de i pixels :
|
||||
# ce qui sort à droite rentre à gauche (défilement en boucle).
|
||||
toile.paste(logo, (i % LARGEUR - LARGEUR, 0))
|
||||
toile.paste(logo, (i % LARGEUR, 0))
|
||||
# On « colle » le logo deux fois, l'un au-dessus de l'autre, décalé
|
||||
# de i pixels : ce qui sort en bas rentre en haut (défilement en boucle).
|
||||
toile.paste(logo, (0, i % HAUTEUR - HAUTEUR))
|
||||
toile.paste(logo, (0, i % HAUTEUR))
|
||||
montrer()
|
||||
attendre(60)
|
||||
```
|
||||
|
||||
Ici `toile` est l'image de 32 × 8 sur laquelle dessinent `pixel()` et
|
||||
Ici `toile` est l'image de 8 × 32 sur laquelle dessinent `pixel()` et
|
||||
`effacer()`. Tout ce que sait faire Pillow (coller, retourner, changer les
|
||||
couleurs, écrire du texte…) fonctionne dessus. Documentation :
|
||||
<https://pillow.readthedocs.io>.
|
||||
|
||||
Reference in New Issue
Block a user