better 3x3 doc

This commit is contained in:
bach
2026-10-08 14:36:28 +02:00
parent 3a0addaa55
commit 32e617f67b
9 changed files with 4303 additions and 0 deletions
+293
View File
@@ -0,0 +1,293 @@
# Maquette 3 × 3 : matrice de LED RGB multiplexée
Workshop « Vitrine pixels » : on fabrique un petit écran de **9 pixels** de
couleur, soudé sur une plaque à pastilles et piloté par un Arduino.
C'est la maquette d'apprentissage avant la grande matrice 7 × 39.
![Implantation sur plaque à pastilles](schemas/implantation_plaque.svg)
> **Le principe à retenir** : on n'allume jamais les 9 LED en même temps.
> On allume **une ligne à la fois**, très vite (environ 333 fois par seconde),
> et l'œil voit une image fixe. C'est le **multiplexage**. Tout est expliqué
> en détail dans les commentaires de [`matrice_3x3.ino`](matrice_3x3.ino).
---
## Sommaire
1. [Le matériel](#1-le-matériel)
2. [Reconnaître les composants](#2-reconnaître-les-composants)
3. [Le schéma électrique](#3-le-schéma-électrique)
4. [Le montage sur plaque à pastilles](#4-le-montage-sur-plaque-à-pastilles)
5. [Souder, étape par étape](#5-souder-étape-par-étape)
6. [Relier à l'Arduino](#6-relier-à-larduino)
7. [Téléverser le programme et tester](#7-téléverser-le-programme-et-tester)
8. [Ça ne marche pas ?](#8-ça-ne-marche-pas-)
9. [Le fichier Fritzing](#9-le-fichier-fritzing)
---
## 1. Le matériel
| Quoi | Combien | Remarque |
|---|---|---|
| Arduino Uno + câble USB | 1 | |
| LED RGB 5 mm **à cathode commune** | 9 | 4 pattes ; vérifier « common cathode » à l'achat |
| Transistor **BC337** (NPN) | 3 | ou 2N2222 / S8050 : **attention, pattes dans un autre ordre** (voir 2) |
| Résistance **220 Ω** | 3 | pour le rouge |
| Résistance **150 Ω** | 6 | pour le vert et le bleu |
| Résistance **1 kΩ** | 3 | pour les bases des transistors |
| Plaque à pastilles (pas 2,54 mm) | 1 | au moins **32 × 34 trous** |
| Fil nu étamé (ou chutes de pattes de résistances) | ~1 m | pour les liaisons côté soudures |
| Fil isolé fin (monobrin) | ~50 cm | pour les 3 lignes de cathodes |
| Fils souples avec embout mâle (« Dupont ») | 13 | vers l'Arduino : 9 rouges/verts/bleus, 3 jaunes, 1 noir |
| Fer à souder, étain, pince coupante, pince plate | | |
---
## 2. Reconnaître les composants
### La LED RGB à cathode commune
Elle contient 3 petites LED (rouge, verte, bleue) qui partagent la même
patte « moins » : la **cathode commune**, qui est **la patte la plus longue**.
```
___
/ \ Ordre des pattes le plus courant :
| |
|_____| R K G B
| | | | │ │ │ └ bleu
| | | | │ │ └──── vert
R K | | │ └──────── cathode (la plus longue)
G B └──────────── rouge (souvent côté du méplat)
```
> ⚠️ L'ordre peut changer selon le fabricant. **Testez une LED avant de
> souder** : cathode au GND de l'Arduino, et chaque autre patte, l'une après
> l'autre, au 5V **à travers une résistance de 220 Ω** (jamais sans résistance !).
### Le transistor BC337
C'est un **interrupteur électronique** : quand un petit courant entre par la
**base (B)**, il laisse passer un gros courant entre le **collecteur (C)** et
l'**émetteur (E)**. Ici, chaque transistor allume ou éteint une ligne de LED.
Face plate vers vous, pattes vers le bas, de gauche à droite : **C – B – E**.
> ⚠️ Le **2N2222** et le **S8050** ont l'ordre inverse : **E – B – C**.
> Si vous les utilisez, tournez-les d'un demi-tour (face plate vers le haut
> de la plaque).
### Les résistances
Elles freinent le courant pour protéger les LED et l'Arduino. On lit leur
valeur avec les anneaux de couleur :
| Valeur | Anneaux | Rôle |
|---|---|---|
| 220 Ω | rouge – rouge – marron | LED rouges |
| 150 Ω | marron – vert – marron | LED vertes et bleues |
| 1 kΩ | marron – noir – rouge | bases des transistors |
Une résistance n'a pas de sens : on peut la souder dans les deux sens.
---
## 3. Le schéma électrique
![Schéma électrique](schemas/schema_electrique.svg)
Comment le lire :
- **À gauche, l'Arduino**. Ses broches **D2 à D10** envoient la couleur,
ses broches **D11 à D13** choisissent la ligne allumée.
- **Les 9 lignes verticales** : chaque broche D2 à D10 passe par une
résistance, puis rejoint **les anodes d'une même couleur dans une même
colonne** de la matrice. Par exemple, D2 alimente le rouge des 3 LED de la
colonne de gauche.
- **Les 3 lignes horizontales** relient **les cathodes d'une même ligne**
de LED, puis vont au **collecteur** d'un transistor.
- **À droite, les transistors** : leur base est commandée par D11, D12 ou D13
(à travers 1 kΩ), et leur émetteur est relié au **GND** (la masse).
Un pixel s'allume quand **sa ligne est active** (transistor passant) **et**
que **sa colonne envoie de la couleur**. C'est le croisement des deux qui
choisit le pixel.
| Broche Arduino | Rôle |
|---|---|
| D2, D3, D4 | rouge, vert, bleu de la **colonne 0** (gauche) |
| D5, D6, D7 | rouge, vert, bleu de la **colonne 1** (milieu) |
| D8, D9, D10 | rouge, vert, bleu de la **colonne 2** (droite) |
| D11, D12, D13 | **lignes** 0 (haut), 1, 2 (bas), par les transistors T0, T1, T2 |
| GND | masse : émetteurs des 3 transistors |
---
## 4. Le montage sur plaque à pastilles
Le plan en haut de cette page montre la plaque **des deux côtés** :
- **À gauche, côté composants** : ce qu'on voit quand la plaque est posée
devant soi, composants vers le haut.
- **À droite, côté soudures** : la plaque **retournée**. ⚠️ C'est une image
**en miroir** : ce qui était à gauche se retrouve à droite. Les numéros de
colonnes aident à s'y retrouver.
Les trous sont repérés par **colonne** (de 1 à 32, de gauche à droite côté
composants) et **ligne** (de 1 à 34, de haut en bas).
### L'idée du câblage
- **Les colonnes de couleur** (anodes) sont des **fils nus verticaux**, côté
soudures. Comme les 3 LED d'une colonne sont alignées, leurs pattes R
tombent dans la même colonne de trous : un fil nu droit les relie toutes,
puis rejoint la résistance.
- **Les lignes de cathodes** croisent les colonnes : on ne peut pas les faire
en fil nu du même côté (ça ferait un court-circuit !). On les fait donc en
**fil isolé, côté composants**, qui passe **par-dessus**.
- Chaque fil isolé arrive dans **le trou juste à côté** de la patte à
relier ; on fait la liaison côté soudures avec une goutte d'étain ou un
bout de fil nu.
### Où va chaque composant
| Composant | Trous (colonne, ligne) |
|---|---|
| Résistances 220 Ω (rouge) | col. 3, 9, 15 : lignes 3 → 7 |
| Résistances 150 Ω (vert) | col. 5, 11, 17 : lignes 3 → 7 |
| Résistances 150 Ω (bleu) | col. 6, 12, 18 : lignes 8 → 12 |
| LED de la ligne 0 (haut) | ligne 19 ; colonnes 3-6, 9-12, 15-18 (pattes R K G B) |
| LED de la ligne 1 | ligne 25 ; mêmes colonnes |
| LED de la ligne 2 (bas) | ligne 31 ; mêmes colonnes |
| Transistors T0, T1, T2 | lignes 20, 26, 32 ; colonnes 22 (C), 23 (B), 24 (E) |
| Résistances 1 kΩ (bases) | lignes 21, 27, 33 ; colonnes 23 → 27 |
> **Pourquoi des LED espacées de 6 trous (15 mm) ?** Pour laisser de la place
> aux fils et aux doigts. La matrice finale aura un pas de 10 mm. Pour tester
> la diffusion de la lumière à 10 mm, on peut refaire une version au pas de
> 4 trous (10,16 mm), mais le câblage est beaucoup plus serré.
---
## 5. Souder, étape par étape
**On soude des composants les plus bas aux plus hauts** : la plaque reste
stable quand on la retourne.
1. **Les fils nus** (côté soudures) : les 9 colonnes de couleur, le bus de
masse (colonne 31) et les petits ponts. Suivez le plan de droite.
2. **Les 12 résistances**, couchées à plat contre la plaque (le long des
colonnes pour les 9 résistances de couleur, le long des lignes pour les 1 kΩ).
Vérifiez les couleurs : 220 Ω pour le rouge, 150 Ω pour le vert et le bleu,
1 kΩ pour les bases.
3. **Les 3 transistors**, face plate vers le bas de la plaque.
Ne chauffez pas plus de 3 secondes par patte.
4. **Les 9 LED** : patte la plus longue (K) en 2e position.
**Testez chaque LED avant** (voir partie 2).
5. **Les 3 fils isolés** des cathodes (côté composants).
6. **Les 13 fils vers l'Arduino** (voir partie 6).
Conseils de soudure :
- Le fer chauffe **la pastille et la patte en même temps**, puis on apporte
l'étain. Une bonne soudure est brillante et en forme de petit volcan.
- Après chaque étape, **vérifiez qu'aucune goutte d'étain ne relie deux
pastilles voisines** par erreur, surtout entre les colonnes de couleur
voisines (G et B ne sont qu'à un trou d'écart !).
- Coupez les pattes qui dépassent **après** avoir soudé. Gardez les chutes :
elles font d'excellents fils nus.
---
## 6. Relier à l'Arduino
| Fil | Trou sur la plaque (col., ligne) | Broche Arduino |
|---|---|---|
| 🔴 rouge colonne 0 | 3, 2 | D2 |
| 🟢 vert colonne 0 | 5, 2 | D3 |
| 🔵 bleu colonne 0 | 6, 2 | D4 |
| 🔴 rouge colonne 1 | 9, 2 | D5 |
| 🟢 vert colonne 1 | 11, 2 | D6 |
| 🔵 bleu colonne 1 | 12, 2 | D7 |
| 🔴 rouge colonne 2 | 15, 2 | D8 |
| 🟢 vert colonne 2 | 17, 2 | D9 |
| 🔵 bleu colonne 2 | 18, 2 | D10 |
| 🟡 ligne 0 | 28, 21 | D11 |
| 🟡 ligne 1 | 29, 27 | D12 |
| 🟡 ligne 2 | 30, 33 | D13 |
| ⚫ masse | 31, 18 | GND (à côté de D13) |
![Vue Fritzing de la plaque reliée à l'Arduino](schemas/plaque_fritzing.png)
> Pas besoin d'alimentation externe : 9 LED à 15 mA, une seule ligne à la fois,
> c'est au maximum ~135 mA. Le port USB suffit.
---
## 7. Téléverser le programme et tester
1. Installez l'**IDE Arduino** et la bibliothèque **TimerOne**
(Outils → Gérer les bibliothèques… → « TimerOne » → Installer).
2. Ouvrez [`matrice_3x3.ino`](matrice_3x3.ino).
3. Outils → Type de carte → **Arduino Uno** ; Outils → Port → le bon port.
4. **Téléverser**.
La première animation, `animTestPixels`, allume **chaque pixel l'un après
l'autre**, en rouge, puis en vert, puis en bleu, de gauche à droite et de haut
en bas. C'est le test de câblage : notez tout pixel qui ne s'allume pas, ou
pas au bon endroit, ou pas dans la bonne couleur.
Ensuite, les animations s'enchaînent : aplats de couleur, chenille, damier,
balayages, scintillement. Pour créer les vôtres, lisez les parties 5 et 6 du
programme.
---
## 8. Ça ne marche pas ?
| Symptôme | Cause probable | Solution |
|---|---|---|
| **Rien ne s'allume** | Fil de masse (GND) absent | Vérifier le fil noir et le bus de masse (col. 31) |
| | Transistors à l'envers | Vérifier C-B-E (BC337) ou E-B-C (2N2222) |
| **Une ligne entière reste éteinte** | Transistor mal soudé ou à l'envers | Vérifier T0, T1 ou T2 et sa résistance de base |
| | Fil isolé de cathode mal soudé | Vérifier le pont entre la patte K et le fil |
| **Une couleur manque sur toute une colonne** | Résistance ou fil nu de colonne mal soudé | Suivre la colonne côté soudures |
| | Mauvais fil sur l'Arduino | Comparer avec le tableau de la partie 6 |
| **Un seul pixel ne marche pas** | LED mal soudée, ou grillée | Ressouder, ou tester la LED seule |
| **Couleurs mélangées** (rouge à la place du bleu…) | Ordre des pattes de la LED différent | Tester la LED (partie 2) ; corriger dans le code (`pinsCouleur`) |
| **Deux couleurs s'allument ensemble** | Pont d'étain entre deux colonnes voisines | Chauffer et retirer l'étain en trop (tresse à dessouder) |
| **Légers reflets sur des pixels éteints** (« fantômes ») | Normal si très faible | Le code éteint déjà les lignes avant de changer les couleurs |
| **L'image clignote** | `DUREE_LIGNE_US` trop grand | Revenir à 1000 dans le code |
| **La petite LED « L » de l'Arduino scintille** | Normal : elle est sur la broche 13 (ligne 2) | Rien à faire |
---
## 9. Le fichier Fritzing
[`matrice_3x3.fzz`](matrice_3x3.fzz) s'ouvre avec
[Fritzing](https://fritzing.org) (version 1.0 ou plus récente). Il contient :
- la vue **Schéma** : le même circuit que la partie 3, avec les symboles
de Fritzing ([aperçu](schemas/schema_fritzing.png)) ;
- la vue **Platine d'essai** : la plaque à pastilles reliée à l'Arduino.
Les fils gris sont les liaisons en fil nu (côté soudures), les fils noirs
sur la plaque sont les fils isolés des cathodes.
La vue **Circuit imprimé** n'est pas utilisée (pièces non placées).
Les scripts du dossier [`outils/`](outils/) régénèrent le fichier Fritzing,
le plan d'implantation et le schéma électrique si on modifie le montage :
```bash
python3 outils/gen_fzz.py matrice_3x3.fzz
```
```bash
python3 outils/render_plaque.py schemas/implantation_plaque.svg
```
```bash
python3 outils/schema_electrique.py schemas/schema_electrique.svg
```