Light painting à LED unique : Créez des images dynamiques avec un système motorisé DIY
Composants et fournitures
| Moteurs pas-à-pas NEMA17 | ×2 |
| Drivers DRV8825 pour moteurs pas-à-pas | ×2 |
| Lecteur de carte SD | ×1 |
| Arduino Mega 2560 | ×1 |
| Courroies de distribution et roues en V (assortiment) | ×1 |
Outils et machines nécessaires
- Imprimante 3D (pour pièces structurelles)
Applications et services en ligne
- Arduino IDE
- GIMP (création d'images bitmap)
- Autodesk Fusion 360 (conception CAO)
À propos du projet
L'idée
Le light painting consiste à utiliser une pose longue pour capturer la trajectoire d'une source lumineuse mobile. Une seule LED peut ainsi « dessiner » une image dans l'espace. Mais comment obtenir des images détaillées et multicolores ?
La solution : construire une machine CNC 2 axes équipée d'une LED RVB pilotée, capable de « peindre » pixel par pixel une image stockée sur carte SD, pendant que l'appareil photo capture le tout en pose longue.
Le plan
- L'Arduino Mega lit un fichier bitmap (.bmp) sur la carte SD.
- La tête (LED RVB) balaye l'axe X (horizontal), changeant de couleur à chaque position de pixel.
- À la fin de chaque ligne, elle avance sur l'axe Y (vertical).
- Le processus se répète pour chaque image du dossier « bitmaps ».
Construction de la structure
La structure utilise deux axes à courroies sur profilés aluminium, design modulaire et extensible. Les extrémités de l'axe X intègrent des embouts imprimés en 3D, l'un supportant le moteur et son palier. L'axe Y suit le même principe. La rigidité est assurée par des roulements à billes sur les axes de rotation.
Lecture des bitmaps
Le format BMP a été choisi pour sa simplicité. Le programme lit les adresses clés de l'en-tête :
- 0x12 : largeur
- 0x16 : hauteur
- 0x1C : profondeur de couleur
- 0x0A : offset des données pixel
- 0x36 : début habituel des données
Les pixels sont lus ligne par ligne (ordre bottom-to-top standard BMP), par blocs de 2 ou 4 octets.
Préparation des images
Contrainte majeure : temps de pose max ~30 s → ~288 pixels max (≈ 18×16 px). Les images sont créées sous GIMP en pixel art simple (Pokéball, cœur, Mario). Elles sont placées dans le dossier « bitmaps » à la racine de la carte SD.
Programme de « peinture »
Les moteurs pas-à-pas n'ayant pas de retour de position, le logiciel maintient un système de grille (x,y). Au démarrage : position (0,0), clignotement 5× de la LED (signal pour le photographe), puis lecture du premier bitmap. Pour chaque pixel : déplacement moteurs → couleur LED → pixel suivant. En fin d'image : retour origine, attente 15 s, image suivante.
Résultats
Réglages appareil photo : 20 s, f/36, ISO 100, compensation -5 IL (réduction ghosting).
- Pokéball (18×16) : forme reconnaissable, léger flou.
- Cœur (9×9) : pixels peu définis (trop petit).
- Mario : ghosting marqué sur zones claires.
Améliorations futures
Principal axe : réduire le flou en déplaçant la LED éteinte, ne l'allumant qu'à l'arrêt (technique « move-while-dark »). Cela améliorerait drastiquement la netteté.
Code source
Le programme complet (lecture BMP, contrôle DRV8825, pilotage LED RVB, gestion grille) est disponible dans la section code. Il utilise les bibliothèques SD.h, SPI.h et DRV8825.h.
Pièces personnalisées et boîtiers
Fichiers CAO (Fusion 360) pour les pièces imprimées 3D disponibles dans la section CAO.
Schémas
Schéma de câblage complet (Arduino Mega, 2× DRV8825, LED RVB, lecteur SD, alimentation 12V) fourni dans la section schémas.
Processus de fabrication
- Pourquoi les designers reviennent aux matériaux naturels dans le design produit
- Contrôler une LED avec un capteur de mouvement PIR sur Raspberry Pi
- Maîtriser l'AMDEC : guide étape par étape pour les gestionnaires de maintenance pour construire et utiliser l'Analyse des Modes de Défaillance, de leurs Effets et de leur Criticité
- Transfert de données température/humidité entre deux Arduinos via Firebase
- Échanger deux variables Python sans variable temporaire — Sans effort
- Projet Arduino : Mélodie "Coffin Dance" — Construire et jouer le tube viral
- Donnez une Seconde Vie à vos Télécommandes : Créez des Objets Connectés DIY avec Arduino
- Contrôlez un rover Arduino avec Firmata et une manette Xbox One
- Affichage lumineux 8 LED activé par le son