LOCODUINO

Discussions Générales => Aide => Discussion démarrée par: brunodujura le août 11, 2025, 03:45:44 pm

Titre: éclairage bâtiments avec allumages et extinctions variés
Posté par: brunodujura le août 11, 2025, 03:45:44 pm
Bonjour,

J'ai une douzaine de bâtiments pour lesquels j'ai soudé sur une plaque de prototypage une LED blanche 1210 CMS (12mA suffisent pour un éclairage suffisant)

Ces 12 Leds BAT1, BAT2.....BAT12 seront connectées à un seul arduino

Avec un programme classique de clignotement je dis au BAT1 de rester allumé 2 min, de s'éteindre 30 sec

Dans le meme programme j'aimerais donner des valeurs d'allumage et d'extinction différents aux 12 bâtiments, y a t'il moyen de faire un programme léger ?

Merci
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: Fantasio le août 11, 2025, 08:29:51 pm
Bonsoir brunodujura

Inspire toi du code utilisé pour l'animation lumineuse d'un BV réalisée par Dominique: https://forum.locoduino.org/index.php?topic=336.0 (https://forum.locoduino.org/index.php?topic=336.0)
Tu le modifieras pour l'adapter pour tourner sur un UNO mais c'est une très bonne base pour piloter des leds.

Bonne continuation à toi.
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: CATPLUS le août 12, 2025, 07:42:05 am
Bonjour
Ci-joint programme aléatoire.
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: brunodujura le août 12, 2025, 07:32:25 pm
Bonjour,

J'ai étudié le programme aléatoire pour lequel j'aurai plus tard une ou deux questions.
Sur ma breadboard cela fonctionne (j'ai une seule led pour le test mais j'essaye toutes les sorties)

Par contre sur Tinkercad il bloque sur lightsw:

 In function 'void loop()':
13:69: error: 'lightsw' was not declared in this scope

Pourquoi d'après toi ?

Merci
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: Thierry le août 12, 2025, 08:58:46 pm
Bonsoir. Ca bloque parce que la fonction lightsw() est utilisée AVANT d'être déclarée. Au moment où le compilateur traite la ligne 13 qui contient l'appel de la fonction, il n'a pas encore vu cette fonction.
Il y a deux manières de corriger ça : soit en déclarant explicitement la fonction avec la ligne

boolean lightsw();

tout en haut du source, avant le setup.

soit en déplaçant toute la fonction (lignes 16 à 19) à ce même endroit.
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: brunodujura le août 13, 2025, 07:46:00 am
Merci cela fonctionne, je vais regarder de plus près

Pourquoi cette déclaration tardive peut être supportée dans un cas et pas dans l'autre ?
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: Thierry le août 13, 2025, 10:17:29 am
Ca c'est une bonne question. Le langage C (ou C++) qui est utilisé par Arduino fonctionne comme je l'ai dit. Toute fonction ou variable doit être déclarée avant d'être utilisée. C'est la raison d'être des fichiers include, les .h, dont le rôle est de partager ces déclarations avec d'autres fichiers du projet.
L'équipe Arduino a exploité le fonctionnement du langage pour simplifier au maximum le code que l'utilisateur de l'IDE a besoin de remplir pour faire fonctionner son programme. Ainsi les déclarations des fonctions setup() et loop(), nécessaires pour que ça compile, sont cachées dans des include qui sont ajoutés avant la compilation d'un fichier ino. L'utilisateur ne le sait pas et c'est très bien comme ça.
Dans le cas des simulateurs, c'est encore pire. A la couche d'abstraction d'Arduino dont je viens de parler est ajoutée une couche pour permettre au simulateur de remplacer les fonctions Arduino par les siennes. C'est peut être à ce niveau que ça se joue... Et puis un simulateur ajoute des contraintes, et peut être que Tinkercad ne permet pas d'avoir des fonctions autres que setup() et loop() ?
Titre: Re : Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: Jean-Luc le août 18, 2025, 11:12:22 am
Merci cela fonctionne, je vais regarder de plus près

