Nouvelles:

25/06/2023 : Mise à jour du forum. En cas de bug, merci de contacter le Grand Sachem

Menu principal

Simulation de l’effet néon pour un bâtiment

Démarré par Ph Blondé, 17 Novembre 2020 à 11:09:57

« précédent - suivant »

0 Membres et 1 Invité sur ce sujet

Ph Blondé

Bonjour à tous,

Les possibilités des LEDs adressables m'ont amené à me demander si je ne pouvais pas simuler l'éclairage au néon d'un bâtiment au moment où on allume l'ensemble des réglettes. Il s'agissait donc de reproduire les clignotements particuliers propres à l'allumage de ces tubes néon et souvent provoqués par un défaut sur des « starters » quelque peu fatigués.

L'utilisation des LEDs RGB adressables a déjà été abordée avec la séquence « jour/nuit » : http://forum.espacetrain.com/index.php?topic=2769.0

Ces LEDs ont la particularité d'avoir chacune une adresse et peuvent donc être commandées individuellement.
Sur un module de huit LEDs on trouve quatre connections : deux GND (ou masse, ou moins), une pour le + de l'alimentation 5V et la dernière pour la transmission des données (commun à toutes les LEDs).

https://www.reichelt.com/fr/en/developer-boards-neopixel-stick-with-8-ws2812-rgb-leds-debo-led-np8-p235467.html?&trstct=pos_6&nbc=1

Plusieurs modules peuvent être reliés si le nombre de LEDs par module ne suffit pas ; c'est le cas ici. Les quatre jonctions (pates coupées de composants du style résistance) relient deux modules. On pourrait continuer.

Pour la programmation, l'ensemble des deux modules reliés constitue une seule entité et les LEDs sont numérotées de 0 à 15. Dans l'utilisation d'un seul module, elles seraient numérotées de 0 à 7. C'est cet ensemble qui sera collé sous le toit d'une remise
Philippe Blondé
Un 59 dans le 22

Ph Blondé

#1
La programmation : toujours aussi simple.

En déclaration et dans le setup, on trouve :

L'appel de la bibliothèque : #include <Adafruit_NeoPixel.h>

