Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Les fiches pratiques de Loco-Revue sur Arduino

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Les fiches pratiques de Loco-Revue sur Arduino

Publié: Lun 24 Avr 2017, 12:33 
Bonjour à tous,

Depuis quelques temps, vous trouvez des fiches pratiques dans la catégorie "Electronique" qui sont consacrées au monde d'Arduino :

N°835 - Février 2017 : Débuter facilement avec Arduino
N°836 - Mars 2017 : Arduino pour surveiller votre réseau
N°837 - Avril 2017 : Comment programmer le µC ATtiny45
N°838 - Mai 2017 : Avec Arduino, commandez un signal de B.A.L

J'espère que ces fiches vous seront utiles et vous donneront envie de découvrir la programmation des microcontrôleurs. Les exemples donnés sont forcément simples (ils doivent tenir sur deux pages) et les programmes sont très courts. Cependant, les contraintes de mise en page ne permettent pas de donner les programmes en excluant tout risque d'erreurs. De plus, pourquoi recopier un programme quand internet nous permet de les télécharger.

J'ai donc décidé de mettre ici, dans ce fil, les programmes des fiches pratiques. Ce fil sera aussi l'occasion d'un échange, réponse aux questions, suggestion de votre part, etc.

Enfin, si le virus d'Arduino vous a contaminé et que vous vouliez en savoir plus, je vous rappelle que le site http://www.locoduino.org est fait pour découvrir et apprendre tout ce qui concerne Arduino appliqué aux trains miniatures.

Et j'espère aussi vous rencontrer à Trainsmania puisque j'ai l'honneur d'y avoir été invité pour faire une conférence. Toute l'équipe de LOCODUINO sera présente et reconnaissable à un badge porté autour du cou : si vous en avez envie, n'hésitez pas à venir discuter d'Arduino avec nous, nous vous attendons.

Programme de la Fiche Pratique de Mars 2017 :

Code: Tout sélectionner
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 500;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); // DEL reliée a broche 13
  pinMode(12, INPUT_PULLUP) ; // ILS d approche du train
  pinMode(11, INPUT_PULLUP) ; // ILS de sortie du train
}

void loop() {
  while(digitalRead(12)==HIGH){}
  while(digitalRead(11)==HIGH)
  {
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      if (ledState == LOW) {ledState = HIGH;}
      else {ledState = LOW;}
    digitalWrite(LED_BUILTIN, ledState);
   }
}
digitalWrite(LED_BUILTIN, LOW); // DEL sur OFF
}


Programme de la Fiche Pratique de Mai 2017 :

Code: Tout sélectionner
/***************************
* Signal_BAL - 30/11/2016 *
* *************************
* Ce programme simule le fonctionnement d un signal lumineux a trois
* feux d un B.A.L Block Automatique Lumineux. Il n assure pas
* l espacement des trains. Lorsque la loco declenche le premier ILS,
* le signal se met au rouge. Lorsque la loco declenche le deuxieme
* ILS, le signal se met a l orange pour une duree egale a celle du
* rouge, puis repasse au vert.
*/

/*  VARIABLES
  *  --------------------------------------------------------------
  *  debRouge : temps de debut du feu rouge
  *  finRouge : temps de fin du feu rouge
  *  dureeRouge ; duree du feu rouge
  *  debOrange : temps de debut du feu orange
  *  flagOrange : booleen 0 si feu orange eteint, 1 si allume
  */

  /* BRANCHEMENTS
   * --------------------------------------------------------------
   * ILS E (entree) sur 2
   * ILS S (sortie) sur 3
   * feu vert sur 4
   * feu rouge sur 5
   * feu orange sur 6
   */

const byte ILS_entree = 2;
const byte ILS_sortie = 3;
const byte feu_vert = 4;
const byte feu_rouge = 5;
const byte feu_orange = 6;
unsigned long debRouge = 0;
unsigned long finRouge = 0;
unsigned long debOrange = 0;
unsigned long dureeRouge;
boolean flagOrange = 0;

void setup() {
  pinMode(ILS_entree, INPUT_PULLUP);
  pinMode(ILS_sortie, INPUT_PULLUP);
  pinMode(feu_vert, OUTPUT);
  pinMode(feu_rouge, OUTPUT);
  pinMode(feu_orange, OUTPUT);
  // Initialisation du signal a anode commune, allume par LOW
  digitalWrite(feu_vert, LOW);
  digitalWrite(feu_rouge, HIGH);
  digitalWrite(feu_orange, HIGH);
  }

void loop() {
  // Surveillance de l ILS d entree
  while (digitalRead(ILS_entree) == HIGH)
  {
    // ILS E non declenche
    if (flagOrange)
    {
      if ((millis() - debOrange) > dureeRouge)
      {
        digitalWrite(feu_orange, HIGH);
        flagOrange = 0;
        digitalWrite(feu_vert, LOW);
      }
    }
   }
  // ILS E declenche
  digitalWrite(feu_vert, HIGH);
  digitalWrite(feu_orange, HIGH);
  flagOrange = 0;
  digitalWrite(feu_rouge, LOW);
  debRouge = millis();
  // Surveillance de l ILS de sortie
  while (digitalRead(ILS_sortie) == HIGH)
  {
    // ILS S non declenche, ne rien faire
  }
  // ILS S declenche
  finRouge = millis();
  dureeRouge = finRouge - debRouge;
  digitalWrite(feu_rouge, HIGH);
  digitalWrite(feu_orange, LOW);
  flagOrange = 1;
  debOrange = millis();

}


Au plaisir de vous écrire d'autres fiches pratiques en électronique.

Christian
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1516
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Les fiches pratiques de Loco-Revue sur Arduino

Publié: Mar 25 Avr 2017, 16:09 
Excellente initiative Christian. Sois le bienvenu à Bravig'Lille, j'ai un excellent Jasnière qui sort des chais du Marquis de la Volière.
Rdv à Sedan
Avatar de l’utilisateur
Bravigou
Intarissable !
 
Messages: 5929
Inscrit le: Mer 19 Déc 2012, 18:16
Localisation: Le Mans
Âge: 60
Echelle pratiquée: Ho
Prénom: François
Club: Rigollots Mecspeed

Re: Les fiches pratiques de Loco-Revue sur Arduino

Publié: Mar 25 Avr 2017, 17:49 
Je ne manquerai pas de te rendre visite. :wink:
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1516
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Les fiches pratiques de Loco-Revue sur Arduino

Publié: Ven 02 Juin 2017, 15:40 
Le montage décrit dans la fiche pratique III.42 du numéro 838 de mai 2017 fait appel à un module UNO (ce qui est le plus facile pour ceux qui débutent), mais il peut être réalisé avec un microcontrôleur de petite taille comme l'ATtiny45.

Dans ce cas, le programme que vous trouverez un peu plus haut dans cette page écrit pour un module UNO doit simplement être adapté pour que les entrées-sorties soient numérotées de 0 à 4 (par exemple 0 à 2 pour les trois feux du signal et 3 et 4 pour les ILS E et S). Et bien entendu, ILS et signal à anodes communes doivent être reliés aux E/S 0 à 4 du microcontrôleur.

La vidéo ci-dessous montre l'effet obtenu, que ce soit avec un UNO ou un µC ATtiny45 :
https://vimeo.com/219999631

Ce montage est donc à réserver en priorité aux petits réseaux où un seul signal est installé à l'endroit le plus stratégique pour satisfaire l'observateur. :wink:
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1516
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Les fiches pratiques de Loco-Revue sur Arduino

Publié: Sam 03 Juin 2017, 08:59 
Très sympathique ce petit montage.
Cordialement,

Christian.
Avatar de l’utilisateur
likiki
Causant
 
Messages: 251
Inscrit le: Dim 29 Avr 2012, 15:21
Localisation: Corbeil Essonne
Âge: 50
Echelle pratiquée: N
Prénom: Christian


Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Eds27 et 2 invité(s)