Pourquoi cette déclaration tardive peut être supportée dans un cas et pas dans l'autre ?

Bonjour,

L'IDE Arduino utilise un pré-processeur qui extrait toutes les fonctions définies dans le sketch pour ajouter automatiquement leur prototype (c'est à dire le nom et les arguments de la fonction, c'est ce qu'explique Thierry 3 messages au dessus) au début du fichier du sketch avant de compiler en C++

Il semblerait que Tinkercad néglige cette étape ?
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: brunodujura le août 26, 2025, 09:35:03 am
Merci à Catplus pour son programme qui fonctionne parfaitement et alimente déjà 5 bâtiments
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: bobyAndCo le août 26, 2025, 07:02:40 pm
Il y a des choses bizarres dans le programme !!!

//https://model-railroad-hobbyist.com/node/23026
//18/02/2025

#define numleds 16
byte ledpins[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2, A3, A4 };  //0,3,4,5,6,8,9,10,11,12,13,A3,A2,A1,A0,A4,A5
void setup() {
  for (int i = 1; i <= numleds; i++) {
    pinMode(ledpins[i], OUTPUT);
    digitalWrite(ledpins[i], LOW);  //HIGH
  }
}
void loop() {
  digitalWrite(ledpins[random(0, numleds + 1)], lightsw());
  delay(5000);  //13000
}
boolean lightsw() {
  if (random(0, 100) > 50) return LOW;  //40
  else return HIGH;
}

Il y a 17 broches dans le tableau byte ledpins [ ] =  { 0,3,4,5,6,7,8,9,10,11,12,13,A0,A1,A2,A3,A4 }
Il faut donc donner comme valeur à numleds #define numleds  17   

Par ailleurs, dans le setup, avec int  i=1 la broche 0 n'est ni positionnée en output, ni placée à LOW puisque l'incrémentation commence à 1.

void setup( )  {                   
    for ( int  i=1; i <= numleds;  i++ )  {     
    pinMode ( ledpins [ i ], OUTPUT) ;
    digitalWrite ( ledpins [ i ] , LOW) ;//HIGH
   }
}

Il faut écrire ceci : for ( int  i = 0; i < numleds;  i++ )
Et donc dans le loop, remplacer numleds + 1 par numleds, sinon le programme va tenter de lire en dehors de la mémoire allouée au tableau et il y aura plantage assuré.

void loop ( )  {   
                digitalWrite ( ledpins [ random ( 0, numleds ) ], lightsw ( ) ) ;

Sinon, c'est un petit programme au résultats qui effectivement doivent être amusants.

Christophe
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: chris_bzg le août 27, 2025, 09:14:59 am
L'allumage réaliste des appartements d'un immeuble (ou des chambres d'un hôtel) a été décrit dans mon guide "Animez votre réseau" chez LR-Presse page 50 avec renvoi sur simulateur Tinkercad et sur simulateur Wokwi afin de récupérer le programme.  ;)
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: bobyAndCo le août 27, 2025, 09:23:45 am
Comment est-il possible d'accéder à ce programme ???

Christophe
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: brunodujura le août 27, 2025, 01:43:33 pm
Merci pour ces explications sur le programme qui me sont bien utiles même si j'avais modifié les pins utilisés, je comprends notamment pourquoi ma première broche ne s'allumait pas...
Titre: Re : Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: chris_bzg le août 27, 2025, 05:23:45 pm
Comment est-il possible d'accéder à ce programme ???

Christophe

Bonjour Christophe,

Les liens vers les simulateurs sont donnés dans mon guide. Un simple copier-coller du programme permet alors de le récupérer.
Tout cela avait aussi été décrit dans LR869 de décembre 2019 et le programme est aussi sur le forum de Loco-Revue, rubrique Arduino.
L'algorithme tient compte du matin et du soir car l'allumage ne se fait pas de la même manière entre les gens qui reviennent du boulot et ceux qui se lèvent pour y partir.
Le programme fourni par CATPLUS est, je crois tiré, de la revue Model-Railroad mais contient des bugs comme tu l'as souligné.

 ;)
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: bobyAndCo le août 27, 2025, 05:31:04 pm
Si je comprends bien, il faut acheter le bouquin ou un exemplaire de Loco Revue !

Le programme est il open source au moins ?

Christophe
Titre: Re : Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: chris_bzg le août 27, 2025, 06:14:56 pm
Si je comprends bien, il faut acheter le bouquin ou un exemplaire de Loco Revue !

Non.
Relis ce que j’ai écrit pour ce qui concerne le programme.
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: bobyAndCo le août 27, 2025, 06:24:12 pm
Ah oui, c'est sans doute moi qui n'ai pas bien posé la question ! Comment est-il possible de se procurer ce guide et accéder ainsi à ce lien qui se fait tant désirer ?

Christophe
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: CATPLUS le août 27, 2025, 06:31:56 pm
Comprends pas pourquoi cela fonctionne (surement la chance du débutant) :) :)

