1/160 - Echelle N

Le Forum consacré à l'Echelle N
 
AccueilAccueil  PortailPortail  ÉvènementsÉvènements  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
N'hésitez pas à consulter le calendrier et les événements du forum pour voir les manifestations près de chez vous !
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Décodeur accessoire DCC/analogique universel

Aller en bas 
+3
jlb
pilate68
Trusty
7 participants
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7  Suivant
AuteurMessage
Giov
Membre
Giov


Masculin Age : 46
Localisation : ROUEN
Nombre de messages : 90
Date d'inscription : 14/05/2014

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeSam 17 Mai 2014 - 17:53

merci sam pour cette reponse tres complete et tres clair

donc il suffirait de remplacer le 60113 de marklin par le module arduino?

une centrale dcc en arduino est elle envisagable ou on est obligé de toute facon de passer par une centrale du marché?
Revenir en haut Aller en bas
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeSam 17 Mai 2014 - 18:34

Giov a écrit:


donc il suffirait de remplacer le 60113 de marklin par le module arduino?

Je ne pense pas (je ne suis pas spécialiste marklin) mais de ce que j'ai lue il faut la mobile station 2, le boitier de connexion et un transfo d'alim. J’interprète donc que cet ensemble de 3 éléments forme la centrale numérique.

Giov a écrit:

une centrale dcc en arduino est elle envisagable ou on est obligé de toute facon de passer par une centrale du marché?

Oui c'est faisable il y a des projets qui traînent sur le net.
http://bultez.fr/post/2013/02/08/Construction-de-la-mini-centrale

Il y a aussi possibilité de faire une centrale sans arduino voir le site de paco par exemple:
http://usuaris.tinet.cat/fmco/nanox_en.html

Il est aussi possible d'utiliser un pc, un logiciel et une interface sprog, voir même un raspberry-pi:
http://mytrain.fr/cms/index.php/mycube/item/81-tutoriel-numero-0-pour-commencer-getting-started

Revenir en haut Aller en bas
http://sam95.fr/
Giov
Membre
Giov


Masculin Age : 46
Localisation : ROUEN
Nombre de messages : 90
Date d'inscription : 14/05/2014

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeSam 17 Mai 2014 - 18:41

ah oui visiblement il faut brancher le decodeur arduino sur la 2eme entree du decodeur marklin

du moins dans ce cas ci pour relier sur un pc mais je pense que ca doit etre le meme principe pour le decodeur des aiguillages,feux,etc
Décodeur accessoire DCC/analogique universel - Page 3 ConnectionExample60113
Revenir en haut Aller en bas
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeSam 17 Mai 2014 - 20:02

Je pense plutôt que sortant du module 60113 tu as ton bus DCC et qu'ensuite tu mets le décodeur arduino. Car tout ce qui est avant ce module 60113 c'est la partie centrale de commande
Revenir en haut Aller en bas
http://sam95.fr/
Giov
Membre
Giov


Masculin Age : 46
Localisation : ROUEN
Nombre de messages : 90
Date d'inscription : 14/05/2014

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeSam 17 Mai 2014 - 20:11

