LOCODUINO

Feux tricolores

.
Par : Christian, Dominique, Guillaume

DIFFICULTÉ :

Après vous avoir présenté deux animations simples de lumière avec « Chenillard de DEL » et« Enseigne de magasin », nous allons en voir une autre.

Les feux tricolores sont comme leur nom l’indique une animation lumineuse qui trouvera sa place sur tout réseau suffisamment récent dans le temps.

Une petite démonstration en vidéo :

Les pré-requis

Vous pouvez très bien arrêter votre lecture à ce stade pour essayer de faire comme l’animation pour vous entraîner à programmer. Vous pourrez ensuite comparer votre programme avec celui ci-dessous.

Pour quel arduino ?

Le code est écrit pour un Arduino Uno, mais facilement transposable à un autre type d’Arduino. Il est toutefois écrit avec la fonction delay(...) ce qui nécessite une adaptation pour rajouter d’autres effets par exemple de lumière. En effet, la fonction delay(...) est bloquante.

Le matériel nécessaire

  • un ordinateur avec l’IDE arduino installé : Installation de l’IDE Arduino
  • une carte arduino et son cable usb
  • des fils et une plaque de prototypage
  • 6 DEL (2 rouges, 2 oranges et 2 vertes) ainsi que 6 résistances de 220 ohms

Si vous ne savez pas ce que sont ces bidules, l’article « Un minimum pour jouer rapidement avec un Arduino » vous aidera.
Vous trouverez une liste d’endroits où les acheter dans cet article : Où acheter ?.

Les branchements

Figure 1
Figure 1
Montage sur une platine d’essai des feux tricolores

Le schéma correspond à une situation à deux feux tricolores, par exemple d’un croisement d’une route à sens unique.

Pour un croisement de deux routes, avec les 2 feux de la même route synchronisée, il suffit de rajouter une DEL de la même couleur en série sur chaque DEL de chaque feu. Dans cette hypothèse, il sera nécessaire de diminuer la valeur des résistances pour conserver une brillance adaptée. Le programme reste le même.

Le programme

Le code ci-après est à recopier dans l’interface de l’IDE d’arduino. Il y a même un bouton télécharger à la fin.

/*
 * Programme pour arduino uno
 * par C. Bézanger Octobre 2013
 * Licence GNU GPLv3
 * 
 * Ce programme fait fonctionner des feux tricolores.
 * Six LED (vertes, oranges et rouge) sont reliées aux sorties 4 à  9
 * Les sorties 4 à  6 forment le feu A1
 * Les sorties 7 à  9 forment le feu B1
 */
     
// Initialisation des variables
const byte A1V = 4 ;
const byte A1O = 5 ;
const byte A1R = 6 ;
const byte B1V = 7 ;
const byte B1O = 8 ;
const byte B1R = 9 ;

//Délai des différents temps mis en const pour changer facilement 
// si le délai imparti ne vous satisfait pas. Il s'agit de millisecondes
const long TempsAttenteFeuRougeSeul = 2000;
const long TempsAttenteFeuVert = 30000;
const long TempsAttenteFeuOrange = 5000;
     
// Initialisation des lignes 4 à  9 en sortie
void setup () {
  pinMode (A1V, OUTPUT) ;
  pinMode (A1O, OUTPUT) ;
  pinMode (A1R, OUTPUT) ;
  pinMode (B1V, OUTPUT) ;
  pinMode (B1O, OUTPUT) ;
  pinMode (B1R, OUTPUT) ;
}
     
// Fonction loop
void loop () {
  // Extinction de toutes les LED au départ
  digitalWrite (A1V, LOW) ;
  digitalWrite (A1O, LOW) ;
  digitalWrite (A1R, LOW) ;
  digitalWrite (B1V, LOW) ;
  digitalWrite (B1O, LOW) ;
  digitalWrite (B1R, LOW) ;
     
  // Allumage de A1V et B1R
  digitalWrite (A1V, HIGH) ;
  digitalWrite (B1R, HIGH) ;
     
  // Début de cycle
   
  // Concerne le feu A1
  delay (TempsAttenteFeuVert) ; // Feu vert A1V pendant 30 secondes
  digitalWrite (A1V, LOW) ; // Extinction de A1V
  digitalWrite (A1O, HIGH) ; // et allumage de A1O
  delay (TempsAttenteFeuOrange) ; //durée 5 secondes
  digitalWrite (A1O, LOW) ; // Extinction de A1O
  digitalWrite (A1R, HIGH) ; // et allumage de A1R
  delay (TempsAttenteFeuRougeSeul) ; // Temporisation du chauffard !
     
  // Concerne l'autre feu B1
  digitalWrite (B1R, LOW) ; // Extinction de B1R
  digitalWrite (B1V, HIGH) ; // et allumage de B1V
  delay (TempsAttenteFeuVert) ; // Feu vert B1V pendant 30 secondes
  digitalWrite (B1V, LOW) ; // Extinction de B1V
  digitalWrite (B1O, HIGH) ; // et allumage de B1O
  delay (TempsAttenteFeuOrange) ; // durée 5 secondes
  digitalWrite (B1O, LOW) ; // Extinction de B1O
  digitalWrite (B1R, HIGH) ; // et allumage de B1R
  delay (TempsAttenteFeuRougeSeul) ; // Temporisation du chauffard !
  digitalWrite (A1V, HIGH) ; // On est revenu au point de départ
     
  // Feu A1 vert et feu B1 rouge : le cycle peut recommencer
}

