Files
vitrine-pixels/matrice_3x3/README.md
T
2026-10-08 14:36:28 +02:00

294 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```