Auteur Sujet: DCCpp, Broches Arduino Mega + LMD18200  (Lu 10692 fois)

lmollard

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
DCCpp, Broches Arduino Mega + LMD18200
« le: juillet 18, 2020, 08:12:05 pm »
Bonjour à tous,

D’abord, un grand merci à tous les contributeurs pour ce super projet DCC++. En m’appuyant sur la bibliothèque DCCpp j’ai réalisé une carte "mère" qui accueille un Arduino Mega 2560 ainsi que de l’électronique annexe pour des sorties, et également une sortie pour le DCC avec le schéma pour un LMD 18200. En revanche, sur mon PCB, les sorties routées sur le LMD 18200 ne sont pas celles citées en exemple dans le tableau de cette page https://www.locoduino.org/spip.php?article187, mais sur les broches 2 et 13, au lieu des 3 et 12.

Pour l'instant, je ne fais que tester avec un programme de test basique pour tester le fonctionnement entre Arduino et LMD18200, sans utiliser ma carte "mère", et çà ne fonctionne pas.

Dans mon programme, j’appelle bien DCCpp::beginMain(UNDEFINED_PIN, 13, 2, UNDEFINED_PIN) (pour l’instant, je n’ai pas connecté le MAX471 le temps de mettre au point le système). Seulement, voilà, cela ne fonctionne pas, je n’ai pas de courant en sortie du LMD18200 pas plus que de mouvement de machine sur le réseau. En revanche, à titre d’essai, en paramétrant les broches 12 et 3, cela fonctionne correctement, mais ce n'est pas routé comme çà sur ma carte finale !

Voici le code utilisé :


/*************************************************************
project: <Dc/Dcc Controller>
author: <Thierry PARIS>
description: <Minimalist Dcc Controller sample>
*************************************************************/

#include "Commanders.h"

#include "DCCpp.h"

#define EVENT_NONE 0
#define EVENT_MORE 1
#define EVENT_LESS 2
#define EVENT_SELECT 3
#define EVENT_CANCEL 4
#define EVENT_MOVE 5
#define EVENT_START 6
#define EVENT_END 7
#define EVENT_EMERGENCY 8
#define EVENT_FUNCTION0 9
#define EVENT_FUNCTION1 10
#define EVENT_ENCODER 11

ButtonsCommanderPush buttonSelect;
ButtonsCommanderEncoder buttonEncoder;
ButtonsCommanderPush buttonCancel;
ButtonsCommanderPush buttonEmergency;
ButtonsCommanderSwitchOnePin buttonF0;
ButtonsCommanderSwitchOnePin buttonF1;

// in this sample, only one loco is driven...
int locoId; // DCC id for this loco
int locoStepsNumber; // 14, 28 or 128
int locoSpeed; // Current speed
bool locoDirectionForward; // current direction.
FunctionsState locoFunctions; // Current functions

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

buttonSelect.begin(EVENT_SELECT, A0);
buttonEncoder.begin(EVENT_ENCODER, 14, 8, 2);
buttonCancel.begin(EVENT_CANCEL, A3);
buttonEmergency.begin(EVENT_EMERGENCY, A4);
buttonF0.begin(EVENT_FUNCTION0, A1);
buttonF1.begin(EVENT_FUNCTION1, A2);

DCCpp::begin();
// Configuration for my LMD18200. See the page 'Configuration lines' in the documentation for other samples.
DCCpp::beginMain(UNDEFINED_PIN, 13, 2, UNDEFINED_PIN);


  DCCpp::powerOn();

locoId = 8068;
locoStepsNumber = 128;
locoSpeed = 0;
locoDirectionForward = false;

}

void loop()
{
DCCpp::loop();

 DCCpp::setSpeedMain(1, locoId, locoStepsNumber, 30, locoDirectionForward);
delay(1000);
 DCCpp::setSpeedMain(1, locoId, locoStepsNumber, 0, locoDirectionForward);
 delay(6000);

 
 DCCpp::setSpeedMain(1, locoId, locoStepsNumber, 30, true);
delay(1000);
 DCCpp::setSpeedMain(1, locoId, locoStepsNumber, 0, true);
 delay(6000);

}


Sauriez-vous m’indiquer ce que j’ai loupé ?

Merci et bonne journée.

Lionel

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : DCCpp, Broches Arduino Mega + LMD18200
« Réponse #1 le: juillet 19, 2020, 07:36:16 am »
Vous ne pouvez pas changer la broche 12 sur un Mega car elle correspond au timer 1 utilisé pour génèrer le signal DCC:

Arduino MEGA :

Timer 0 : pins 4 et 13
Timer 1 : pins 11 et 12
Timer 2 : pins 9 et 10

La deuxième broche du timer doit rester libre : on ne peut pas s’en servir pour des E/S (il en reste assez sur un Mega.
Cordialement,
Dominique

lmollard

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : DCCpp, Broches Arduino Mega + LMD18200
« Réponse #2 le: juillet 19, 2020, 11:06:26 am »
Bonjour,

Merci bien pour ces explications claires...

Du coup, cela veut il dire que si je choisis d'ajouter également une voie de PROG, et donc d'utiliser les broches 2,3,11,12 pour DCCpp, je peux utiliser les autres broches (comme la 13 ou la 4 par exemple) pour d'autres utilisations PWM ?

D'autre part, je projette également d'y mettre un bus S88 en utilisant les broches 5,6,7,8, est-ce possible ?

Encore merci pour votre aide.

Bonne journée,

Lionel

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : DCCpp, Broches Arduino Mega + LMD18200
« Réponse #3 le: juillet 19, 2020, 03:23:27 pm »
Je pense que oui, mais j’ai la tête dans les montagnes en ce moment.

Le mieux est d’essayer avec des connexions provisoires

Penser à éviter
- la broche 13 de la led intégrée
- les broches du bus SPI et I2C
Etc ( lire la spec de l’ATmega)

Parmi les 70 broches du 2560, il en reste pas mal !

Il y a pas mal d’exemples dans mon réseau :
http://forum.locoduino.org/index.php?topic=290.0
« Modifié: juillet 19, 2020, 03:28:35 pm par Dominique »
Cordialement,
Dominique

lmollard

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : DCCpp, Broches Arduino Mega + LMD18200
« Réponse #4 le: juillet 21, 2020, 11:57:53 pm »
Bonjour,

Merci bien pour ces explications... Je vais en effet rerouter ma carte et poursuivre mes expérimentations...

Je vais également garder un œil sur cet excellent site et forum !

Bonne journée,

Lionel