Feux tricolore parue dans le N°798 de Loco-Revue (janvier 2014)

Répondre
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6653
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
avr. 2021 23 16:47

Feux tricolore parue dans le N°798 de Loco-Revue (janvier 2014)

Message par likikiFrance

Feux tricolore parue dans le N°798 de Loco-Revue (janvier 2014).


Finie l'approche théorique des modules Arduino, cette fois on entre bel et bien dans la pratique, et cette première réalisation (feux tricolores routiers) permettra aux débutants de réaliser une première animation pour leur réseau.   

Et oui, il faut commencer simplement et bien acquérir les notions de base avant d'aller plus loin.  : 

L'article de LR798 vous guidera pour le montage d'un feu tricolore de carrefour routier. Le montage électronique est très simple et vous pouvez le faire sur une breadboard (plaque qui permet de réaliser un montage sans faire de soudure). Les composants sont restreints (6 LED et 6 résistances de 150 ohms) et bon marché. Voici ce que cela donne :

Image

Le programme est donné dans la revue ; pour ce premier montage, je vous invite à le recopier par vous-même, afin de vous approprier le principe de fonctionnement qui est très simple. Attention, respecter bien la syntaxe : un point virgule n'est pas deux points, et une accolade n'est pas une parenthèse. Les commentaires vous permettront de comprendre chaque ligne de programme et vous n'êtes pas obligé de les recopier.    

Une fois que le montage fonctionne sur la breadboard, il reste à le transférer sur votre réseau de façon propre et fiable ; vous trouverez quelques conseils pour cela dans l'article.

Je vous souhaite de prendre plaisir à ce montage.

Pour ceux qui pourraient trouver désuet d'utiliser un module Arduino pour commander de simples LED (Diode électro-luminescente), sachez qu'un montage peut en cacher un autre. Voici, pour vous en convaincre, une petite vidéo :



Je vous laisse cogiter à ce que vous venez de voir  :roll: . Bien entendu, les solutions vous seront données dans un proche avenir ; ne démontez donc pas trop vite le montage expérimental du feu tricolore.   

Etant l'auteur de l'article, je vais tenter de vous aider.

Tout d'abord, le programme publié dans l'article, souffre un peu d'un problème de police de caractères et de mise en page. La première chose à faire est donc de vérifier votre programme qui doit ressembler à cela :
/*
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 ;

// 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 (30000) ; // Feu vert A1V pendant 30 secondes
  digitalWrite (A1V, LOW) ; // Extinction de A1V
  digitalWrite (A1O, HIGH) ; // et allumage de A1O
  delay (5000) ; //durée 5 secondes
  digitalWrite (A1O, LOW) ; // Extinction de A1O
  digitalWrite (A1R, HIGH) ; // et allumage de A1R
  delay (2000) ; // Temporisation du chauffard !
  
  // Concerne l'autre feu B1
  digitalWrite (B1R, LOW) ; // Extinction de B1R
  digitalWrite (B1V, HIGH) ; // et allumage de B1V
  delay (30000) ; // Feu vert B1V pendant 30 secondes
  digitalWrite (B1V, LOW) ; // Extinction de B1V
  digitalWrite (B1O, HIGH) ; // et allumage de B1O
  delay (5000) ; // durée 5 secondes
  digitalWrite (B1O, LOW) ; // Extinction de B1O
  digitalWrite (B1R, HIGH) ; // et allumage de B1R
  delay (2000) ; // 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
}

  
C'est un peu long  :roll: , mais ce programme fonctionne tel quel (à condition de brancher les LED sur les sorties 4 à 9, comme indiqué dans l'article).

Après avoir rectifié les petites différences (parfois dues à une simple erreur de frappe comme on en fait tous), cela devrait fonctionner. Vérifier bien surtout les points-virgules en fin de ligne (on les oublie souvent) et la structure des fonctions void setup () { } et void loop () { }.

Les accolades { ou } ne sont pas des crochets et sont obtenues par la combinaison des touches "Alt Gr" et touche 4 ou + du clavier alphabétique (pas numérique).

Vérifiez également que vous avez écrit void et non pas Void (vu ce que vous avez reporté comme message d'erreurs).

Si vous recopiez bien ce qui est plus haut, cela devrait fonctionner du premier coup.

Christian

Page d'origine
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Répondre