LOCODUINO

Parlons Arduino => Le logiciel DCC++ => Discussion démarrée par: Juan le avril 01, 2022, 08:51:31 am

Titre: Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 01, 2022, 08:51:31 am
Bien que le titre de ce nouveau sujet puisse sembler être le même que le précédent, le sujet est différent.
Je fais fonctionner mon modèle avec un central DCC++ avec la bibliothèque Locoduino, et une connexion Bluetooth. Mon projet comporte 9 aiguillages à solénoïde qui sont actionnés par un décodeur composé d'un Nano, d'un multiplexeur MCP23017 et de l'ULN2803 correspondant. Et tout fonctionne parfaitement, et je contrôle tout avec un smartphone, ou avec le PC (RocRail, JMRI,..).

J'ai récemment ajouté un écran tactile TFT au central avec lequel je peux contrôler quatre locomotives simultanément, avec leurs fonctions correspondantes (j'inclus une photo).
Et maintenant je voudrais ajouter 9 boutons poussoirs pour contrôler les aiguillages, sans oublier le Bluetooth et le contrôle par PC.
Aucune idée, aucune aide,
Merci beaucoup à tous,
Juan
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Dominique le avril 01, 2022, 09:38:13 am
C’est juste une question de logiciel : ajouter la gestion des boutons poussoirs à votre logiciel, et les associer aux commandes d’aiguilles.

