Discussions Générales > Bus DCC

Décodeur années 2k

(1/2) > >>

jpjcb66:
Bonsoir à tous,
Petit problème qui ne date pas d'aujourd'hui :
Avec les boosters Roco 10761 ou 4 le décodeur équipant une machine achetée en 2003 fontionne normalement ( logique c'est un kit Roco) encore que je ne parvienne pas à programmer autre chose que l'adresse machine. Avec ces mêmes boosters un décodeur acheté récemment pour équiper ma 150 vapeur, tout se passe bien également.

Par contre en utilisant la version light du sketch "CmdrArduino_minimum.ino" associé à la librairie "CmdrArduino-master" le décodeur des années 2000 ne répond qu'à la commande d'éclairage de la loco ; walou pour le moteur. Alors que le décodeur LockSound V4.0 fonctionne parfaitement, lumière et moteur dans les deux sens.

J'ai changé de canal de 1 à 3, ça ne bouge pas. Les trames générées par la librairie citée plus haut seraient-elles différentes des trames Roco ?
Quelqu'un aurait-il une idée ? Merci...  :)


--- Code: ---/********************
* Creates a minimum DCC command station from a potentiometer connected to analog pin 0,
* and a button connected to ground on one end and digital pin 4 on the other end. See this link
* http://www.arduino.cc/en/Tutorial/AnalogInput
* The DCC waveform is output on Pin 9, and is suitable for connection to an LMD18200-based booster directly,
* or to a single-ended-to-differential driver, to connect with most other kinds of boosters.
* The Differential DCC waveform is output on Pins 9 and 10.
********************/

#include <DCCPacket.h>
#include <DCCPacketQueue.h>
#include <DCCPacketScheduler.h>


DCCPacketScheduler dps;
unsigned int analog_value;
char speed_byte, old_speed = 0;
byte count = 0;
byte prev_state = 1;
byte F0 = 0;

void setup() {
  Serial.begin(115200);
  dps.setup();

  //set up button on pin 4
  pinMode(4, INPUT);
  digitalWrite(4, HIGH); //activate built-in pull-up resistor 
}

void loop() {
  //handle reading button, controls F0
  byte button_state = digitalRead(4); //high == not pushed; low == pushed
  if(button_state && (button_state != prev_state))
  {
    //toggle!
    F0 ^= 1;
    Serial.println(F0,BIN);
    dps.setFunctions0to4(3,DCC_SHORT_ADDRESS,F0);
  }
  prev_state = button_state;
 
//        vitesse  ======================================
  //handle reading throttle
  analog_value = analogRead(A1);
  speed_byte = (analog_value >> 2)-127 ; //divide by four to take a 0-1023 range number and make it 1-126 range.
  if(speed_byte != old_speed)
  {
    if(speed_byte == 0) //this would be treated as an e-stop!
    {
      if(old_speed > 0) speed_byte = 1;
      else speed_byte = -1;
    }
    Serial.print("analog = ");
    Serial.println(analog_value, DEC);
    Serial.print("digital = ");
    Serial.println(speed_byte, DEC);
    dps.setSpeed128(3,DCC_SHORT_ADDRESS,speed_byte);
    old_speed = speed_byte;
  }
  dps.update();
 
  ++count;
}
--- Fin du code ---

Jean-Luc:
Perso je brancherais un espion DCC (voir l'article de Dominique à ce sujet : http://www.locoduino.org/spip.php?article39) pour voir ce que les centrale Roco ont dans le ventre.

jpjcb66:
Ok, merci J-Luc, je vais essayer ça si je trouve un optocoupleur adequat dans mes fonds de tiroirs.
Mais c'est le decodeur Roco qui fait le difficile, il a quand même au moins 15 ans.
@+

Jean-Luc:
Oui mais si le décodeur Roco marche avec la centrale Roco, c'est que cette dernière lui murmure des mots doux qui sont absents du vocabulaire de Cmdr_arduino  :)

Tu n'as pas le 6N137 de la carte servos ?

jpjcb66:
Oui j'ai bien compris mais déjà ça part de travers vu que je n'arrive pas à programmer autre chose que l'adresse loco dans ce décodeur antédiluvien. Ca sent le decodeur neuf tout ça !...
Affirm, j'ai bien le 6N137 de la carte servos, mais j'ai retrouvé aussi des CNY17-2 donc ça devrait le faire vu qu'il fait un temps degueu ici.

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique