Mon projet de cube LED 3*3*3

Introduction :

Récemment, j’ai eu l’idée de faire un genre de cube lumineux basé sur des LEDs. Je venais de découvrir les matrices de LEDs qui permettent d’afficher des formes simples et qui sont en réalités présentes un peu partout. J’ai aussi vu passer un certain nombre de sculptures avec des LEDs un peu partout, ce qui m’a donnée envie de faire ma propre.

C’est la première fois que je me lance dans un projet de ce type donc j’ai choisi de partir sur un cube de petite taille, c’est-à-dire 3*3*3.

Présentation générale

Composants/matériel

  • 27 LEDs
  • des résistances de 220 Ω
  • des transistors
  • des câbles
  • un Arduino
  • un fer à souder avec de l’étain

Schéma de câblage

Tous les schémas sont disponibles librement ici. Pour les ouvrir il faut télécharger le logiciel Fritzing.

Conception

Le cube

Avant de faire le câblage ou le code, il faut commencer par faire la « sculpture », le cube. Pour cela, pas le choix, il faut souder !

Je n’ai jamais imaginé à quel point c’était difficile de souder sans platine et en 3D. Pour m’aider j’ai choisi de me préparer un genre de moule en carton pour mieux disposer les LEDs. Il permet également d’égaliser la distance entre toutes les LEDs et sur tous les étages du cube.

Les étages

Pour le faire j’ai dessiné un tableau sur un bout de carton et j’ai percé des trous que j’ai agrandis au diamètre des LEDs.

Le moule (pas très propre) que j’ai utilisé

Ensuite on peut disposer les LEDs, mais ajoutez en qu’une à la fois, vous verrez que c’est moins encombrant pour souder.

Première LED dans le moule

Pour chaque LED il faudra replier la cathode, la broche négative, la plus courte avec une pince à 90° environ et vers une autre LED.

Première LED avec la cathode repliée

Ensuite vous pouvez ajouter la LED d’à côté et souder leur cathode entre elles. Il faut qu’à la fin, les cathodes de toutes les LEDs soient reliées entre elles. Vous pouvez répéter ce procédé jusqu’à remplir tout l’étage.

Résultat après avoir soudé les cathodes des 9 LEDs entre elles

Quand vous les souder veillez bien que l’étain se relie pas les anodes aux cathodes.

Vous pouvez ensuite retirer les LEDs du carton. Les soudures permettent de tenir les LEDs entre elles, mais la structure n’est pas si solide. Vous devriez obtenir quelque chose comme ça

Vue schématique du résultat attendu

Ensuite vous pouvez répéter le processus 3 fois pour les 3 étages du cube de LEDs.

Les trois structures des étages du (futur) cube de LEDs

L’assemblage des étages

Maintenant qu’on a nos trois parties, essayons de les empiler. Je pensais cette action plutôt simple, mais ce n’est pas le cas.. Essayer de caler un bout de bois entre les deux étages. Puis essayer de souder les deux parties qui sont verticales entre elles (le +) et veillez toujours à ne pas relier au -.

La partie la plus délicate est d’assembler ces trois étages pour former le véritable cube de LEDs. Pour cela je n’ai malheureusement trouvé de solution miracle, si ce n’est d’utiliser des cales en bois et des pinces pour tenir les étages le temps de la soudure.

Les deux premiers étages assemblés, vu du dessus
Les deux premiers étages assemblés, vu de côté

Répétez cette action une deuxième fois pour assembler le dernier étage. Ensuite, il faut souder entre elles toutes les anodes en colonne.

Cube LEDs tout juste soudé ! (et à l’envers…)

L’électronique

Branchement des colonnes

Maintenant le cube LEDs réalisé, il faut trouver un moyen de le connecter à l’Arduino. Pour cela nous pouvons commencer par le souder à une platine. J’ai récupéré une vieille platine avec un espacement de 17 trous au total.

Emplacement du cube sur la platine

Après ça il faut ajouter des résistances de 220 Ω pour chaque colonne. Reliez chaque colonne d’anodes à une résistance.

9 résistances reliées chacune à une colonne du cube

Après ça j’ai essayé de tous les relier à une broche qui pourra facilement se fixer à un Arduino, pour former directement un cluster qui se fixe sur l’Arduino.

Broches correspondants aux colonnes du cube
Vue des broches du cluster
Vue d’ensemble de côté
Vue générale du dessous (pas très propre..)

Une fois le tout soudé et attaché vous pouvez essayer de le brancher à une breadboard ou un Arduino pour vérifier l’écartement.

Cluster fixé sur une breadboard
Cluster fixé à un arduino

Maintenant, avant de finir le cube, il est important de tester si tout est bien branché/soudé. Pour cela vous pouvez brancher une alimentation comme une pile avec la broche négative sur les cathodes d’un étage et l’anode sur une des broches du bas. Vous pourrez ainsi allumer individuellement les 27 LEDs.

Branchement des étages

Avec l’exemple précédent, vous comprenez qu’il faut relier les étages de cathodes à l’Arduino. Mais si on les relie tous entre eux et qu’on met au port GND de l’Arduino on ne pourra plus allumer individuellement chaque LED, seulement les colonnes.

Pour cela j’ai opté pour des transistors. Au nombre de 3, ils s’occupent chacun d’un étage. Ils sont tous reliés au GND et vont laisser passer le courant quand l’Arduino leur donnera une impulsion. Ils jouent en quelque sorte le rôle d’interrupteurs contrôlés non pas par un homme, mais par l’Arduino.

Voici le schéma électrique des transistors :

Schéma des transistors
Zoom

De la même façon que précédemment, vous pouvez ajouter des broches pour les relier à l’Arduino.

Branchement général

Voici le schéma complet de câblage, bien entendu les étages correspondent aux cathodes des LEDs des différents étages.

Pour un confort de lecture et une meilleure compréhension des schémas électroniques, téléchargez Fritzing puis les schémas. Et faites ouvrir avec Fritzing.

Code

Il reste la partie théorique, le code en C++ de l’Arduino. Comme vous avez pu le voir, nous jouons sur une petite astuce pour éviter d’utiliser plus de 27 ports sur l’Arduino. En réalité on a 12 ports :

  • 3 ports reliés aux transistors qui s’occupent des cathodes
  • 9 ports reliés aux résistances qui s’occupent des anodes

Donc pour allumer une LED il faut qu’elle forme localement un circuit fermé, qu’à la fois la colonne soit activée par un des 9 ports et qu’à la fois l’étage soit activée par un des 3 ports.

En réalité on ne va pas allumer les LEDs, on va les faire clignoter. Mais elles vont clignoter tellement vite qu’on aura l’impression qu’elles sont allumés (principe de beaucoup de lampes en utilisant un courant alternatif). J’ai fait des tests et l’Arduino peut faire clignoter une LED jusqu’à 5000 fois en une seconde.

Je vous propose donc un code d’exemple qui utilise ce principe et les ports utilisés dans le schéma de cablage précédent.

 //Cube LED 3*3
//valentin cassayre

boolean leds[3][3][3];
long i = 0;
long lastMillis = 0;
int rnd = 0;
void setup() {
for(int k = 0; k < 12; k++) {
pinMode(k + 2, OUTPUT);
}
}
void loop() {

long m = millis() / 50;
if(m != lastMillis) {
lastMillis = m;
rnd = micros() % 27;
int t = t+1;
}
leds[rnd % 3][(rnd / 3) % 3][rnd / 9] = true;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
for(int k = 0; k < 3; k++)
leds[i][j][k] = true;

// =============
i = (i + 1) % 27;
const long x = i % 3;
const long y = (i / 3) % 3;
const long z = i / 9;
boolean is_on = leds[x][y][z];
write_leds(is_on, x, y, z);
}
void write_leds(boolean on, int x, int y, int z) {
for(int k = 0; k < 12; k++) {
digitalWrite(k + 2, LOW);
}
const int k = x + y * 3;
digitalWrite(13 - z, on ? HIGH : LOW);
digitalWrite(2 + k, on ? HIGH : LOW);
}

Les schémas : téléchargez Fritzing puis les schémas