les fils pour relier les rails (le bus,si j'ai bien compris) partent du module 60113
Revenir en haut Aller en bas
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeSam 26 Juil 2014 - 11:11

Trusty a écrit:
Bon, faut que je code la partie Servos vite fait alors...  affraid 

Salut Trusty,

je me permets de relancer ce sujet car j'ai commencer mon dépôt T-trak et je vais avoir surement besoin de ton décodeur pour 5 servos. Je me demandais donc si tu avais avancé le code ?
Revenir en haut Aller en bas
http://sam95.fr/
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeLun 25 Aoû 2014 - 14:21

En rentrant de vacances j'avais l'arduino et les servos dans la boite aux lettres. Y a plus qu'a !!
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeLun 25 Aoû 2014 - 17:54

Oui, j'ai bien commencé, et j'ai déjà des choses fonctionnelles. Parce que la gestion du temps est un problème particulier à la gestion de servo en vitesse lente, j'ai créé quatre modes de pilotage de servo : rapide, lent solitaire, lent avec mémo des actions utilisateur, et lent partageable.

En clair :

Rapide : le mouvement est fait à vitesse maximum, il n'y a pas de délai. Ce mouvement est compatible avec les mouvements des autres accessoires.
Lent solitaire : avec un délai entre 1 et 5ms à chaque degré, le mouvement est lent mais pas trop, ce qui fait que l'Arduino n'a pas le temps de traiter les mouvements des autres accessoires. Tant que ce mouvement de servo est en cours, aucun autre ordre pour un autre accessoire n'est accepté.
Lent mémo: avec un délai de 6 à 20ms à chaque degré, je peux regarder si un ordre a été donné (pressage de bouton ou ordre Dcc) pour le mouvement d'un autre accessoire, mais je ne peux pas le traiter tout de suite. C'est donc mémorisé pour un traitement ultérieur, lorsque le servo aura fini. Au delà d'un nombre paramétrable d'ordre mémorisé, les suivants sont perdus.
Lent partagé: là on est dans du classique pour ma librairie. Le mouvement est lancé, chaque degré est effectué toutes les 21ms ou plus, et le temps restant entre deux degré est utilisé pour répondre aux ordres des autres accessoires.

Au jour d'aujourd'hui (quelle horrible expression !), je ne pas codé le mode Lent mémo jusqu'au bout, mais les autres modes ont été codés et (faiblement) testés. J'en ai profité d’ailleurs pour corriger beaucoup de bugs, simplifier le codage nécessaire dans le .ino, améliorer la gestion du temps en utilisant une bibliothèque trouvée sur le net qui permet d'utiliser le codage rapide de l’accès aux ports de l'Arduino, mais sans le code ésotérique habituel. De fait j'écris digitalWrite2f(DP13, HIGH) au lieu de digitalWrite(13, HIGH). La différence est insignifiante ('2f(DP' en plus !) en terme de code tapé, mais les temps sont divisés par quatre ou cinq...

Je veux absolument finir le codage avant la fin de la semaine, tant que je suis en vacances. Mais si tu veux tester en avant première, ou si c'est particulièrement urgent, envoie moi un MP et je t'enverrai le code par mail. Cette offre est également valable pour les autres membres du forum ! Quoi qu'il arrive, la nouvelle version devrait apparaître à la fin de la semaine ou au début de la semaine prochaine.
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 26 Aoû 2014 - 0:18

Super pour cette avancée.

Ne t'inquiètes pas je m'y colle après la rentrée des classes quand j'aurais du temps libre.
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeVen 29 Aoû 2014 - 20:45

Voilà enfin la nouvelle version à peu près testée (mais rien ne vaut l'utilisateur final pour ça...). Beaucoup de nouveautés dans cette version 3. Pour commencer, il y a dans le zip un fichier WhatsNew.txt qui reprend les modifications faites depuis le début. Je l'ai écris en anglais et en français parce que je ne désespère pas de voir mon truc utilisé à l'international !
Si on reprend ces nouveautés point par point :

Utilisation de arduino2 pour accélérer les entrées sorties.
Un petit source trouvé sur le site CodeProject.com m'a permis d'accélérer le traitement général en utilisant une syntaxe légèrement différente de la syntaxe habituelle : pinMode2f au lieu de pinMode, digitalRead2f, digitalWrite2f au lieu de leur correspondant sans '2f'. L'argument 'N° de pin' n'est plus un entier mais un élément d'un enum : 1 se transforme en DP1, 2 en DP2 etc... Le gain est de quatre à cinq fois plus rapide pour un code encore très lisible, par comparaison avec la méthode connue de manipulation des ports traditionnelle. Il y a deux limites. La première c'est que le créateur de cette astuce n'a codé que pour l'Arduino Uno et le Mega. Si on veut l'étendre à d'autres variantes de l'Arduino, c'est possible mais il faut y passer un peu de temps et c'est pour le coup assez technique... La seconde concerne les servos, voir plus loin.

Ajout des servos.
Comme dit dans mon post précédent, j'ai ajouté la gestion des servos. Comme je n'en ai qu'un seul, je n'ai pas pu tout tester, en particulier le mouvement simultané de plusieurs servos... Et puisque la gestion du temps est primordiale avec eux, j'ai créé quatre moyens de les faire bouger, selon la vitesse que l'on veut leur donner. Voir mon post précédent. Pour les faire fonctionner j'utilise la librairie 'Servo' livrée avec l'outil de développement Arduino. Cette librairie utilise déjà le mode rapide d'accès aux entrées-sorties. En conséquence de quoi je n'ai pas pu adapter les classes AccessoryServo, DriverServo et DriverPortServo à Arduino2. Ce sont toujours des entiers qui doivent être utilisés pour
piloter les servos. Je ne désespère pas d'y arriver un jour pour rendre toute la librairie homogène...

Simplification des includes pour réduire à juste un seul : UniversalAccessoryDecoder.h dans le .ino
Avant, mais ça c'était avant, il fallait inclure les includes correspondants à chaque type d'accessoire ou de driver utilisé, ce n'est plus nécessaire. UniversalAccessoryDecoder.h suffit pour tout avoir, sauf exception, bien sûr Smile .

Simplification des exécutions par création des ButtonToggle() et DccToggle() dans Accessories et AccessoryGroup.
Dans la version précédente, le .ino contenait une fonction loop qui faisait les mouvements selon le type d'accessoire. Il y a maintenant une fonction ButtonToggle qui s'occupe de ça dans Accessories et dans AccessoryGroup. Le même principe a été appliqué dans la fonction d'interruption Dcc avec la fonction DccToggle de Accessories et AccessoryGroup.

Correction de nombreux bugs...
Bon, inutile de développer, c'en était truffé, mais sans utilisateur avec un vrai projet concret, difficile de bien tester.

Ajout de divers fichiers .ino pour exemples.
Justement, j'ai inclus dans le zip des fichiers .ino alternatifs . Ce sont des exemples de gestion d'un groupe pour déclarer un feu tricolore, enfin quadri dans l'exemple, avec certaines ampoules clignotantes, et pour une gestion d'un servo branché sur une flopée de boutons. Pour les utiliser, sortez de l'outil de compilation Arduino, renommez votre .ino en ce que vous voulez, puis donnez le nom de votre .ino à l'exemple. Relancez l'outil de compilation Arduino.

Ajout du copyright sur la console en debug.
Lorsque vous êtes en mode Debug, la console affiche pendant le setup le copyright et surtout le numéro de version de la librairie. Bien entendu, cela ne s'affiche pas en mode production/release !

Ajout de WhatsNew !
Comme dit plus haut, c'est aussi la première apparition de ce fichier.

Tout ça est bien, les exemples fonctionnent chez moi, toussa, toussa. Mais rien ne vaut le test en grandeur réelle, alors dites moi ce qui marche ou pas, dites moi ce que vous voudriez voir apparaître comme nouveauté !

La nouvelle version est téléchargeable ici sans oublier la bonne version de DCC_Decoder.
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeLun 1 Sep 2014 - 17:38

Bon je vais m'y mettre, mais avant cela si je résume ce que je dois faire:

1/ télécharger l'environnement de dev arduino sur mon pc
2/ connecter l'arduino en usb et y charger les 2 ensembles dont tu parles dans le sujet précédent

Dois-je créer un fichier .INO moi même ou j'utilise celui de ton zip ?

3/ réaliser le petit montage entre le bus DCC et l'arduino
4/ connecter mes servos

Mais ensuite je n'ai pas bien compris comment ma centrale pilote le servo, j'ai l'impression en regardant le .INO qu'il faut utiliser des boutons poussoirs ?
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMer 3 Sep 2014 - 14:17

Tu as tout à fait raison, parlons du démarrage, tutorial depuis le début !

Installation générale

1/ Il faut récupérer l'environnement de travail sur arduino.cc . Prendre la version 1.0.5, pour votre système opératif.
2/ Lancez l'environnement (Arduino.exe).
3/ Sélectionnez la bonne version de votre Arduino : Option 'Outils/Type de carte' .
4/ Ouvrir l'exemple 'Blink' (Option 'Fichier/Exemples/01-Basics/Blink').
5/ Compilez-le (première icône ou Ctrl+R).
6/ Connectez votre Arduino avec le cable USB.
7/ Envoyez l'exemple par l'USB (deuxième icône ou Ctrl+U)
8/ Après la communication (deux diodes clignotent rapidement), l'autre diode de votre Arduino (dite du port 13) doit clignoter lentement. Si ce n'est pas le cas, inutile de continuer, vous devez repasser en revue les étapes précédentes !

Installation UniversalAccessoryDecoder

9/ Téléchargez les sources de la librairie ici .
10/ Dans l'environnement de compilation, option 'Fichier/Préférences', vous trouverez dans le premier champ le répertoire où vos projets vont être stockés (Emplacement du carnet de croquis).
11/ Décompressez là le zip téléchargé. Si votre emplacement est 'Mes documents/Arduino', vous devez retrouver UniversalAccessoryDecoder.ino dans un répertoire 'Mes documents/Arduino/UniversalAccessoryDecoder' .
12/ Téléchargez les sources de la librairie DCC modifiée utilisée dans mon projet .
13/ Dans le répertoire d'installation de votre Arduino.exe se trouve un répertoire libraries qui contient, comme son nom l'indique, toutes les librairies utilisables par l'environnement de développement.
14/ Décompressez là le zip téléchargé. Si votre emplacement est 'Arduino compiler', vous devez retrouver DCC_Decoder.cpp dans un répertoire 'Arduino compiler/libraries/DCC_Decoder' . Et dans les options 'Fichier/Exemples' et 'Croquis/Importer bibliothèque' vous devez voir apparaître DCC_Decoder. Si ce n'est pas le cas, vérifiez bien les répertoires. S'ils ne sont pas conformes, ça n'ira pas...
15/ Avec l'option 'Fichier/Carnet de croquis/UniversalAccessoryDecoder', vous devriez enfin pouvoir charger le projet. Si vous ne voyez pas UniversalAccessoryDecoder, même motif : même punition qu'au chapitre précédent !

Construction de votre projet

16/ Le fichier UniversalAccessoryDecoder.ino fourni n'est qu'un exemple de démonstration. Il y a très peu de chances qu'il vous convienne ! Il y en a d'autres comme UnversalAccessoryDecoder.servo.ino ou UnversalAccessoryDecoder.group.ino qui en sont d'autres. Par exemple, pour tester un servo, dans un explorateur de fichiers renommez UniversalAccessoryDecoder.ino en UniversalAccessoryDecoder.demo.ino, puis renommez UniversalAccessoryDecoder.servo.ino en UniversalAccessoryDecoder.ino. Relancez Arduino.exe et chargez le projet, toujours avec 'Fichier/Carnet de croquis/UniversalAccessoryDecoder' . Câblez votre servo conformément à ce que propose l'exemple, ou adaptez le .ino à votre configuration, par exemple en retirant les boutons, accessoires de test pour moi...
17/ Si vous voulez faire un deuxième projet basé sur mon projet, copiez le répertoire UniversalAccessoryDecoder dans un autre répertoire (mais toujours dans 'Mes documents/Arduino') et renommez UniversalAccessoryDecoder.ino avec le nom du nouveau répertoire : 'nouveauRépertoire.ino' !
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeLun 8 Sep 2014 - 10:45

Bonjour Trusty,

Alors j'ai commencé à regardé le fichier d'exemple .ino pour les servos et je ne pige pas tout !!
Je vais donc te poser des questions ciblée sur le code.

Code:
// total number of accessories.
#define AccessoryNumber      1

#define SERVO1            0

Si je veux 2 servos, je mets ?:
Code:
#define AccessoryNumber      2

#define SERVO1            0
#define SERVO2            0
A quoi correspondent les 0 ?


-------------------------------------

Si je n'utilise pas de shield pour piloter mes servos:
Code:
// Drivers

// Only one servo dirver here, a l293d shield,
// but we could use the arduino itself...   
DriverServoL293d *arduino;

Je ne laisse que ?
Code:
// Drivers

// Only one servo dirver here, a l293d shield,
// but we could use the arduino itself...   
*arduino;

-----------------------------------------------

Code:
// Creates the servo, and add it to the accessories.
   servo = new AccessoryServo(22, speed);
   accessories.Add(servo);   //SERVO1

   // Declare servo on driver, and min/max angles (10 - 160).
   SERVO(accessories, SERVO1)->Setup(arduino, L293D_PORT_SERVO1, 10, 160);

Le 22 correspond à quoi ? la pin de branchement du servo ?

Si je n'ai pas de L293D je mets:
Code:
SERVO(accessories, SERVO1)->Setup(arduino,  10, 160);

-----------------------------------------------
Code:
#ifndef NO_DCC
   // DCC Decoder setup
   
   DCC.SetBasicAccessoryDecoderPacketHandler(AccessoryDecoderPacket_Handler, true);
   
   /* kDCC_INTERRUPT values :
   Board         int.0   int.1   int.2   int.3   int.4   int.5
   Uno, Ethernet   2      3               
   Mega2560      2      3      21      20      19      18
   Leonardo      3      2      0      1      7
   */
   DCC.SetupDecoder(0x00, 0x00, kDCC_INTERRUPT);
#endif

A quoi cela correspond cettepartie de code ? dois-je y modifier quelque chose.

--------------------------------------------

Pour finir je ne comprends pas comment on définit l'adresse DCC du servo ? Sur ma multimaus par exemple je veux que l'adresse #10 face bouger le servo branché en pin 1 de l'arduino.


Désolé de poser des questions surement aussi bête.



Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeLun 8 Sep 2014 - 15:09

Bon, alors je te livre ma version, sans aucun test (je suis au boulot ...), directement avec 5 servos !

Code:
// Tu as bien deviné, c'est le nombre d'accessoires. Puisque tu as cinq servos à piloter...
#define AccessoryNumber      5

// Ici, ce sont juste des pense-bêtes. Je te conseille même de changer SERVO1 en SERVO_AVANT_GAUCHE
// ou SERVO_ENTREE_GARE, enfin selon ton usage, ce sera beaucoup plus clair pour te relire.
#define SERVO1            0
#define SERVO2            1
#define SERVO3            2
#define SERVO4            3
#define SERVO5            4

// Drivers

// Effectivement, tu n'utilises pas de shield, mais tu a quand même besoin de Driver.
// Dans ton cas, c'est l'Arduino lui même qui fait le boulot, donc on prend un DriverServoArduino.
  DriverServoArduino *arduino;

-----------------------------------------------

// Drivers setups

// On crée le driver, l'Arduino, avec 5 ports (les pins de sortie)
// Comme on va avoir un driver avec cinq port, et que chaque port pilote un servo, on va se servir
// des pense-bêtes créés plus haut pour le même usage. Le port 0 correspond au servo 0, cad à SERVO1,
// le port 1 correspond au servo 1, cad à SERVO2, etc...
arduino = new DriverServoArduino(5);
arduino->Setup();
arduino->SetupPort(SERVO1, DP6); // on affecte DP6 (la pin 6) au port 0.
arduino->SetupPort(SERVO2, DP7);
arduino->SetupPort(SERVO3, DP8);
arduino->SetupPort(SERVO4, DP9);
arduino->SetupPort(SERVO5, DP10);

// On déclare les servos un par un, et on donne à chacun un id Dcc.
  AccessoryServo servo1 = new AccessoryServo(22, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo1);   //SERVO1
  AccessoryServo servo2 = new AccessoryServo(23, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo2);   //SERVO2
  AccessoryServo servo3 = new AccessoryServo(24, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo4);   //SERVO3
  AccessoryServo servo4 = new AccessoryServo(25, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo5);   //SERVO4
  AccessoryServo servo5 = new AccessoryServo(26, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo5);   //SERVO5

// On associe chaque servo avec le port correspondant de l'Arduino, en donnant les angles mini/maxi pour chacun.
  SERVO(accessories, SERVO1)->Setup(arduino, SERVO1, 10, 160);
  SERVO(accessories, SERVO2)->Setup(arduino, SERVO2, 10, 160);
  SERVO(accessories, SERVO3)->Setup(arduino, SERVO3, 10, 160);
  SERVO(accessories, SERVO4)->Setup(arduino, SERVO4, 10, 160);
  SERVO(accessories, SERVO5)->Setup(arduino, SERVO5, 10, 160);

Pour le Dcc, c'est plus simple. Tu ne dois changer cette partie que si tu souhaites utiliser une autre pin pour recevoir les infos de ton petit montage de décodeur. Pour savoir quelle pin est activée par défaut, regardes la valeur de kDCC_INTERRUPT définie au début du source. Avec ce chiffre regardes dans le tableau sur la ligne mega2560, c'est sur cette pin là que tu dois brancher le fil sortant du petit montage. si cette pin n'est pas libre, tu changes kDCC_INTERRUPT en fonction de ce que tu veux.

Dans le Loop, puisque tu n'a pas de boutons, enlève tout pour ne garder que Dcc.Loop() et accessories.Loop(). Cela doit suffire.
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 9:20

Merci beaucoup Trusty.
Je prends le problème un peu comme un consommateur en voulant un truc clé en main.... C'est pas bien, mais il faut que mes modules soient pret d'ici la fin d'année !

Voici le code adapté à ce que tu viens de me proposer. Je pense le tester ce soir.

Code:
/*************************************************************
project: <DCC Accessory Decoder>
author: <Thierry PARIS>
description: <Demo for 5 servos drived by dcc arduino>
*************************************************************/

#include "UniversalAccessoryDecoder.h"

// ActionsStack is part of the library and lets you store user
// event to execute them later...
#include "ActionsStack.h"

#ifndef NO_DCC
#include <DCC_Decoder.h>
#endif
#ifndef NO_SERVO
#include <Servo.h>
#endif

#define kDCC_INTERRUPT            5

///////////////////////////////////////////////////////////////
// The target is to move 5 servos, by DCC adress
// Tu as bien deviné, c'est le nombre d'accessoires. Puisque tu as cinq servos à piloter...

#define AccessoryNumber      5

// Ici, ce sont juste des pense-bêtes. Je te conseille même de changer SERVO1 en SERVO_AVANT_GAUCHE
// ou SERVO_ENTREE_GARE, enfin selon ton usage, ce sera beaucoup plus clair pour te relire.

#define SERVO1            0
#define SERVO2            1
#define SERVO3            2
#define SERVO4            3
#define SERVO5            4
// Accessories

Accessories accessories;

// Drivers

// Effectivement, tu n'utilises pas de shield, mais tu a quand même besoin de Driver.
// Dans ton cas, c'est l'Arduino lui même qui fait le boulot, donc on prend un DriverServoArduino.
  DriverServoArduino *arduino;

#ifndef NO_DCC
void AccessoryDecoderPacket_Handler(int address, boolean activate, byte data);
#endif

// current user define speed.
int speed;

// servo accessory.
AccessoryServo *servo;

// A stack of user actions stored during servo movements is declared.
// The library automatically store events on classic buttons, on for each accessory,
// the 'buttons' list, but the library does not know other lists, like 'modes' or 'positions',
// so we have to implement our own storing mecanism to handle them. To do this we will use
// the same class ActionsStack that is used in AccessoryServo class.
ActionsStack localStack(5);

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Setup
//
void setup()
{
   // Arduino setup
   
#ifdef DEBUG_MODE
   Serial.begin(115200);
   Serial.println(F("Setup started."));
#endif

   // Drivers setups

   // On crée le driver, l'Arduino, avec 5 ports (les pins de sortie)
// Comme on va avoir un driver avec cinq port, et que chaque port pilote un servo, on va se servir
// des pense-bêtes créés plus haut pour le même usage. Le port 0 correspond au servo 0, cad à SERVO1,
// le port 1 correspond au servo 1, cad à SERVO2, etc...

arduino = new DriverServoArduino(5);
arduino->Setup();
arduino->SetupPort(SERVO1, DP6); // on affecte DP6 (la pin 6) au port 0.
arduino->SetupPort(SERVO2, DP7);
arduino->SetupPort(SERVO3, DP8);
arduino->SetupPort(SERVO4, DP9);
arduino->SetupPort(SERVO5, DP10);

   

   // Accessories setups

   accessories.Setup(AccessoryNumber);
   

// On déclare les servos un par un, et on donne à chacun un id Dcc.
  AccessoryServo servo1 = new AccessoryServo(22, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo1);  //SERVO1
 
  AccessoryServo servo2 = new AccessoryServo(23, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo2);  //SERVO2
 
  AccessoryServo servo3 = new AccessoryServo(24, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo3);  //SERVO3
 
  AccessoryServo servo4 = new AccessoryServo(25, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo4);  //SERVO4
 
  AccessoryServo servo5 = new AccessoryServo(26, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo5);  //SERVO5

// On associe chaque servo avec le port correspondant de l'Arduino, en donnant les angles mini/maxi pour chacun.
  SERVO(accessories, SERVO1)->Setup(arduino, SERVO1, 10, 160);
  SERVO(accessories, SERVO2)->Setup(arduino, SERVO2, 10, 160);
  SERVO(accessories, SERVO3)->Setup(arduino, SERVO3, 10, 160);
  SERVO(accessories, SERVO4)->Setup(arduino, SERVO4, 10, 160);
  SERVO(accessories, SERVO5)->Setup(arduino, SERVO5, 10, 160);
   
#ifndef NO_DCC
   // DCC Decoder setup
   
   DCC.SetBasicAccessoryDecoderPacketHandler(AccessoryDecoderPacket_Handler, true);
   
   /* kDCC_INTERRUPT values :
   Board         int.0   int.1   int.2   int.3   int.4   int.5
   Uno, Ethernet   2      3               
   Mega2560      2      3      21      20      19      18
   Leonardo      3      2      0      1      7
   */
   DCC.SetupDecoder(0x00, 0x00, kDCC_INTERRUPT);
#endif

#ifdef DEBUG_MODE
   Serial.println(F("Setup Finished."));
#endif
}


#ifndef NO_DCC
   DCC.loop();
#endif

   accessories.Loop();
}

#ifndef NO_DCC
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Basic accessory packet handler
//
void AccessoryDecoderPacket_Handler(int address, boolean activate, byte data)
{
   address = DCC_Decoder::GetAddress(address, data);
   boolean enable = DCC_Decoder::IsEnabled(data);

#ifdef DEBUG_MODE
   Serial.print(F("Basic addr: "));
   Serial.print(address);
   Serial.print(F("  activate: "));
   Serial.println(enable, DEC);
#endif

   accessories.DCCToggle(address, enable);
}
#endif

Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 9:27

Avant que tu te lances, voilà quelques corrections/simplifications:
Code:
*************************************************************
project: <DCC Accessory Decoder>
author: <sam95>
description: <Demo for 5 servos drived by dcc arduino>
*************************************************************/

#include "UniversalAccessoryDecoder.h"

#ifndef NO_DCC
#include <DCC_Decoder.h>
#endif
#ifndef NO_SERVO
#include <Servo.h>
#endif

#define kDCC_INTERRUPT            5

///////////////////////////////////////////////////////////////
// The target is to move 5 servos, by DCC adress
// Tu as bien deviné, c'est le nombre d'accessoires. Puisque tu as cinq servos à piloter...

#define AccessoryNumber      5

// Ici, ce sont juste des pense-bêtes. Je te conseille même de changer SERVO1 en SERVO_AVANT_GAUCHE
// ou SERVO_ENTREE_GARE, enfin selon ton usage, ce sera beaucoup plus clair pour te relire.

#define SERVO1            0
#define SERVO2            1
#define SERVO3            2
#define SERVO4            3
#define SERVO5            4

// Accessories

Accessories accessories;

// Drivers

// Effectivement, tu n'utilises pas de shield, mais tu a quand même besoin de Driver.
// Dans ton cas, c'est l'Arduino lui même qui fait le boulot, donc on prend un DriverServoArduino.
DriverServoArduino *arduino;

#ifndef NO_DCC
void AccessoryDecoderPacket_Handler(int address, boolean activate, byte data);
#endif

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Setup
//
void setup()
{
   // Arduino setup
  
#ifdef DEBUG_MODE
   Serial.begin(115200);
   Serial.println(F("Setup started."));
#endif

   // Drivers setups

   // On crée le driver, l'Arduino, avec 5 ports (les pins de sortie)
// Comme on va avoir un driver avec cinq port, et que chaque port pilote un servo, on va se servir
// des pense-bêtes créés plus haut pour le même usage. Le port 0 correspond au servo 0, cad à SERVO1,
// le port 1 correspond au servo 1, cad à SERVO2, etc...

arduino = new DriverServoArduino(5);
arduino->Setup();
arduino->SetupPort(SERVO1, DP6); // on affecte DP6 (la pin 6) au port 0.
arduino->SetupPort(SERVO2, DP7);
arduino->SetupPort(SERVO3, DP8);
arduino->SetupPort(SERVO4, DP9);
arduino->SetupPort(SERVO5, DP10);

  

   // Accessories setups

   accessories.Setup(AccessoryNumber);
  

// On déclare les servos un par un, et on donne à chacun un id Dcc.
  AccessoryServo servo1 = new AccessoryServo(22, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo1);  //SERVO1
  
  AccessoryServo servo2 = new AccessoryServo(23, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo2);  //SERVO2
  
  AccessoryServo servo3 = new AccessoryServo(24, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo3);  //SERVO3
  
  AccessoryServo servo4 = new AccessoryServo(25, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo4);  //SERVO4
  
  AccessoryServo servo5 = new AccessoryServo(26, 255); // <-- id DCC , vitesse maxi
  accessories.Add(servo5);  //SERVO5

// On associe chaque servo avec le port correspondant de l'Arduino, en donnant les angles mini/maxi pour chacun.
  SERVO(accessories, SERVO1)->Setup(arduino, SERVO1, 10, 160);
  SERVO(accessories, SERVO2)->Setup(arduino, SERVO2, 10, 160);
  SERVO(accessories, SERVO3)->Setup(arduino, SERVO3, 10, 160);
  SERVO(accessories, SERVO4)->Setup(arduino, SERVO4, 10, 160);
  SERVO(accessories, SERVO5)->Setup(arduino, SERVO5, 10, 160);
  
#ifndef NO_DCC
   // DCC Decoder setup
  
   DCC.SetBasicAccessoryDecoderPacketHandler(AccessoryDecoderPacket_Handler, true);
  
   /* kDCC_INTERRUPT values :
   Board         int.0   int.1   int.2   int.3   int.4   int.5
   Uno, Ethernet   2      3                
   Mega2560      2      3      21      20      19      18
   Leonardo      3      2      0      1      7
   */
   DCC.SetupDecoder(0x00, 0x00, kDCC_INTERRUPT);
#endif

#ifdef DEBUG_MODE
   Serial.println(F("Setup Finished."));
#endif
}

void Loop()
{
#ifndef NO_DCC
   DCC.loop();
#endif

   accessories.Loop();
}

#ifndef NO_DCC
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Basic accessory packet handler
//
void AccessoryDecoderPacket_Handler(int address, boolean activate, byte data)
{
   address = DCC_Decoder::GetAddress(address, data);
   boolean enable = DCC_Decoder::IsEnabled(data);

#ifdef DEBUG_MODE
   Serial.print(F("Basic addr: "));
   Serial.print(address);
   Serial.print(F("  activate: "));
   Serial.println(enable, DEC);
#endif

   accessories.DCCToggle(address, enable);
}
#endif

Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 10:39

Merci beaucoup.

Ce qu'on appel le port défini ici:
#define SERVO1 0

C'est un truc obligatoire interne au fonctionnement de l'arduino c'est bien cela ? On attribut SERVO1 au port 0 puis plus loin on dit que le port 0 est sur la pin 6.
Il n'est donc pas possible de dire directement SERVO1 est sur la pin 6 sans passer par le port 0 ?
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 11:28

L'histoire du port et du driver, ce sont des interprétations du réel, une abstraction, ma transposition personnelle de l'utilisation d'un dispositif quelconque d'alimentation, un Driver, muni de plusieurs prises, les ports du driver.

Code:
+-------------------+                      +----------+       +---------+
|                   |                      |  port 0  |       |  Driver |
|     accessoire 1  |  ------------------- |          | ----- |         |
|                   |                      |          |       |         |
+-------------------+                      +----------+       |         |
                                           +----------+       |         |
                                           |  port 1  | ----- |         |
                                           +----------+       +---------+

On voit sur ce superbe dessin en haute résolution le driver (un L293d, un L298n, un relais, un Arduino..) qui dispose de ports (M1 à M4 pour un L293D, les pins 1 à 54 pour l'Arduino Mega, etc) sur lequel on peut (ou non) brancher un accessoire.
Je le répète, ce n'est que ma vision des choses qui m'a permis de donner un comportement commun à tous les types d'alimentations disponibles. Il est bien sûr tout à fait possible d'adresser directement les pins de l'Arduino, mais le service fourni par ma librairie serait perdu. Par exemple, elle est capable de faire fonctionner simultanément tous les servos, ce qui n'est possible sans elle qu'avec un peu / beaucoup de programmation. D'autre part si demain tu décides d'utiliser une alimentation externe parce que tes servos consomment trop pour l'Arduino, tu change dans le fichier ino le DriverServoArduino par un DriverL293d (par exemple), et rien d'autre n'est à modifier (ou presque) !
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 18:47

Enfin le temps de lancer une vérif et y a un message d'erreur:

In file included from /UniversalAccessoryDecoderCommon.h:23,
from /UniversalAccessoryDecoder.h:29,
from Accessories.cpp:7:
DriverPortL293d.h:30: error: ISO C++ forbids declaration of 'AF_DCMotor' with no type
DriverPortL293d.h:30: error: expected ';' before '*' token
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 20:59

Tu as raison, j'ai oublié dans mon tuto de préciser que pour que le tout fonctionne, il faut dire que tu vas utiliser les librairies : 'Croquis/Importer bibliothèque/Motor_Shield' et 'Croquis/Importer Bibliothèque/Servo'. Ca devrait suffire.
Revenir en haut Aller en bas
http://www.lapajaparis.net
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeMar 9 Sep 2014 - 21:16

A vrai dire, je viens de tester, il y avait quelques erreurs dans mon source. J'arrive à compiler celui-là:
Code:
/*************************************************************
project: <DCC Accessory Decoder>
author: <sam95>
description: <Demo for 5 servos drived by dcc arduino>
*************************************************************/

#include "UniversalAccessoryDecoder.h"

#ifndef NO_L293D
#include <AFMotor.h>
#endif
#ifndef NO_DCC
#include <DCC_Decoder.h>
#endif
#ifndef NO_SERVO  
#include <Servo.h>
#endif

#define kDCC_INTERRUPT            5

///////////////////////////////////////////////////////////////
// The target is to move 5 servos, by DCC adress
// Tu as bien deviné, c'est le nombre d'accessoires. Puisque tu as cinq servos à piloter...

#define AccessoryNumber      5

// Ici, ce sont juste des pense-bêtes. Je te conseille même de changer SERVO1 en SERVO_AVANT_GAUCHE
// ou SERVO_ENTREE_GARE, enfin selon ton usage, ce sera beaucoup plus clair pour te relire.

#define SERVO1            0
#define SERVO2            1
#define SERVO3            2
#define SERVO4            3
#define SERVO5            4

// Accessories

Accessories accessories;

// Drivers

// Effectivement, tu n'utilises pas de shield, mais tu a quand même besoin de Driver.
// Dans ton cas, c'est l'Arduino lui même qui fait le boulot, donc on prend un DriverServoArduino.
DriverServoArduino *arduino;

#ifndef NO_DCC
void AccessoryDecoderPacket_Handler(int address, boolean activate, byte data);
#endif

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Setup
//
void setup()
{
   // Arduino setup
  
#ifdef DEBUG_MODE
   Serial.begin(115200);
   Serial.println(F("Setup started."));
#endif

   // Drivers setups

   // On crée le driver, l'Arduino, avec 5 ports (les pins de sortie)
// Comme on va avoir un driver avec cinq port, et que chaque port pilote un servo, on va se servir
// des pense-bêtes créés plus haut pour le même usage. Le port 0 correspond au servo 0, cad à SERVO1,
// le port 1 correspond au servo 1, cad à SERVO2, etc...

  arduino = new DriverServoArduino(5);
  arduino->Setup();
  arduino->SetupPort(SERVO1, DP6); // on affecte DP6 (la pin 6) au port 0.
  arduino->SetupPort(SERVO2, DP7);
  arduino->SetupPort(SERVO3, DP8);
  arduino->SetupPort(SERVO4, DP9);
  arduino->SetupPort(SERVO5, DP10);

  // Accessories setups

  accessories.Setup(AccessoryNumber);
  

// On déclare les servos un par un, et on donne à chacun un id Dcc.
  AccessoryServo *servo1 = new AccessoryServo(22, 20); // <-- id DCC , délai entre deux mouvements d'un degré
  accessories.Add(servo1);  //SERVO1
  
  AccessoryServo *servo2 = new AccessoryServo(23, 20);
  accessories.Add(servo2);  //SERVO2
  
  AccessoryServo *servo3 = new AccessoryServo(24, 20);
  accessories.Add(servo3);  //SERVO3
  
  AccessoryServo *servo4 = new AccessoryServo(25, 20);
  accessories.Add(servo4);  //SERVO4
  
  AccessoryServo *servo5 = new AccessoryServo(26, 20);
  accessories.Add(servo5);  //SERVO5

// On associe chaque servo avec le port correspondant de l'Arduino, en donnant les angles mini/maxi pour chacun.
  SERVO(accessories, SERVO1)->Setup(arduino, SERVO1, 10, 160);
  SERVO(accessories, SERVO2)->Setup(arduino, SERVO2, 10, 160);
  SERVO(accessories, SERVO3)->Setup(arduino, SERVO3, 10, 160);
  SERVO(accessories, SERVO4)->Setup(arduino, SERVO4, 10, 160);
  SERVO(accessories, SERVO5)->Setup(arduino, SERVO5, 10, 160);
  
#ifndef NO_DCC
   // DCC Decoder setup
  
   DCC.SetBasicAccessoryDecoderPacketHandler(AccessoryDecoderPacket_Handler, true);
  
   /* kDCC_INTERRUPT values :
   Board         int.0   int.1   int.2   int.3   int.4   int.5
   Uno, Ethernet   2      3                
   Mega2560      2      3      21      20      19      18
   Leonardo      3      2      0      1      7
   */
   DCC.SetupDecoder(0x00, 0x00, kDCC_INTERRUPT);
#endif

#ifdef DEBUG_MODE
   Serial.println(F("Setup Finished."));
#endif
}

void loop()
{
#ifndef NO_DCC
   DCC.loop();
#endif

   accessories.Loop();
}

#ifndef NO_DCC
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Basic accessory packet handler
//
void AccessoryDecoderPacket_Handler(int address, boolean activate, byte data)
{
   address = DCC_Decoder::GetAddress(address, data);
   boolean enable = DCC_Decoder::IsEnabled(data);

#ifdef DEBUG_MODE
   Serial.print(F("Basic addr: "));
   Serial.print(address);
   Serial.print(F("  activate: "));
   Serial.println(enable, DEC);
#endif

   accessories.DCCToggle(address, enable);
}
#endif
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeJeu 11 Sep 2014 - 19:06

Salut,

Bon j'ai essayé de recompiler cette nouvelle version ça a marché. La suite plus tard dans la soirée.

Par contre ma question selon le petit tableau pour un mega il faut connecter l'entrée du DCC en pin 18, hors sur ma platine il est TX1 18. Ca me fait penser que c'est une sortie et non une entrée non ?
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeJeu 11 Sep 2014 - 20:18

Oui, c'est bien en 18 qu'il faut te connecter. Le TX1 signifie seulement que cette pin peut aussi servir de canal de transmission en liaison avec sa voisine RX1, mais cela ne l'empêche pas de remplir son rôle de simple 'pin' !
Revenir en haut Aller en bas
http://www.lapajaparis.net
sam95
Membre
Membre



Masculin Age : 43
Localisation : Ermont, 95
Nombre de messages : 1396
Date d'inscription : 29/11/2009

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeJeu 11 Sep 2014 - 22:06

Bon ca avance pas bien vite !!

Alors téléversement du sketch dans l'arduino, connection de l'usine à gaz selon le site mynabay, le fils jaune du servo sur la pin 6, les autres sur grnd et 5v.

Je suis avec une multimaus, donc essais de l'aiguille en adresse 22, rien. En adresse 26 rien non plus. Adresse 18 idem. (j'avais lu sur un forum anglais qu'il y a un décallage de 4 dans le système d'adressage de roco.)

De fait j'ai un doute sur le montage optocoupleur.

Je termine donc la manip du site mynabay en chargeant leur sketch et le moniteur de paquet fonctionne.

Je recharge le sketch pour les servos, je retest en lançant le moniteur série.
Alors avec une adresse 18 ou 22 il y a un 20aine de caractères qui apparaissent
Avec l'adresse 26, y a des 100aines de caractères qui apparaissent............

Mais le servo ne bouge toujours pas Crying or Very sad

Voila avant de m'énerver je vais promener le chien et faire dodo. On verra cela a tête reposée et avec des bons conseils de Trusty !
Revenir en haut Aller en bas
http://sam95.fr/
Trusty
Membre
Membre
Trusty


Masculin Age : 61
Localisation : Melun
Nombre de messages : 942
Date d'inscription : 08/10/2012

Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitimeVen 12 Sep 2014 - 9:02

Tu auras noté au début du source :
Code:
#ifdef DEBUG_MODE
  Serial.begin(115200);
  Serial.println(F("Setup started."));
#endif
où on voit que la liaison série est réglée à 115200 bauds. Tu dois régler le moniteur série en fonction pour voir du texte intelligible... Le premier texte doit apparaître dès le début avec 'Setup started' et la version de la librairie.
Revenir en haut Aller en bas
http://www.lapajaparis.net
Contenu sponsorisé





Décodeur accessoire DCC/analogique universel - Page 3 Empty
MessageSujet: Re: Décodeur accessoire DCC/analogique universel   Décodeur accessoire DCC/analogique universel - Page 3 Icon_minitime

Revenir en haut Aller en bas
 
Décodeur accessoire DCC/analogique universel
Revenir en haut 
Page 3 sur 7Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7  Suivant
 Sujets similaires
-
» Bloc-système universel : Intégral
» [Digikeis] - Décodeur d'accessoire DK50018
» Projet : Décodeur d'accessoires universel DCC
» Test du nouveau décodeur d'accessoire DIGIKEIS DK 50 018
» Produit presque universel

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
1/160 - Echelle N :: Modèles réduits à l'echelle N :: Electricité / Electronique-
Sauter vers: