Auteur Sujet: Commande de passage à niveau par DCC  (Lu 26184 fois)

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #15 le: février 27, 2023, 03:24:17 pm »
Ok, si je mets address sans les "", plus rien n'apparait dans le monitor

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #16 le: février 27, 2023, 03:51:02 pm »
Cela veut dire que l'ordre DCC n'est pas arrivé dans ton Arduino, voila pourquoi je t'avais demandé de mettre ces lignes.
Maintenant il faut chercher du coté du câblage de ton opto-coupleur qui reçoit les signaux DCC.

Peux-tu envoyer un schéma ?

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #17 le: février 27, 2023, 04:24:26 pm »
Bonjour,
voici le programme utilisé pour recevoir l'information depuis la centrale. Il allume une led verte sur la broche 3 si la fonction enable est envoyée sur l'adresse 117, et rouge sur la broche 4 dans le cas contraire.
C'est à partir de là que j'ai ajouté les fonctions du PN, certainement très maladroitement.

// Utilisation de la librairie DCC Decoder pour lire les trames DCC
#include "DCC_Decoder.h"

// Adresse de base du Arduino-Decodeur
#define baseAdresse 117 

// Déclaration des éléments par rapport aux broches de l'Arduino
// La LED verte est connectée à la broche 3
// La LED rouge est connectée à la broche 4
const int Led_Verte = 3;
const int Led_Rouge = 4;

// Cette fonction est appelée par la librairie pour
// chaque activer / désactiver au niveau des adresses
void BasicAccDecoderPacket_Handler(int address, boolean activate, byte data) {
  address -= 1;
  address *= 4;
  address += 1;
  address += (data & 0x06) >> 1;
  address = address + 4; // cette ligne devra être décommentée si centrale RocoMouse et/ou z21

  boolean enable = (data & 0x01) ? 1 : 0;
 
  // Ex: si adresse de base est 100 alors l'arduino réagit aux adresse 100, 101, 102,...
  // Si l'adresse accessoire envoyée par la centrale correspond à l'une de notre programme
  // Alors on récupère son état (activé/désactivé) et on exécute en conséquence les actions
  // Ici la gestion de l'alimentation de 2 LEDs.
  switch (address) {
 
    case (baseAdresse):
      if (enable) {
        digitalWrite(Led_Rouge, LOW);
        digitalWrite(Led_Verte, HIGH);
      } else {
        digitalWrite(Led_Rouge, HIGH);
        digitalWrite(Led_Verte, LOW);
      }
      break;

    // Cas pour les adresses suivantes
/*
    case (baseAdresse + 1):

      break;

    case (baseAdresse + 2):
     
      break;
*/
  }

}


void setup() {
 
  // Broche des LEDs en mode "Sortie"
  pinMode(Led_Rouge, OUTPUT);
  pinMode(Led_Verte, OUTPUT);
 
  // Init les Voyants, par défaut Rouge actif
  digitalWrite(Led_Rouge, HIGH);
  digitalWrite(Led_Verte, LOW);

  // Les 2 lignes suivantes permettent d'initialiser la librairie DCC Decoder
  DCC.SetBasicAccessoryDecoderPacketHandler(BasicAccDecoderPacket_Handler, true);
  DCC.SetupDecoder( 0x00, 0x00, 0 );
}


void loop() {

  // Appel de la librairie DCC pour lire les valeurs
  DCC.loop();
}
« Modifié: février 27, 2023, 04:35:32 pm par msport »

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #18 le: février 27, 2023, 04:40:24 pm »
Envoie le programme avec les lignes "Serial...." que je t'ai demandé stp

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #19 le: février 27, 2023, 04:43:20 pm »
voici le fichier, merci de ton aide

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #20 le: février 27, 2023, 04:46:30 pm »
Je reviens à ma réponse précédente, c'est au niveau de la réception du signal que tu dois avoir le problème, c'est pourquoi il me faut le schéma

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #21 le: février 27, 2023, 05:22:50 pm »
Peux-tu remplacer tes 2 Serial.print par ces lignes et me donner le résultat ?

   Serial.print("address = ");
  Serial.println(address);
  char buf[20];
sprintf(buf, "%d", address);
String stringTo = buf;
Serial.print("longueur = ");
  Serial.println(stringTo.length());

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #22 le: février 27, 2023, 05:58:20 pm »
en ajoutant ces lignes, le circuit fonctionne mais sans changer d'état. La led rouge d'occupation est allumée, les feux clignotent et le module sonore agit une fois.
Comme tu le dis, j'ai l'impression qu'il ne reçoit pas le signal DCC.
je t'ai mis le schéma synthétique de branchement, en symbolisant le circuit du 6N137 et du module son

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #23 le: février 27, 2023, 06:31:44 pm »
Quand tu dis le circuit fonctionne, qu'est ce qui s'affiche dans la console série ?

Ton schéma n'aide en rien à résoudre ton problème, de quel schéma es-tu parti pour la partie récupération/traitement DCC ?

Si tu n'es pas plus précis dans tes réponses, je ne pourrais plus t'aider malheureusement.

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #24 le: février 27, 2023, 06:49:23 pm »
Le schéma est le schéma classique avec un optocoupleur 6N137. Je viens de vérifier les branchements et en installant un sniffer, les trames sont bien lues sur le monitor

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #25 le: février 27, 2023, 06:52:27 pm »
et ma question sur ce qui s'affiche maintenant dans la console série ?

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #26 le: février 27, 2023, 06:58:01 pm »
toujours rien!

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Re : Commande de passage à niveau par DCC
« Réponse #27 le: février 27, 2023, 07:00:37 pm »
et en installant un sniffer, les trames sont bien lues sur le monitor

Qu'appelles-tu installer un sniffer ? As-tu juste téléversé un programme de sniffer dans ton UNO que tu utilises pour ton PN ? Et si oui lequel ?

On tourne en rond je crois...

Jocelyn

  • Newbie
  • *
  • Messages: 26
    • Voir le profil
Re : Commande de passage à niveau par DCC
« Réponse #28 le: février 27, 2023, 07:04:17 pm »
celui de Doc Marco

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Re : Commande de passage à niveau par DCC
« Réponse #29 le: février 27, 2023, 07:05:00 pm »