27 Messages

  • Feux tricolores 22 novembre 2017 13:43, par pablo

    Salut je suis un débutant dans la réalisation de projets électronique s et j’aimerais savoir comment l’unité d’acquisition(signal d’horloge, ) de ce projet fonctionnera t’il ?

    Répondre

  • Feux tricolores 22 novembre 2017 17:39, par Jean-Luc

    Désolé mais je n’ai absolument rien compris. Quelle est exactement la question ?

    Répondre

  • Feux tricolores 2 octobre 2018 19:58, par Guillaumevlv62

    Bonjour,
    Je suis débutant dans la programmation de l’arduino
    Je posséde des feux tricolore en Anode commune je me doute bien que le cablage sur Arduino Uno est un peu différent de celui présenté ( dans mon cas connection des l’anode à la pin +5V ) mais ma question est est ce que le programme que vous avez ecrit reste le même ou faut il inverser l’état des sorties de la carte ?
    Merci de votre retour

    Répondre

    • Feux tricolores 4 octobre 2018 12:47, par Christian

      En consultant l’article http://locoduino.org/spip.php?article5 vous comprendrez comment on peut monter une DEL sur Arduino soit par son anode, soit par sa cathode. Ce qui change dans le programme, c’est l’état de la broche qui peut allumer la DEL. Donc, par rapport à mon programme, il suffira simplement de changer les HIGH en LOW. Et bien sûr, penser à relier l’anode commune au 5V qu’on trouve sur Arduino (mais ceci est bien expliqué dans l’article que je vous conseille actuellement).

      Christian

      Répondre

  • Feux tricolores 3 octobre 2018 09:16, par dominique

    Comme chaque broche d’entree-sortie de l’Arduino peut, soit fournir du courant à 5V, soit consommer du courant vers le 0V, vous avez raison !

    Dans le cas des leds en anode commune, elles s’allument quand la broche correspondante est à l’etat LOW, et s’eteint avec HIGH.

    Répondre

  • Feux tricolores 20 décembre 2018 04:11, par ILBOUDO

    Merci pour l’explication, cependant moi, n’ayant pas 6 résistances, j’ai pris une résistance de 220 ohm que j’ai relié à l’anode formant une anode commune et ensuite au +5V. Maintenant les cathode directement sur chaque sortie. Es-ce que ce type de montage peut engendrer un dysfonctionnement du programme. Car j’ai testé le programme mais ça ne donne pas comme ce qui a été dit, les feux s’allument de façon aléatoire.

    Répondre

    • Feux tricolores 20 décembre 2018 11:34, par Christian

      Chaque feu n’allume qu’une seule couleur (donc une seule LED) à la fois. En conséquence, on peut très bien ne mettre qu’une seule résistance, soit sur la cathode commune, soit sur l’anode commune. Mais en fonction de ce choix, l’allumage des LED est obtenu soit avec un état HIGH, soit avec un état LOW.
      Ce n’est donc pas le montage qui est responsable du mauvais fonctionnement mais la logique de commande. Dans l’article, les sorties d’Arduino commandaient les anodes des LED qui avaient leur cathode commune reliée à la masse (GND) et le programme allumait la LED avec un état HIGH. Votre montage est à anode commune, il faut donc changer les ordres d’allumage et le faire avec un état LOW.
      Enfin, vu le prix d’une résistance, il est préférable d’en mettre une par LED ; c’est un bon réflexe à acquérir qui pourra vous éviter des ennuis sur un montage un peu plus compliqué que celui-ci.
      Je vous invite à lire l’article "Signaux lumineux et Arduino" que vous trouverez dans la rubrique "Composants électroniques" surtout si vous achetez vos signaux dans le commerce (ils sont souvent à anode commune).

      Christian

      Répondre

  • barrière commandée par poussoir 15 décembre 2019 17:54, par Gaudron Marcel

    bonjour,
    J’ai réalisé, avec la carte UNO et la platine de prototypage, une commande de lever de barrière avec temporisation (type passage piéton) avec bouton poussoir, servomoteur et leds . Sur table, cela fonctionne bien.
    Mon but est de passer du montage de prototypage (montage volant un peu fouillis et surtout très fragile) à un montage plus élaboré, à intégrer au sein du circuit du train, c’est-à-dire :
    déport de l’interrupteur, déport du servomoteur ainsi que des 2 leds
    Faut-il utiliser une 2eme platine de cablage ? je ne sais pas trop comment m’y prendre.
    merci pour les conseils avisés

    Répondre

    • barrière commandée par poussoir 16 décembre 2019 18:24, par Christian

      Il suffit de déporter la platine UNO sur le réseau, et la fixer au plus près de ce qu’elle commande, et ensuite de relier les accessoires (LED, Servo, poussoir) au connecteur de la platine. Les fils peuvent alors être collés sur la structure du réseau ou bien passer dans des guide-fils.
      Une autre solution est de remplacer la platine UNO par une NANO et d’utiliser une petite platine spéciale où viendra s’enficher le NANO et où on dispose de connecteurs à vis pour relier les dits accessoires. Cela se trouve sur internet en cherchant ce qui est vendu pour le NANO.
      Quelques articles de ce site parlent de comment faire un montage propre qui tient dans le temps ; vous pouvez vous en inspirer.
      Christian

      Répondre

  • Feux tricolores 12 mars 2020 13:48, par Koua Pascal NIAMIEN

    Bonjour,
    Je désire passer du montage de prototypage à un montage plus élaboré à intégrer au sein du circuit d’un Airbus 320 c’est-à-dire déport de l’interrupteur, déport du servomoteur ainsi que des 02 Leds.Faut-il utiliser une seule platine de cablage ?Je ne sais pas trop comment m’y prendre.(Merci pour vos conseils avisés)

    Répondre

  • Feux tricolores 12 mars 2020 17:22, par msport

    Bonjour,
    je crains que vous vous trompiez de site (et de fil). Locoduino est destiné au modélisme ferroviaire.
    Cordialement

    Répondre

  • Feux tricolores 21 mars 2020 22:41, par Max

    Bonjour , merci pour ce programme, j’aimerai savoir comment interrompre le cycle des feux tricolores avec par exemple un delais de 15 minutes et simuler une panne en faisant juste clignoté les feux oranges pendant 5 minutes et reprendre le cycle normalement et ansi de suite sans bouton poussoire ou autre.
    merci

    Répondre

  • Feux tricolores 11 août 2020 17:49, par Joseph

    Bonjour Équipe Technique très ravi de vous lire,
    Très intéressée de ce projet
    Y a-t-il moyen de m aidé à réaliser un projet complet d un feux tricolores complet d un carrefour...
    Celà pourrait m aidé à améliorer sur mon TFC car j n en dispose en rien comme matériel...

    Cordialement Ir Joseph DRC

    Répondre

    • Feux tricolores 11 août 2020 23:04, par msport

      Bonjour,
      Locoduino est un site participatif dédié au modélisme ferroviaire utilisant les Arduino.
      Il ne peut répondre aux demandes visant à passer le test de connaissance du francais (TFC)
      Cordialement

      Répondre

  • Feux tricolores 26 février 2021 06:37, par martial

    Bonjour. je suis en train de faire mes feux de circulation, j’avais déja écrit mon code avant de lire le votre, qui est plus simple et plus court que le miens. (je débute) Ma question est : je veux connecter 6 leds par sorties. est ce que l’arduino va supporter les 0.4 Mah X6 ?

    Répondre

    • Feux tricolores 26 février 2021 08:42, par Jean-Luc

      Bonjour,
      Vous pouvez consulter l’article « Que peut-on alimenter avec un Arduino » qui répondra à votre question dans le détail. Une réponse courte est : non si vous voulez que la LED passe 20 mA. Toutefois vous pouvez déjà mettre deux LED en série car leur tension de seuil est inférieure à 2,5V (pour les rouges, les vertes et les jaunes). Dans ce cas, vous avez 3 x 20 mA à fournir pour les 6 LED, ce qui dépasse la capacité d’alimentation d’une sortie. Vous pouvez toutefois utiliser des LED haute luminosité qui nécessitent un courant plus faible pour briller correctement. Si la brillance est satisfaisante avec 6mA alors vous pourrez alimenter vos 6 LED avec une sortie. Attention de garder une résistance pour chaque branche de 2 LED. Si vous ne le faites pas seule la branche avec la tension de seuil la plus faible brillera correctement.

      Répondre

    • Feux tricolores 26 février 2021 11:03, par msport

      Question curieuse : pourquoi 6 LED par sortie en modélisme ferroviaire, cela mérite une description (et un schéma) dans "Vos projets" du forum.
      L’autre problème potentiel est la tenue en température du régulateur de tension de l’Arduino : il faut calculer sa dissipation avec P=UxI. U étant la différence de tension en l’alimentation et 5V et I la consommation totale.
      Et enfin 0.4 Mah veut-t-il dire 0,4 mA soit 2,4 mA en tout ?

      Répondre

      • Feux tricolores 26 février 2021 11:39, par Jean-Luc

        J’imagine que c’est pour avoir 6 feux synchronisés. Ceci dit 6 feux x 3 LED = 18. Avec un Nano ou un Uno, on a assez de sortie avec 1 LED par broche : D2:D13 = 12 + A0:A5 = 6. Le compte est bon sans mettre de LED sur la ligne série.

        Répondre

  • Feux tricolores 28 février 2021 09:44, par martial

    Bonjour. excusez ma réponse tardive.
    Je me corrige. mes leds font 20 mAh chacunes, et non 40 mAh.
    Mon projet se porte pour un feu multicolore... routier. et non pas ferroviaire.
    Il y a donc 3 projecteurs par couleur et par feu, + l’indicateur piéton.
    Je me suis acheté plusieurs arduino nano, je vais donc voir comme l’a dit Jean Luc, si j’ai assez de sorties pour tout alimenter sans passer par un module de puissance.

    PS : Effectivement, cela ne porte pas du sujet du ferroviaire, mais reste du modelisme tout de même...

    Répondre

    • Feux tricolores 1er mars 2021 10:28, par Christian

      Il y a aussi la possibilité d’alimenter vos LED séparément et de les commander avec un circuit ULN2803. Pour voir tout cela, vous pouvez consulter cet article :
      https://www.locoduino.org/spip.php?...
      Il suffit de remplacer l’ATtiny par une carte Uno, ce qui est encore plus facile à réaliser.

      Répondre

  • Feux tricolores 28 février 2021 12:42, par msport

    Pas de problème, les routes ont leur place dans le modélisme ferroviaire. Il en faut bien pour mettre des passages à niveau. Et si en plus, il y a un Arduino ...

    Juste une remarque : 20 mA (et non mAh, unité de capacité pour les batteries) est le courant nominal d’une LED, mais les LED à haute luminosité donnent de bons résultats avec la moitié ou le quart. Par contre vous trouverez probablement utile d’équilibrer la luminosité trop faible des vertes en réduisant le courant des rouges et oranges.

    Si 20 mA ne posent pas de problème pour une sortie, le cumul pour un seul Nano met en danger son régulateur de tension. 18 feux x 20 mA soit environ 400 mA. Si vous alimentez le Nano via RAW en 12V, la chute de tension de 7V va provoquer une dissipation de chaleur de 2,8 watts ce que son régulateur de tension ne supportera pas. Dans le meilleur des cas, il se mettra en sécurité et tout s’éteindra. Le grand maximum est de 1 W, ce qui est envisageable avec un bloc secteur de 7,5V pour alimenter le Nano (2,5V x 0,4A). Et même comme cela, vous vous brulerez les doigts sur le régulateur AMS1117 5.0. D’où l’intérêt de réduire le courant dans les LED expérimentalement.

    Pour le nombre de broches, vous pouvez même récupérer TX1 comme sortie, à condition de ne rien y connecter pendant le déversement du programme. A6 et A7 ne peuvent être utilisées que comme entrées.

    Répondre

  • Feux tricolores 26 mai 2021 22:32, par Achille

    Bonsoir, j’aimerais savoir s’il y’a des cartes de puissance pour Quatre lignes de feux de type P4LBT (équipement de feu tricolore) merci

    Répondre

    • Feux tricolores 26 mai 2021 23:13, par Christian

      Je ne sais pas ce que sont les lignes de feux de type P4LBT, donc je ne peux pas répondre à votre questions sans avoir quelques compléments d’information à ce sujet. Quel est exactement votre projet ? S’agit-il de modélisme ferroviaire ?

      Répondre

  • Feux tricolores 8 novembre 2021 13:38, par colbert Guanin

    merci bien

    Répondre

  • Feux tricolores 21 janvier 15:53, par alain auzereau

    bonjour,

    comment charger le code ???
    merci à vous .

    Alain

    Répondre

Réagissez à « Feux tricolores »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Projets »

Les derniers articles

Les articles les plus lus