Auteur Sujet: animation de PN  (Lu 2236 fois)

bucks

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
animation de PN
« le: septembre 13, 2016, 09:19:35 pm »
bonjour à tous,

sur base du décodeur d'acessoire versatile proposé sur le site ... je me suis mis en tête de développer une animation de PN, reprenant le clignotement réaliste du feu de PN (code dispo sur locoduino) ainsi que la sonnette l'accompagnant en se servant d'un DFPlayer....

la suite dès que je dispose des composants commandés :)

Marc-Henri

  • Full Member
  • ***
  • Messages: 132
    • Voir le profil
    • Modélisme ferroviaire & électronique
Re : animation de PN
« Réponse #1 le: septembre 15, 2016, 09:44:37 am »
Bonjour,

Sur mon réseau N j'ai réalisé un PN avec barrières et clignotants, mais sans le son !

J'ai utilisé un Attiny 2313 programmé directement et les détails sont décrits dans le post ci-après du forum du N: http://le-forum-du-n.forumotions.net/t12790-pn-actionne-par-servo-moteurs-electronique.

Les techniques mises en oeuvre se transposent sans problème à l'environnement Arduino.

Bonne réalisation et meilleures salutations.

bucks

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Re : animation de PN
« Réponse #2 le: septembre 15, 2016, 08:25:17 pm »
mais mon objectif est plus humble... juste faire sonner et clignoter sans barrière .... puis ajouter la partie "DCC"

j'ai cumulé des codes pour arriver a cela :

#include <DFPlayer_Mini_Mp3.h>
#include <SoftwareSerial.h>

enum { ETEINT, EN_AUGMENTATION, ALLUME, EN_DIMINUTION };

struct FeuClignotant {
  const byte pin;
  byte etat;
  unsigned long dateDernierChangement;
};

struct FeuClignotant feuPN = {3, ETEINT, 0 };

void gereFeuClignotant(struct FeuClignotant& feu)
{
  unsigned long date = millis();
  int valeurPWM;
  switch (feu.etat)
  {
    case ETEINT:
      analogWrite(feu.pin, 0);
      // Attente de 200ms
      if (date - feu.dateDernierChangement >= 200) {
        // les 200ms sont passée, on change l'état du feu
        feu.dateDernierChangement = date;
        feu.etat = EN_AUGMENTATION;
      }
      break;
    case EN_AUGMENTATION:
      // La valeur de la PWM est donnée par la difference entre
      // la date et la dateDernierChangement
      valeurPWM = date - feu.dateDernierChangement;
      if (valeurPWM <= 250) analogWrite(feu.pin, valeurPWM);
      else {
        // Les 250 ms sont passées, on change l'état du feu
        feu.dateDernierChangement = date;
        feu.etat = ALLUME;
      }
      break;
    case ALLUME:
      analogWrite(feu.pin, 250);
      // Attente de 200ms
      if (date - feu.dateDernierChangement >= 200) {
        // les 200ms sont passée, on change l'état du feu
        feu.dateDernierChangement = date;
        feu.etat = EN_DIMINUTION;
      }
      break;
    case EN_DIMINUTION:
      // La valeur de la PWM est donnée par 250 moins la difference entre
      // la date et la dateDernierChangement. Attention aux parenthèses
      valeurPWM = 200 - (date - feu.dateDernierChangement);
      if (valeurPWM >= 0) analogWrite(feu.pin, valeurPWM);
      else {
        // Les 250 ms sont passées, on change l'état du feu
        feu.dateDernierChangement = date;
        feu.etat = ETEINT;
      }
      break;
  }
}

void setup() {
  // put your setup code here, to run once:
  pinMode(feuPN.pin, OUTPUT);
Serial.begin (9600);
 mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module
 delay(1);
 mp3_set_volume (30);
 pinMode(feuPN.pin, OUTPUT);

}
   


void loop() {
  // put your main code here, to run repeatedly:
  gereFeuClignotant(feuPN);
  mp3_play (1); //play 0001.mp3
 }


mes problèmes sont les suivants :

il faudrait que le son dure plus longtemps ? comment puis je faire ?
il faudrait que la LED commence a clignoter en même temps que le son .... or pour l'instant le son viens en premier et quand c'est fini la led clignote...

désolé si les questions sont bêtes ... mais je découvre le codage arduino

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1725
  • 100% Arduino et N
    • Voir le profil
Re : animation de PN
« Réponse #3 le: septembre 16, 2016, 08:15:33 pm »
Bonjour,

Moi, j'ai la barrière + le feu clignotant + le son, sur un Arduino Pro Mini !

J'ai branché un lecteur de carte microSD sur le port SPI et le croquis est en PJ

Amicalement
PS j'avais ouvert un fil spécialement pour les PN, mais tout le monde se met à coté !!!

bucks

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Re : animation de PN
« Réponse #4 le: septembre 16, 2016, 08:51:40 pm »
merci pour le sketch,

j'ai plusieurs question car toi l'activation se fait par une détection ?

aussi qu'est ce que le port SPI ? moi le DFPlayer ils me disent de se brancher sur rx et tx

n'y as t il pas moyen d'adapter mon code tout simple pour que le déroulement soit simulatané ?

merci
« Modifié: septembre 16, 2016, 09:18:01 pm par bucks »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1725
  • 100% Arduino et N
    • Voir le profil
Re : animation de PN
« Réponse #5 le: septembre 16, 2016, 10:22:17 pm »
Après pas mal d'essais de différentes choses, j'ai choisi TMRpcm pour faire du son de façon asynchrone (en même temps qu'autre chose) sur Arduino. Une simple carte SD branchée sur le port SPI suffit, ça ne coute qu'1 ou 2€.

Le port SPI est le port de communication le plus rapide et le plus simple d'emploi quand un périphérique l'intègre. Regardes les notions de base sur l'Arduino (articles 69 http://www.locoduino.org/spip.php?article69 et surtout sur arduino.cc). Pour la gestion de fichier sur carte SD et pour piloter un écran graphique, il n'y a que le port SPI qui tient la route. Et il peut faire les 2 en même temps !

Si possible (et ça l'est presque toujours), je ne branche rien sur Tx et Rx qui sont utilisés par le chargeur.

Je pense qu'il vaut mieux que tu adaptes mon code plutôt que le tien, mais je réponds ça parce que je n'ai pas le temps de regarder ton code (je regarderai la semaine prochaine, le week-end est entièrement pris ...)

Amicalement
« Modifié: septembre 16, 2016, 10:28:18 pm par Dominique »

bucks

  • Newbie
  • *
  • Messages: 13
    • Voir le profil
Re : animation de PN
« Réponse #6 le: septembre 18, 2016, 10:15:19 pm »
je vais essayer de zieuter ça ... et surtout de comprendre ...