Je vais tester. Merci Christophe
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: bobyAndCo le août 27, 2025, 06:42:14 pm
Si Marcel, ça fonctionne mais pas totalement. Voici ce que disait brunodujura "je comprends notamment pourquoi ma première broche ne s'allumait pas..."

Mais je pense que Christian va finir par nous donner un lien sur le programme dont il parle.

Christophe
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: Fantasio le août 27, 2025, 06:51:02 pm
Ma petite contribution:
le lien pour le programme:  https://forum.lrpresse.fr/viewtopic.php?t=89815 (https://forum.lrpresse.fr/viewtopic.php?t=89815)
le lien pour la simulation avec Wokwi: https://wokwi.com/projects/359368046971594753 (https://wokwi.com/projects/359368046971594753)

Bonne continuation à tous
Titre: Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: bobyAndCo le août 27, 2025, 07:18:00 pm
Ma petite contribution

Merci Fantasio, il est sympa ce petit programme ! Ca valait le coup d'insister.

Christophe
Titre: Re : Re : éclairage bâtiments avec allumages et extinctions variés
Posté par: chris_bzg le août 28, 2025, 09:54:14 am
Ah oui, c'est sans doute moi qui n'ai pas bien posé la question ! Comment est-il possible de se procurer ce guide et accéder ainsi à ce lien qui se fait tant désirer ?

Christophe

Désolé de ne répondre que maintenant.

Ce guide est un guide pour débutants en Arduino et propose des montages à base de microcontrôleurs pour le modélisme ferroviaire, montages reproduits dans les simulateurs Wokwi et Tinkercad. J'en ai souvent parlé sur ce forum, je pensais que tu connaissais.
Il est édité par LR-Presse et peut être acheté par correspondance ou bien lors d'une expo si le groupe LR-Presse est présent.
https://trains.lrpresse.com/produits/animez-votre-reseau-initiation-au-systeme-arduino

Si j'en ai parlé, ainsi que l'article de LR869, c'est parce qu'ils décrivent le principe retenu pour reproduire la réalité. Le matin (avant le boulot) ne se traite pas de la même façon que le soir (après le boulot). Les règles d'allumage correspondent à des règles sociétales que nous partageons tous dans l'ensemble, même si cela a été remis en question par la pandémie de Covid et l'arrivée du télétravail.

On peut améliorer ce qui est proposé en introduisant des périodes où l'allumage le soir est renforcé lors de l'arrivée d'un train : le temps de laisser les passagers descendre et rejoindre leur appartement. On démontre ainsi que les microcontrôleurs sont la seule solution pour reproduire au mieux la réalité, ce qu'aucun dispositif électronique ne pourrait reproduire.

Quant au programme qui est bien dans le domaine public, il pouvait être récupéré sur le forum de Loco-Revue sans avoir à acheter quoi que ce soit, mais c'est se priver des explications pourtant bien utiles si on débute.