LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: CATPLUS le avril 06, 2017, 09:14:23 am

Titre: Alimentation DCC
Posté par: CATPLUS le avril 06, 2017, 09:14:23 am
Bonjour,

En attendant de pouvoir parvenir à programmer un ATiny en décodeur, je viens de réaliser une petite alimentation DCC (surtout pour les débutants comme moi)

Je suis parti de la réalisation du site :
https://rudysmodelrailway.wordpress.com/2016/04/11/a-dcc-throttle-for-e6/

et des réalisations de Dominique.

J’ai rajouté des interrupteurs, des boutons  poussoirs (1 rouge pour le choix des locos et les 3 noirs pour F0 F1 F2) et un inter impulsion pour le sens de marche, des leds, un afficheur lcd (affichage de la loco, direction et fonction) etc…


J’ai une question pour nos amis programmeur, je ne trouve pas la solution pour programmer au-delà de 999.
Pourriez-vous SVP m’aider.

Ci-joint fichier, plan et photos.
Cordialement
Marcel
Titre: Re : Alimentation DCC
Posté par: CATPLUS le avril 06, 2017, 09:15:41 am
Suite
Titre: Re : Alimentation DCC
Posté par: CATPLUS le avril 06, 2017, 01:09:48 pm
Un oubli dans le plan général
NE PAS OUBLIER de RELIER la SORTIE BRAKE au MOINS
Titre: Re : Alimentation DCC
Posté par: Jean-Luc le avril 06, 2017, 01:54:36 pm
Bonjour,

J’ai une question pour nos amis programmeur, je ne trouve pas la solution pour programmer au-delà de 999.

C'est à dire ?
Titre: Re : Alimentation DCC
Posté par: Dominique le avril 06, 2017, 02:16:41 pm
Ahhhh la grosse vis sur le bouton du potar ;(((
Tu as perdu la vis sans tête d'origine ?

Comme Jean-Luc, que signifie ton "999" ? Dans quel logiciel ?
Titre: Re : Alimentation DCC
Posté par: CATPLUS le avril 06, 2017, 03:19:15 pm
Tout simplement on  peux programmer des numéros de locos de 1 à 999
Je voudrais pouvoir programmer la 1001. Le systeme ne veux pas........

Donc si vous avez une solution. Merci

Pour la vis sur le potar, j'ai pris ce j'avais sous la main (au moins je vois que plusieurs ont de bonne lunette) ;D
Titre: Re : Alimentation DCC
Posté par: Jean-Luc le avril 06, 2017, 03:26:35 pm
Sans voir le programme ça va être dur :)
Titre: Re : Alimentation DCC
Posté par: CATPLUS le avril 06, 2017, 03:36:07 pm
Je l'ai mis au-dessus du plan


Titre: Re : Alimentation DCC
Posté par: DDEFF le avril 06, 2017, 04:04:26 pm
Bonjour Marcel,

Mais non, la vis sert d'indicateur pour voir la position du potar  ;)

A part ça, je ne pense pas que ce soit l'Arduino qui te bloque à 999, mais le programme de DCC.

Amicalement
Denis
Titre: Re : Alimentation DCC
Posté par: Jean-Luc le avril 06, 2017, 04:49:15 pm
À priori la limite n'est pas 999 mais 255 puisque dans le programme, les adresses des locos sont dans un tableau d'octets. Et d'ailleurs il me semble que 255 a une signification spéciale : la trame idle

Or, d'après ce que je vois dans CmdrArduino, l'adresse de la loco est bien sur 16 bits (par exemple pour la méthode setSpeed128). Par conséquent la limitation est induite par le tableau LocAddress

En écrivant :

word LocAddress[] = {32,3,52,64,1001};

word étant un type de données 16 bits non signé, les adresses des locos sont maintenant sur 16 bits et on peut donc aller jusqu'à 65000+ locos/accessoires

Voir http://www.locoduino.org/spip.php?article11 pour ces histoires de taille des données
Titre: Re : Alimentation DCC
Posté par: CATPLUS le avril 06, 2017, 08:27:33 pm
Merci pour les réponses
Je regarde cela demain

Marcel
Titre: Re : Alimentation DCC
Posté par: Dominique le avril 06, 2017, 10:34:41 pm
Bonsoir Marcel,

Je pourrais t'aider plus vite avec une question plus claire ;)

Quelle est la grandeur que tu trouves limitée ? Est-ce l'adresse DCC ?

Par exemple, si l'instruction utilisée contient SHORT-ADRESS, cela implique que l'adresse DCC est codée sur un seul octet dans le CV 1.

Peux tu expliciter les lignes de ton code qui sont concernées

Merci d'avance
Dominique
Titre: Re : Alimentation DCC
Posté par: CATPLUS le avril 07, 2017, 07:43:52 am
Bonjour

Merci de m'aider
Toutes mes machines ont un numéro à 4 chiffres

Le problème, il n'est pas possible de créé une adresse DCC au delà de 999
Dans la ligne de code, j'ai rajouté le N° 1234

byte LocAddress[] = {32,3,52,999,1234}; // loc addresses on Command Station sniffer

Après lancement du programme impossible d'afficher la loco 1234, pour la loco 999 il n'y a aucun problème
Il faut peut être déclaré LONG-ADRESS quelque part...

Marcel




Titre: Re : Alimentation DCC
Posté par: Jean-Luc le avril 07, 2017, 08:34:31 am
Il faut également mettre word au lieu de byte. Par ailleurs comme le souligne Dominique, ça peut ne pas suffire.
Titre: Re : Alimentation DCC
Posté par: Dominique le avril 07, 2017, 08:57:12 am
Je vais me replonger un peu dans CmdrArduino qui est concerné ici, notamment comment il utilise les adresses.

En attendant j'ai 2 remarques:
- Pourquoi as-tu besoin d'adresses à 4 chiffres ? Tu as tant de locos que cela ?!?

- J'utilise maintenant DCC++ qui me semble plus fiable et plus sain. Il gère toutes les adresses (courtes et longues) avec un simple entier (int) et là il n'y aurait plus de problème. Mais je comprends que ce n'est pas cool de re-écrire le programme.
Titre: Re : Alimentation DCC
Posté par: Dominique le avril 07, 2017, 09:38:49 am
En tout cas dans ton code, le fait que les instructions de CmdrArduino soient caractérisées par "DCC_SHORT_ADRESS" implique que l'adresse est sur un octet (et toutes les valeurs de 0 à 255 ne sont pas permises selon la norme NMRA).

Ce qui m'étonne c'est que ça marche pour 999. À mon avis 999 est transformé en 231, son modulo 256.

Il faut utiliser d'autres instructions de CmdrArduino. Ça ne suffit pas de typer ton tableau en word.
... Ou alors te limiter aux adresses courtes (c'est ce que je fais chez moi, mais dans mon club les adresses sont longues pour que chacun en ait une qui soit unique, c'est pour ça que DCC++ est plus pratique).

Ça va me prendre un peu de temps car j'ai plein de trucs à faire aujourd'hui.
À bientôt
Dominique