Petit fantôme lumineux piloté par µC en impression 3D
Un petit gadget inutile en soi qui fait la joie de bien des personnes de mon entourage
Présentation
Le fantôme est constitué de deux pièces imprimées en PLA ou PETG translucide. Une LED RVB placée à l’intérieur éclaire le corps et change progressivement de couleur. Un Arduino Pro Mini se charge de piloter les 3 composantes de la LED par PWM. Le tout est alimenté simplement par un câble USB.
Quelques compétences sont nécessaires
Composants
Un adaptateur USB-série ( Exemple Aliexpress ) est nécessaire uniquement pour programmer le microcontrôleur.
Les liens ( Exemple Aliexpress ) sont donnés à titre indicatif. Les composants peuvent être obtenus auprès de fournisseurs Européens tels que Reichelt, TME, ….
Impression 3D
Le modèle 3D est adapté de l’objet original d’Eric Valois publié sur Myminifactory
Vous pouvez télécharger mes fichiers 3D en visitant le lien suivant :
L’impression ne nécessite pas de supports !
Schéma

Code
Le programme sera téléversé dans le microcontrôleur à l’aide d’un IDE comme celui d’Arduino ou Platformio sous VisualStudio Code par exemple.
Pour Arduino IDE :
/*
Fonctionnement global
Ce programme contrôle une LED RGB en utilisant les sorties PWM de l'Arduino.
Il crée un dégradé de couleurs en faisant varier progressivement l'intensité des composantes rouge, verte et bleue.
À chaque transition, une couleur diminue tandis que la suivante augmente, ce qui permet d'obtenir un fondu fluide entre le rouge, le vert et le bleu.
La LED démarre en rouge (255, 0, 0).
Le rouge diminue progressivement tandis que le vert augmente → jaune, puis vert.
Le vert diminue tandis que le bleu augmente → cyan, puis bleu.
Le bleu diminue tandis que le rouge augmente → magenta, puis retour au rouge.
Le cycle recommence indéfiniment.
*/
// Assignation des pattes du µC connetées aux cathodes de la led RVB
const int led_rouge = 9;
const int led_verte = 6;
const int led_bleue = 5;
// Tableau contenant l'intensité des trois couleurs :
// [0] [1] [2]
unsigned int couleur[3]; // couleur(niveau rouge, niveau vert, niveau bleu)
// Fonction qui applique les niveaux RVB à la LED.
void appliquer_couleur(unsigned int rouge, unsigned int vert, unsigned int bleu)
{
analogWrite(led_rouge, rouge); // génère le niveau du rouge sur la patte 9
analogWrite(led_verte, vert); // génère le niveau du vert sur la patte 6
analogWrite(led_bleue, bleu); // génère le niveau du bleu sur la patte 5
}
void setup()
{
// Démarrage avec les trois couleurs éteintes
couleur[0] = 0;
couleur[1] = 0;
couleur[2] = 0;
appliquer_couleur(couleur[0], couleur[1], couleur[2]);
}
// Cette boucle permet de réaliser les transitions :
// Rouge → Vert
// Vert → Bleu
// Bleu → Rouge
void loop()
{
// On démarre avec le rouge
couleur[0] = 255; // rouge allumé
couleur[1] = 0; // vert éteint
couleur[2] = 0; // bleu éteint
for (int couleur_a_diminuer = 0; couleur_a_diminuer < 3; couleur_a_diminuer += 1)
{
// Détermine quelle couleur doit augmenter.
// Si on diminue le bleu [2], on augmente le rouge [0],
// sinon on augmente simplement la couleur suivante.
int couleur_a_augmenter = couleur_a_diminuer == 2 ? 0 : couleur_a_diminuer + 1;
// Réalise un fondu progressif entre deux couleurs.
for (int i = 0; i < 255; i += 1)
{
// Diminue progressivement la couleur actuelle.
couleur[couleur_a_diminuer] -= 1;
// Augmente progressivement la couleur suivante.
couleur[couleur_a_augmenter] += 1;
// Application des niveaux des couleurs à la LED
appliquer_couleur(couleur[0], couleur[1], couleur[2]);
// On attend 0,03 secondes afin que la transition soit visible
delay(30);
}
}
}
Pour Platformio :
Le fichier platformio.ini
[env:pro16MHzatmega328]
platform = atmelavr
board = pro16MHzatmega328
framework = arduino
Le fichier main.cpp
Le contenu est le même que pour l’IDE Arduino à ceci près qu’il faut placer la ligne suivante tout au début.
#include <Arduino.h>
Montage
- Chaque patte de la diode LED est pliée en direction de sa destination de telle manière qu’elle n’en touche aucune autre !
- La patte d’anode est soudée sur le + 5V du microcontrôleur
- Les autres pattes seront soudées à une extrémité d’une résistance
- L’autre extrémité de la résistance sera soudée sur le GPIO correspondant du microcontrôleur
- Assurez-vous que la base rentre dans le corps du fantôme. Sinon, il convient de limer les bords jusqu’à ce que ce soit le cas
- Un petit trou doit être percé à l’arrière dans le corps du fantôme et l’extrémité du câble USB doit y être inséré
- Faire un noeud dans le câble USB, à l’intérieur de manière à ce qu’il ne puisse pas être accidentellement arraché
- Le fil rouge du câble USB sera soudé sur le + 5V du microcontrôleur
- Le fil noir du câble USB, quant à lui, sera soudé aux connexions GND du microcontrôleur
- Après vérification du bon fonctionnement, le côté « RS-232 » du microcontrôleur est enfiché dans la base du fantôme
- La base est placée dans le bas du corps afin de fermer celui-ci. Vous pouvez apposer un point de colle si vous le souhaitez.
Et voilà, le tour est joué !
Une fois le câble USB branché, Casper s’illumine joyeusement au pied de la télé et son humeur varie continuellement 👍