Le nom donné au module (ici module_1) et son affectation à une broche de sortie en PWM (ici la broche 3 pour un NANO :
#define sortie_module_1 3 // AFFECTATION EN PWM SUR BROCHE 3 - NOM : "module_1"

La déclaration du nombre de LEDs pour ce module (ici 16 LEDs) :
#define nb_led_module_1 16 // 16 LEDS SUR "module_1"

Enfin, la création de l'objet « module_1 » :
Adafruit_NeoPixel module_1 = Adafruit_NeoPixel(nb_led_module_1, sortie_module_1, NEO_GRB + NEO_KHZ800);

L'initialisation dans le setup : module_1.begin(); // Initialisation de "module_1"

Les commandes (dans le loop):

Par exemple : » module_1.setPixelColor(1, 255, 255, 255); »
On s'adresse au module_1 (ça tombe bien  :) ) et à la LED 1 (c'est-à-dire à la deuxième LED puisque la première a l'adresse 0).
Et on lui dit de mettre la partie Rouge à la valeur 255 , la partie Verte (Green) à la valeur 255 et la Bleue à la valeur 255.
Comme les 3 valeurs sont égales, on obtient du blanc. On peut vérifier avec un convertisseur : http://www.proftnj.com/RGB3.htm
Les valeurs possibles pour chaque couleur sont comprises entre 0 et 255.

Après cette « préparation » qui consiste à paramétrer une LED, on lui dit d'exécuter : module_1.show();
Remarque : on peut paramétrer plusieurs LEDs avant de donner cet ordre d'exécution.

C'est donc très simple et il suffit de laisser faire votre imagination en faisant des « copier/Coller » et en jouant les valeurs R, G et B. Naturellement pour obtenir du blanc, il faut que les valeurs appliquées soient les mêmes pour le rouge, le vert et le bleu. En cas de doute, le convertisseur est là pour vérifier.

Les fichiers en .ino et en .txt sont joints.
Philippe Blondé
Un 59 dans le 22

Ph Blondé

En « clair » :


// SIMULATION CLIGNOTEMENT DE NEONS
// MAJ du 2020-11-16
// 16 LEDS RGB ADRESSABLES NUMEROTEES DE 0 A 15
// POUR LE NANO - CHOISIR NANO ET ATEMEGA 328P Old Bootloader

// PREPARATION DU MODULE DE 16 LEDS RGB ADRESSABLES
#include <Adafruit_NeoPixel.h>
#define sortie_module_1 3 // AFFECTATION EN PWM SUR BROCHE 3 - NOM : "module_1"
#define nb_led_module_1 16 // 16 LEDS SUR "module_1"
Adafruit_NeoPixel module_1 = Adafruit_NeoPixel(nb_led_module_1, sortie_module_1, NEO_GRB + NEO_KHZ800);

void setup()
{
module_1.begin(); // Initialisation de "module_1"
}

void loop()
{
// ALLUMAGE DES NEONS
module_1.setPixelColor(1,100,100,100);
module_1.show();
delay (20);
module_1.setPixelColor(1,0,0,0);
module_1.show();
delay (200);
module_1.setPixelColor(1,100,100,100);
module_1.show();
delay (20);
module_1.setPixelColor(1,0,0,0);
module_1.show();
delay (200);
module_1.setPixelColor(13,100,100,100);
module_1.setPixelColor(4,100,100,100);
module_1.show();
delay (20);
module_1.setPixelColor(4,0,0,0);
module_1.show();
delay (200);
module_1.setPixelColor(13,50,50,50);
module_1.setPixelColor(4,100,100,100);
module_1.show();
delay (20);
module_1.setPixelColor(13,255,255,255);
module_1.setPixelColor(4,0,0,0);
module_1.show();
delay (200);
module_1.setPixelColor(1,100,100,100);
module_1.show();
delay (20);
module_1.setPixelColor(1,0,0,0);
module_1.setPixelColor(11,100,100,100);
module_1.show();
delay (200);
module_1.setPixelColor(11,0,0,0);
module_1.setPixelColor(1,100,100,100);
module_1.show();
delay (100);
module_1.setPixelColor(1,0,0,0);
module_1.setPixelColor(4,100,100,100);
module_1.show();
delay (600);
module_1.setPixelColor(1,180,180,180);
module_1.setPixelColor(4,0,0,0);
module_1.show();
delay (100);
module_1.setPixelColor(1,0,0,0);
module_1.setPixelColor(11,255,255,255);
module_1.setPixelColor(4,170,170,170);
module_1.show();
delay (150);
module_1.setPixelColor(1,255,255,255);
module_1.setPixelColor(4,255,255,255);
module_1.show();
delay (90);
module_1.setPixelColor(8,50,50,50);
module_1.setPixelColor(7,200,200,200);
module_1.show();
delay (100);
module_1.setPixelColor(8,0,0,0);
module_1.setPixelColor(7,80,80,80);
module_1.show();
delay (250);
module_1.setPixelColor(8,255,255,255);
module_1.show();
delay (500);
module_1.setPixelColor(7,180,180,180);
module_1.setPixelColor(1,100,100,100);
module_1.show();
delay (250);
module_1.setPixelColor(7,40,40,40);
module_1.setPixelColor(1,40,40,40);
module_1.show();
delay (350);
module_1.setPixelColor(1,255,255,255);
module_1.setPixelColor(7,255,255,255);
module_1.setPixelColor(15,255,255,255);
module_1.show();
delay (9000); // TEMPO POUR ESSAIS

// EXTINCTION DES NEONS
module_1.setPixelColor(1,0,0,0);
module_1.setPixelColor(4,0,0,0);
module_1.show();
delay (100);
module_1.setPixelColor(8,0,0,0);
module_1.setPixelColor(13,0,0,0);
module_1.show();
delay (200);
module_1.setPixelColor(11,0,0,0);
module_1.setPixelColor(7,0,0,0);
module_1.setPixelColor(15,0,0,0);
module_1.show();
delay (7000); // TEMPO POUR ESSAIS
}
Philippe Blondé
Un 59 dans le 22

Ph Blondé

#3
Voici ce qui se prépare : une remise prêtée à une association (l'ASAC) pour garer un autorail sauvegardé.

La séquence :
    - Allumage de l'éclairage « néon ».
    - Ouverture des portes (servomoteurs).
    - Sortie de l'autorail.
    - Stationnement et flashes des photographes amateurs.
    - Rentrée de l'autorail.
    - Fermeture des portes.
    - Extinction des tubes « néon ».

La voie (refaite par l'association) mesure une cinquantaine de cm. C'est court mais c'est fait pour évoquer certaines associations qui ne disposent que d'une très courte longueur de voie (50 cm x 87 = 43,5 m). Je pense relier ce cul de sac aux voies d'un dépôt via un aiguillage.

Il pourrait être intéressant de développer cette idée pour les voitures en  HO et voire en N  mais il faut trouver le  microcontrôleur qui va bien, faute de place pour un Arduino NANO ; en 0 c'est faisable.

Merci à Cyril (de l'équipe EspaceTrain) pour la mise en ligne de cette petite vidéo : https://www.dailymotion.com/embed/video/x7xjax4
Philippe Blondé
Un 59 dans le 22

jacquot

Bonjour Philippe,
Pourquoi je n'ai pas reçu les neurones électroniques dans mon adn ?  Bien que ce monde me soit totalement étranger, j'admire tes démonstrations. Ne me dis pas que c'est facile, c'est comme le solfège ! :(
Bravo en tout cas
Amicalement.

Ph Blondé

Bonjour Jacquot,
Oh non, je ne dirais jamais que c'est facile. Ce serait mentir. Au début j'ai ramé!

Mais je connais certain(s) qui se sont lancés en commençant par faire clignoter des feux PN et ont continué pour commander un relais, puis deux...

Mes applications restent dans le simple (sur le plan écriture), certain(s) diront lourdes, naïves et pas très "informatiques", mais je m'en moque car je "fais du train"  :) :)

Philippe Blondé
Un 59 dans le 22

Ph Blondé

#6
Pour remettre cet effet dans son contexte, voici la vidéo (enfin) montée du diorama animé "LA REMISE DE L'ASAC"

La prochaine étape sera de modifier la commande de traction et la passer en numérique
Philippe Blondé
Un 59 dans le 22

Ph Blondé

#7
Autre vidéo pour illustrer l'utilisation des LEDs RGB adressables :
Bon c'est pas directement "du train" mais pourquoi pas sur un modulino avec la voie qui passe sous ce diorama ?  :)
Merci encore à YDModels pour le tirage en 3D de la soucoupe http://www.ydmodels.com/
Philippe Blondé
Un 59 dans le 22