Exemple comme toujours dans le va et vient qui greffe la gestion de boutons et capteurs sur DCCpp  sans perdre les commandes via usb ou série ( https://www.locoduino.org/spip.php?article232 (https://www.locoduino.org/spip.php?article232)) où vous pourrez trouver inspiration.

La bibliothèque « Commander » peut aussi être utilisée.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 01, 2022, 08:59:29 pm
Merci beaucoup Dominique, mais après une première lecture du Va et Vient, ... je n'ai rien clarifié. Je veux gérer les aiguillages, et il n'y en a pas dans le VV.
Pourriez-vous être un peu plus explicite ?
Encore une fois, merci beaucoup,
Juan
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 01, 2022, 09:48:39 pm
Bonsoir,

il faut envoyer sur le Rx de la centrale DCC++ les séquences prévues par Greg E. Berman qui a codifié les commandes pour les aiguillages de la manière suivante :
< a ADDRESS SUBADDRESS ACTIVATE >.
Sont donc nécessaires :
pour l’adresse 1 : <a 1 0 1> pour normal puis <a 1 0 0 0> pour dévié.
pour l’adresse 2 : <a 1 1 1> pour normal puis <a 1 1 0 0> pour dévié.
pour l’adresse 3 : <a 1 2 1> pour normal puis <a 1 2 0 0> pour dévié.
pour l’adresse 4 : <a 1 3 1> pour normal puis <a 1 3 0 0> pour dévié.
pour l’adresse 5 : <a 2 0 1> pour normal puis <a 2 0 0 0> pour dévié.
pour l’adresse 6 : <a 2 1 1> pour normal puis <a 2 1 0 0> pour dévié.
pour l’adresse 7 : <a 2 2 1> pour normal puis <a 2 2 0 0> pour dévié.
pour l’adresse 8 : <a 2 3 1> pour normal puis <a 2 3 0 0> pour dévié.
pour l’adresse 9 : <a 3 0 1> pour normal puis <a 3 0 0 0> pour dévié.
Etc.
En effet, la commande directe correspond à l’envoi d’un 0 à la sous-adresse et la commande déviée à l’envoi d’un 1 à la sous-adresse.

Le détail des commandes pour DCC++ est là :
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation
https://www.locoduino.org/ecrire/?exec=article&id_article=304

On peut utiliser le Bluetooth.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 02, 2022, 10:20:43 am
Merci beaucoup à msport pour votre aide, mais ce n'est pas le problème.

il faut envoyer sur le Rx de la centrale DCC++ les séquences prévues par Greg E. Berman

Yo conozco muy bien el código de Greg Berman, el problema es cómo envío esas secuencias desde dentro de la propia central,  con un pulsador que está unido físicamente a la central.

Un saludo,
Juan,
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 02, 2022, 10:22:34 am
Désolé, j'ai envoyé le texte sans le traduire :

Je connais très bien le code de Greg Berman, le problème est de savoir comment envoyer ces séquences depuis l'intérieur du central DCC lui-même, avec un bouton poussoir qui est physiquement attaché au central DCC.

Meilleures salutations,
Juan
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Dominique le avril 02, 2022, 11:52:28 am
Que voulez-vous faire exactement ?
- commander les aiguilles en DCC (donc avec un décodeur DCC pour chaque aiguille)?
ou
- commander les aiguilles directement via des relais par exemple ?

Dans le 1er cas, il faut envoyer le code DCC++ via le serial de l'arduino
Dans le 2ème cas, c'est facile de commander des pins de l'Arduino directement à partir des boutons.

Est-ce que cela répond à a question ?
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 02, 2022, 12:05:30 pm
Bonjour Dominique,
Non, ce n'est ni l'un ni l'autre, c'est plutôt le mélange. Voyons voir :

Je veux commander les aiguillages (connectés à un décodeur DCC (les neuf aiguillages connectés à un Nano) avec des boutons poussoirs connectés à la centrale DCC.

Merci beaucoup,
Juan
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Dominique le avril 02, 2022, 01:17:49 pm
Donc votre centrale DCC doit commander les aiguilles à partir des commandes série décrites dans la réponse #3 de msport : est-ce bien ça ?

Vous pouvez le tester en tapant ces commandes dans le moniteur de l’IDE.
Maintenant vous souhaitez le faire à l’aide de boutons poussoirs dans le code du programme de la centrale qui utilise la bibliothèque DCCpp.
C’est ça ?
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 02, 2022, 01:53:21 pm
En effet, Dominique. Mon unité de commande fonctionne parfaitement, et je peux commander les aiguillages par série, soit par PC, soit par smartphone.

Et maintenant, j'aimerais pouvoir commander les aiguillages avec des boutons-poussoirs également. Tout en étant capable d'utiliser les commandes série, bien sûr.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Dominique le avril 02, 2022, 03:20:25 pm
Avez-vous envisagé de commander les aiguillages sans passer par le bus DCC (sans générer les commandes d'aiguillages en DCC, et sans utiliser de décodeur DCC), simplement en commandant le Nano des aiguillages directement : est-il place près ou loin de la centrale DCC ?

Par exemple, en connectant les boutons poussoirs sur le Nano des aiguillages plutôt que sur la centrale DCC ?

Peut-être voulez-vous rassembler toutes les commandes sur l'unité de commande (qui a son écran tactile). Mais alors à quoi servent le smartphone et le bluetooth ?

Avez-vous une schéma de principe général montrant tous les modules, les connexions et ce que vous envisagez d'ajouter ?
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 02, 2022, 06:03:46 pm
J'imagine que le bluetooth envoie ses ordres au serial ...

Si c'est le cas, je suggère d'utiliser un autre nano pour générer les commandes DCC venant des boutons sur son serial et de les envoyer à la centrale via bluetooth

A noter que l'accès partagé du serial fonctionne pour les modules radio HC12.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 03, 2022, 11:49:22 am
Bonjour à vous tous,
Et tout d'abord, merci pour votre aide.
Je vais essayer de préciser un peu plus le problème : il s'agit de gérer les accessoires en général, les aiguillages en particulier, à partir de la centrale DCC++ elle-même, et non à partir du port série. Voici la question.
Pourquoi en ai-je besoin, si j'ai déjà le bluetooth ? Eh bien, pour jouer, Dominique, pour apprendre, par pure curiosité, il n'y a pas d'autre raison.

Et je peux vous dire qu'après avoir étudié la bibliothèque DCC++, je pense connaître le moyen de l'obtenir : le fichier Turnouts.cpp. Il se trouve que pour l'instant, tout cela est trop pour mes connaissances limitées, mais je vais continuer à enquêter.
Meilleures salutations,

Juan.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 03, 2022, 12:30:06 pm
Bonjour,

peut-être que la bibliothèque de Thierry est plus facilement utilisable (mais je ne maitrise pas)
voir l'exemple :
https://github.com/Locoduino/DCCpp/blob/master/examples/MaxiDcc/MaxiDcc.ino
où il est question de boutons et d'aiguillages.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 03, 2022, 05:25:04 pm
En effet, msport, c'est là que je pense que la solution se trouve !
Mais je ne suis pas non plus un expert, loin de là, c'est pourquoi j'ai demandé l'aide du forum.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 03, 2022, 07:48:25 pm
Peut-on vous suggérer de faire fonctionner le sketch donné en exemple qui comporte ce que vous demandez, boutons, aiguillages et locomotives.
A charge pour vous de l'adapter à vos autres besoins.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 04, 2022, 08:53:20 am
Oui, c'est ce que je compte faire, essayer d'adapter le sketch MaxiDcc.ino à mes besoins. Mais comme je l'ai dit, je ne suis pas un expert, alors nous verrons ce qui se passe.
Mais si je réussis, je vous ferai part du résultat.
Merci beaucoup à vous tous .
Juan.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 06, 2022, 10:46:46 am
Bonjour,

Finalement, à force de tourner en rond, j’ai trouvé dans DCCpp.hpp :

static void setAccessory(int inAddress, byte inSubAddress, byte inActivate);

que l’on doit pouvoir appeler avec :

DCCpp ::setAccessory(Address, SubAddress, Activate); (je n'ai pas testé mais ça compile)

Effectivement, dans le DCC, les aiguillages sont traités comme des accessoires.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 06, 2022, 01:15:56 pm
Votre découverte semble très intéressante. Je pourrais alors "en quelque manière" associer un bouton poussoir à l'instruction
DCCpp ::setAccessory(Address, SubAddress, Activate),
et ensuite je pouvais gérer l'aiguillage avec le bouton poussoir.
Cela semble si facile, je dois essayer.
Merci beaucoup pour votre aide.
Regards,
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 10, 2022, 12:51:47 pm
Bonjour, msport,
Je suis en train de tester selon votre dernier message, mais je n'arrive pas à faire compiler l'IDE (mes connaissances sont très limitées). Pouvez-vous me dire comment vous avez réussi à le faire compiler ?
Merci beaucoup,
Juan.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 10, 2022, 02:20:31 pm
Encore une fois, bonjour,
J'ai réussi à le faire fonctionner, à l'aide d'un bouton poussoir, j'ouvre et je ferme l'aiguillage.
Mais j'ai un doute : comme il est considéré comme un accessoire, ne dois-je pas déclarer d'une manière ou d'une autre le temps d'activation, afin de ne pas brûler le solénoïde ?
Et je n'ai aucune idée de comment faire ça.
Cordialement,
Juan.
Titre: Re : Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 10, 2022, 07:21:10 pm
Encore une fois, bonjour,
J'ai réussi à le faire fonctionner, à l'aide d'un bouton poussoir, j'ouvre et je ferme l'aiguillage.
Mais j'ai un doute : comme il est considéré comme un accessoire, ne dois-je pas déclarer d'une manière ou d'une autre le temps d'activation, afin de ne pas brûler le solénoïde ?

Bonsoir,
ça c'est le job du décodeur.
Si ça n'a pas grillé, c'est que le décodeur l'a géré.
Sinon voir :
https://www.dropbox.com/s/qkhrc147m38llb9/Arduino_DCC_S88.zip?dl=0
et choisir RB_DCC_Decoder_Solenoid
Titre: Re : Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: msport le avril 10, 2022, 07:33:40 pm
Pouvez-vous me dire comment vous avez réussi à le faire compiler ?

Ce code passe à la compilation :

#include <DCCpp.h>
int Address;
byte SubAddress;
byte Activate ;

void setup() {
  Serial.begin( 115200 );
  DCCpp::begin(); //
  DCCpp::beginMain(UNDEFINED_PIN, 10, 3, 14); // pour main
  DCCpp::powerOn();
}

void loop() {
DCCpp ::setAccessory(Address, SubAddress, Activate);
}
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le avril 10, 2022, 10:02:06 pm
Oui, merci beaucoup, tout fonctionne parfaitement maintenant. J'ai inclus un clavier matriciel 4x3 pour gérer mes 9 aiguillages. Et je vais aussi ajouter 9 néopixels pour indiquer leur état.
Je téléchargerai des photos lorsque je l'aurai mieux défini.
Merci beaucoup pour tout,
Juan.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le juin 10, 2022, 05:54:19 pm
Désolé, j'ai oublié ça. Voici les photos de deux tableaux de distribution, avec le clavier pour les 9 aiguillages.
Un panneau de commande est le DCCpp d'Infotronik, et l'autre est le DCC-EX.
Titre: Re : Contrôle des aiguillages à partir du central DCC++.
Posté par: Juan le juin 10, 2022, 05:58:02 pm
Voici la centrale de DCCpp de Infotronik