EspaceTrain.Com - Le Forum

Modélisme ferroviaire => Arduino et ses clones, digital, électricité, électronique, logiciels => Arduino et ses clones => Discussion démarrée par: Attiny le 18 Février 2021 à 12:34:39

Titre: Clignotement feux de PN
Posté par: Attiny le 18 Février 2021 à 12:34:39
Bonjour à tous

Sur un autre forum, un modéliste souhaitait une petite animation pour son réseau consistant à commander le clignotement de deux feux de PN pendant une durée définie suite à l'appui d'un bouton-poussoir.
J'ai étudié sa demande et utilisé un ATtiny85 pour la réalisation. 
Je pense que certains d'entre vous pourraient être intéressés par ce montage et par le code.

Comme je l'indiquai précédemment la commande est manuelle mais rien n'empêche de remplacer le bouton-poussoir par un capteur, (ILS, capteur à effet HALL, capteur IR...). La détection se fait par l'envoi d'une masse sur la broche 7 de l'Attiny.
Les feux sont des leds et pour simuler l'inertie des ampoules j'ai utilisé la bibliothèque lightDimmer (téléchargeable ici:https://github.com/Locoduino/LightDimmer (https://github.com/Locoduino/LightDimmer)).
Je voulais également que la durée du clignotement commence dès que le bouton-poussoir est sollicité et soit indépendante de la durée de l'appui. Pour ce faire j'ai utilisé une autre bibliothèque : simpleBouton (téléchargeable ici https://forum.arduino.cc/index.php?topic=375232.0 (https://forum.arduino.cc/index.php?topic=375232.0).

Voici mon code qui est facilement transposable sur d'autres cartes (UNO, NANO....), la seule contrainte est que les sorties utilisées soient des PWM.


/* attiny clignotement PN
* 15/02/2021
* commande de clignotement de 2 feux PN pendant une durée fixe
* la temporisation commence dès la fermeture du BP
* utilisation de la bibliothèque LightDimmer
* lien: https://github.com/Locoduino/LightDimmer
* utilisation de la bibliothèque simplebouton
* lien: https://forum.arduino.cc/index.php?topic=375232.0
*
*      Brochage ATiny85
*        =|1  U  8|= VCC
*        =|2     7|= 2 BP--GND
*        =|3     6|= 1 LED2--R--GND
*    GND =|4     5|= 0 LED1--R--GND
*
*/

const byte pin_bouton = 2;           // Numéro de la pin du bouton pour l'ATtiny
int tempoActive = 0;                 // État d'activation de la tempo
unsigned long temporisation = 25000; //valeur de la temporisation en ms
unsigned long tempoDepart = 0;

#include "simpleBouton.h"
simpleBouton bouton(pin_bouton);
#include <LightDimmer.h>
LightDimmer ledPN1;
LightDimmer ledPN2;

void setup() {
ledPN1.begin(0,HIGH);// la led1 est branchée sur la pin 0 (PWM)
ledPN2.begin(1,HIGH);// la led2 est branchée sur la pin 1 (PWM)
pinMode(pin_bouton, INPUT_PULLUP);
int tempoActive =1;
}

void loop(){
  bouton.actualiser();
  LightDimmer::update();   
  if (bouton.vientDEtreEnfonce())// Si le bouton est appuyé
  {
    ledPN1.startBlink(); // la led1 commence son clignotement
    ledPN2.startBlink(); // la led2 commence son clignotement
    tempoActive = 1;     // la temporisation est activée
    tempoDepart = millis();
  }

  // Si la temporisation est active,
  if (tempoActive)
  {     
    // Et si il s'est écoulé 25 secondes,
    if (( millis() - tempoDepart) >= temporisation )
    {
      ledPN1.stopBlink();//on arrête le clignotement de la LED1
      ledPN1.off();
      ledPN2.stopBlink();//on arrête le clignotement de la LED2
      ledPN2.off();
      tempoActive = 0;
    }
  }
}


Amusez vous bien
Titre: Clignotement feux de PN
Posté par: Attiny le 18 Février 2021 à 13:21:08
Pour ceux qui voudraient tenter l'aventure avec un ATtiny85,  la platine sans la puce.
Titre: Clignotement feux de PN
Posté par: nohabdiesel le 18 Février 2021 à 18:36:59
Je n'y comprends rien, pour moi, c'est du chinois, mais je te félicite et si je vivais en Europe, je t'en aurais commandé un, parce que je trouve l'idée intéressante surtout pour un pn situé sur une zone de manoeuvres ou dans une zone industrielle. Comme dans la réalité, ils sont commandés manuellement par le personnel du train. :AA
Titre: Clignotement feux de PN
Posté par: Attiny le 18 Février 2021 à 19:25:39
@nohabdiesel

Tu as raison le langage utilisé est bien une langue étrangère (ou plutôt une écriture) et comme telle il faut apprendre son vocabulaire et sa grammaire pour construire ses phrases correctement afin que le microprocesseur comprenne et obéisse aux ordres qu'on lui donne. 
Mais honnêtement ce n'est pas si compliqué...Et on arrive à produire des choses vraiment intéressantes avec peu de composants et donc un cout faible.  :D
Le microprocesseur étant reprogrammable un très grand nombre de fois, on peut modifier le programmable sans aucun problème et obtenir exactement ce l'on souhaite.
Le code que j'ai mis en ligne est ainsi le résultat d'au moins cinq essais avant j'en sois satisfait.

A l'instar de Philippe Blondé je vous proposerai dans l'avenir d'autres montages.

Bonne continuation

Titre: Clignotement feux de PN
Posté par: Ph Blondé le 19 Février 2021 à 09:37:18
C'est tout l'intérêt de ce petit circuit (l'ATtiny 85) : réaliser des animations sans prendre de place  :)
On peut faire des bêtes clignotants à vitesse variable, des flash, des braséros et même commander un servomoteur.
Merci Attiny  :D :D