Un chenillar à partir du montage publié dans Loco-Revue 798

Répondre
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 2997
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 : 55
Pays :
France (fr)
France
avr. 2021 23 16:58

Un chenillar à partir du montage publié dans Loco-Revue 798

Message par likikiFrance

Un chenillar à partir du montage publié dans Loco-Revue 798


Afin de vous démontrer l’avantage de l’électronique programmable sur l’électronique câblée, je vous propose de garder le même montage électronique et de changer le programme afin de changer complètement le comportement de l’ensemble.

Nous allons donc écrire un programme qui fera flasher chacune des LED les unes après les autres, afin de reproduire un chenillard utilisé pour signaler des travaux routiers. Dans un premier temps, changez les 6 LED des feux tricolores pour 6 LED jaunes ou oranges (ce sera plus crédible). Le montage que vous obtenez est celui-ci :

Image


Voici maintenant le programme à reproduire avec l'environnement de développement d'Arduino :
/*
Ce programme réalise un chenillard.
Il fait flasher successivement six LED oranges reliées aux sorties 4 à 9
Puis il réalise une pause de 500 millisecondes avant de recommencer
*/

// Initialisation des lignes 4 à 9 en sortie
void setup () {
  pinMode (4, OUTPUT) ;
  pinMode (5, OUTPUT) ;
  pinMode (6, OUTPUT) ;
  pinMode (7, OUTPUT) ;
  pinMode (8, OUTPUT) ;
  pinMode (9, OUTPUT) ;
}

// Fonction loop
void loop () {
  // Extinction de toutes les LED au départ du programme
  for (byte i = 4 ; i <= 9 ; i++) {
    digitalWrite (i, LOW) ; // éteint la LED reliée à la broche i
  }
  
  // Boucle pour faire flasher les LED
  for (byte i = 4 ; i <= 9 ; i++) {
    digitalWrite (i, HIGH) ; // allume la LED sur broche i
    delay (50) ; // durée du flash 50 millisecondes
    digitalWrite (i, LOW) ; // éteint la LED
  }
  
  // délai de 500 millisecondes
  delay (500) ;
  
  // Recommence la séquence
}

  
Vérifiez ce programme et téléversez le dans votre module Arduino ; vous obtenez un chenillard qui se comporte comme dans la vidéo postée plus haut


:idea:    :arrow: :arrow:  :arrow:

Il y a six LED à faire flasher les unes à la suite des autres. On peut bien-sûr écrire six fois de suite les instructions adéquates pour cela, mais il est plus intelligent de recourir à une boucle qui sera parcourue six fois.

La boucle for utilise une variable d’incrémentation (un compteur) et est très souple d’emploi :

for (initialisation ; condition ; incrément)
{
instructions exécutées dans la boucle
}

Le compteur est i et désigne le numéro de broche sur laquelle est connectée la LED. i va donc de 4 à 9 (dans ce montage).
i est donc initialisé à 4 (initialisation)
i doit rester inférieur ou égal à 9 (condition)
i augmente de 1 à chaque fois que la boucle est parcourue (incrément i++)
On peut aussi faire des boucles où le compteur, initialisé à une valeur forte, est décrémenté jusqu'à une valeur faible.

Chaque fois que la boucle est parcourue, on allume une LED pendant 50 ms, et ce n'est jamais la même LED (avantage de la boucle).

Nous aurions aussi pu utiliser une boucle dans la fonction setup pour initialiser les broches 4 à 9 en sortie ; je vous laisse le faire comme exercice.

Une prochaine fois, nous parlerons de l'enseigne lumineuse, visible dans la vidéo.   ;) 

Christian

Page d'origine
:kingmoi:

ImageImageImage


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