Auteur Sujet: DCC++ sur Nano avec LMD18200  (Lu 76416 fois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #15 le: septembre 16, 2016, 10:46:12 pm »
Avec le câblage des inters, poussoir  et leds




il ne reste plus que le soft à finir et la centrale à moins de 20€ sera prête à brancher sur le réseau  :8) 8)
« Modifié: septembre 16, 2016, 10:49:52 pm par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Re : DCC++ sur Nano avec LMD18200
« Réponse #16 le: septembre 16, 2016, 10:51:36 pm »
Yeah ! ;D ;D

Un grand merci à Denis pour avoir déniché ce programme !

Mais tu es un peu loin pour trinquer  :-\
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 738
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #17 le: septembre 17, 2016, 09:16:39 am »
Merci Dominique, mais je n'ai fait qu'être curieux. C'est toi qui a fait le travail.
On se reverra, ne t'inquiète pas.  ;D

Dans les fonctions inédites, le fait que ta centrale détecte les CV d'adresses loco. Et ça, ça n'est pas dans le DCC++ (mais on pouvait le trouver : la preuve !)
Je suis certain que sur cette lancée, on peut détecter d'autres choses, via d'autres CV.

Ce que tu proposes n'est pas tout à fait une centrale, mais une centrale particulièrement adaptée à la gestion d'une navette (d'où les détections des 5 zones et les LED correspondantes).

Pour une centrale commandant un réseau, évidemment, ce n'est pas le NANO qui fera les détections (je dis ça pour ceux qui commenceraient le forum là).

Par contre, dans le cas d'une gestion centralisée gérée par ta centrale, il faudrait y ajouter une entrée externe : CS (Consigne de Sécurité).

On en avait déjà parlé : cette consigne sera donnée par le gestionnaire (le DUE) et correspondra à la vitesse maxi autorisée pour ce train.

Il s'agit d'une consigne, c'est à dire qu'elle va dépendre des positions des trains, qui agit sur la couleur des signaux, qui donne donc la consigne de la vitesse maxi autorisée.
Consigne et, donc, variable.

Vivement l'article !
PS : A5, c'est SCL.
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

PAT95

  • Newbie
  • *
  • Messages: 10
  • PAT95
    • Voir le profil
Re : Re : DCC++ sur Nano avec LMD18200
« Réponse #18 le: septembre 17, 2016, 04:34:11 pm »
Ca y est j'ai écrit une manette en Processing : c'est de la programmation de débutant mais ça semble marcher.



Le fichier joint doit être dézippé et placé dans le dossier sketch de Processing.

Cliquer sur le bouton (Off) pour passer (On) : cela envoie <1> (et <0> en revenant à Off)
On peut choisir d'allumer les phares (F0) et la marche avant et arrière.

La vitesse se commande avec le curseur à glissière.

L'adresse dcc est en dur (pour le moment) dans le source : ici c'est 18

Merci de votre feedback.
Amicalement

Bravo Dominique j'ai testé la manette avec un UNO, LMD18200 et MAX471 ça marche et j'ai même changé le registre 5 en 1 ainsi que l'adresse en 3.
A+

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #19 le: septembre 20, 2016, 09:46:27 pm »
Bonsoir,
je me suis présenté dans le fil correspondant.
Ma configuration : windows 10 x64, 16Go, AMD 3.2Ghz x4
en test DCCpp_VV sur Nano+LMD18200+MAX471, Alim 14V 2A, une V36 de Lentz
processing installé avec arduino 1.6.9 puis ManetteDCC chargé

Le problème que je rencontre est le lien entre processing et arduino : j'ai modifié la ligne dans le sketch processing pour qu'il utilise COM1 et l'adresse de ma loco (36)
apparemment, il y a bien un lien puisque ma loco démarre, phares allumés. Par contre, la manette est inopérante.
Le début de la zone de diagnostic :
Le croquis utilise 13 792 octets (44%) de l'espace de stockage de programmes. Le maximum est de 30 720 octets.
Les variables globales utilisent 656 octets (32%) de mémoire dynamique, ce qui laisse 1 392 octets pour les variables locales. Le maximum est de 2 048 octets.
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
   at processing.app.helpers.CircularBuffer.min(CircularBuffer.java:42)
   at processing.app.SerialPlotter$GraphPanel.computeBounds(SerialPlotter.java:90)
   at processing.app.SerialPlotter$GraphPanel.paintComponent(SerialPlotter.java:124)
   at javax.swing.JComponent.paint(JComponent.java:1056)
   at javax.swing.JComponent.paintChildren(JComponent.java:889)

Quand je recharge le sketch arduino minimum en laissant processing actif, j'ai :
java.io.IOException: jssc.SerialPortException: Port name - COM7; Method name - setEventsMask(); Exception type - Can't set mask.
   at processing.app.Serial.dispose(Serial.java:144)
   at processing.app.SerialPlotter.close(SerialPlotter.java:275)
   at processing.app.AbstractMonitor.suspend(AbstractMonitor.java:96)
   at processing.app.Editor$DefaultExportHandler.run(Editor.java:2404)
   at java.lang.Thread.run(Thread.java:745)
Caused by: jssc.SerialPortException: Port name - COM7; Method name - setEventsMask(); Exception type - Can't set mask.
   at jssc.SerialPort.setEventsMask(SerialPort.java:279)
   at jssc.SerialPort.removeEventListener(SerialPort.java:1064)
   at jssc.SerialPort.closePort(SerialPort.java:1090)
   at processing.app.Serial.dispose(Serial.java:141)
   ... 4 more
Tout redevient normal quand j'arrête processing.

Merci pour votre aide, j'imagine qu'il s'agit d'une erreur de débutant.

Michel

PS : la fenêtre du moniteur série avec une échelle sur la gauche.
« Modifié: septembre 20, 2016, 09:57:12 pm par msport »
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #20 le: septembre 20, 2016, 10:35:19 pm »
Bonjour Michel,

Si je comprend bien, il y a plusieurs questions :

1) le choix du port COM dans le sketch processing.

Je suis sur Mac et ça fonctionne directement, mais sur Windows, je sais que le choix du port est fait autrement. Et là je ne connais pas. DDDEF pourra peut-être vous en dire plus. Si vous l'avez déterminé dans le sketch, c'est que vous n'êtes pas loin.

2) Je ne comprend pas bien ce qui se passe avec les exceptions dans Processing, d'autant que vous avez apparemment la fenêtre affichée mais inopérante.
Est-ce que l'Arduino qui contient le croquis DCCpp_VV est branché sur un port USB de votre PC ? Sans doute. Est-ce que le sketch Processing "voit" le bon port ?
Le cause est probablement là.

3) Si vous tentez de rechargez (par téléversement ?) le sketch arduino en laissant processing actif qui occupe le port série de l'Arduino, ce n'est pas étonnant que ça ne fonctionne pas : le port série de l'Arduino ne peut pas être utilisé en même temps par 2 applications : Processing et l'IDE Arduino.

Mais je n'ai peut-être pas bien compris votre question. Avez-vous vérifié votre version de Java qui est le moteur principal de l'IDE Arduino et de Processing ?

Les lignes de diagnostic ne me disent rien en fait, c'est la description de ce que vous faites qui est la plus importante.

Donnez moi plus de détails par MP.

Cordialement
Dominique
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 738
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #21 le: septembre 21, 2016, 09:16:07 am »
Bonjour Michel,

A ma connaissance, on ne peut pas modifier "en dur" le port utilisé par Processing. En tout cas, pas directement.
J'utilise un bout de programme dans Processing qui permet de choisir le port, mais je pense que dans ton cas, il n'est pas nécessaire.

Je note dans ce que tu dis que tu as forcé le COM1 dans Processing et dans ton extrait de message d'erreur que java cherche le COM7. C'est sûr que ça ne va pas marcher.

Je vais expliquer en détail, quitte à enfoncer des portes ouvertes. Des fois, on bloque sur des choses évidentes... ;)

Ce que je propose :

D'abord une petite vérification : tu débranches le câble USB de l'Arduino et tu le rebranches. Puis tu téléverses le sketch Arduino. Ne lance pas Processing.

Tu choisis ton modèle d'Arduino dans Arduino outil/type de carte et tu regardes quel port série il t'a attribué dans outil/port.

Si tu as deux Arduino de branchés (c'est mon cas), tu verras que suivant l'ordre dans lequel tu les branches, le choix des ports est croisé.
Tu peux éventuellement choisir toi même ton port via l'interface IDE, mais uniquement parmi ceux que l'USB t'a réservé.
Moi, j'ai souvent le choix entre COM6 et COM7 pour mes deux Arduinos.

Tu lances le sketch Arduino et tu ouvres le moniteur série.
C'est bête à dire, mais il faut que la vitesse du port (en bas à droite) soit la même que celle du sketch (115200 dans ton cas)  ;D

Passons à ton problème.

Bien que ça ne serve certainement à rien, je débranche le câble USB pour être sûr qu'on a bien tout initialisé.
J'ouvre Arduino, je téléverse et SURTOUT je n'ouvre pas le moniteur série !!  :-X
Sinon, le port est occupé et Processing ne pourra pas marcher.

Puis j'ouvre Processing et je lance.
Processing dresse une liste des ports et prend le premier port série par défaut.
Si tu n'as pas 50 ports utilisés en même temps, ça marche du premier coup.

Dis-moi si ça marche, maintenant

Denis (= DDEFF, avec seulement deux D  ;D)
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Re : DCC++ sur Nano avec LMD18200
« Réponse #22 le: septembre 21, 2016, 09:48:42 am »

Denis (= DDEFF, avec seulement deux D  ;D)

... Et deux F.
Tu a l'œil !
Et mon clavier à des rebonds ;(
Désolé !
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #23 le: septembre 21, 2016, 10:06:13 am »
Bonjour à tous,
un grand merci pour vos réponses détaillées (et rapides).
je suis confus, je n'ai pas encore testé, mais dans ma fébrilité, j'ai bien sur lancé l'IDE d'arduino ET processing.
je vous propose de supprimer mon message (puis celui-ci) dans le fil, vu la banalité de la solution. Ce qui vous permettra de faire également le ménage pour garder un fil propre.

Michel
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #24 le: septembre 21, 2016, 10:26:16 am »
Ok on peut le supprimer, mais, stp, confirmes nous que ça marche.

Cela dit, je pense que le conseil n'est pas inutile et peut éviter la même mésaventure à d'autres.

Cordialement.
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 738
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #25 le: septembre 21, 2016, 10:40:38 am »
Pour info, vu que de nombreux posts traitent de Processing et qu'il est même utilisé dans l'appli populaire de Dominique, je vous signale que je vais faire un article sur les bases de Processing (comment on l'installe, ce qu'il sait faire et ce qu'il ne sait pas faire, la gestion du port Série, ...)

Mais je suis d'accord avec Dominique : les erreurs peuvent être instructives.
Je n'ai pas honte de dire que j'avais un moniteur Arduino à 9600 et un sketch à 115200. Et je me suis demandé longtemps pourquoi ça n'affichait rien... :(

Attention à ce que tu écris : tu es obligé de lancer l'IDE Arduino (ne serait-ce que pour téléverser le sketch).

Ce qu'il ne faut pas lancer, c'est le moniteur Arduino.
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Re : DCC++ sur Nano avec LMD18200
« Réponse #26 le: septembre 21, 2016, 02:22:58 pm »
...  tu es obligé de lancer l'IDE Arduino (ne serait-ce que pour téléverser le sketch).

Ce qu'il ne faut pas lancer, c'est le moniteur Arduino.

Pas sur !

Sur Mac en tout cas, après un televersement, il est possible que le port ne soit pas libéré. Il vaut mieux quitter l'IDE carrément.
D'ailleurs l'IDE n'est pas nécessaire pour utiliser Processing.
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #27 le: septembre 21, 2016, 03:15:29 pm »
On avance, on avance ...

Déjà j'ai bien l'adresse 36 de ma loco dans le moniteur en lançant le sketch arduino ...

Ensuite, en n'ouvrant pas le moniteur Arduino et en remodifiant la ligne du sketch processing :
  String portName = Serial.list()[1];
j'ai bien le sketch arduino dans les diags processing :
COM1 COM7
<DCC++ BASE STATION FOR ARDUINO NANO / LMD18200 MOTOR SHIELD + MAX471: V-1.2.1-DB / Sep 21 2016 14:52:02>
<N0: SERIAL>
<p1>
<rm123|123|1 36>
m123
adresse DCC : 36
<p0>
Par contre, je n'ai qu'un clin d'oeil en vert avant de repasser instantanément en rouge.
Seul le bouton Exit semble actif avec In stop <p0> qui s'affiche dans la dite fenêtre.

Que vérifier ?
Cordialement

DDEFF

  • Hero Member
  • *****
  • Messages: 738
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #28 le: septembre 21, 2016, 03:57:44 pm »
Je serais pour String portName = Serial.list()[0];
Le premier port est le "0"
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #29 le: septembre 21, 2016, 04:03:32 pm »
non, non :
 String portName = Serial.list()[0];
donne
COM1 COM7
et rien d'autre ...
donc pas la communication avec arduino qui suit (avec Serial.list()[1] dans mon cas)
<DCC++ BASE STATION FOR ARDUINO NANO / LMD18200 MOTOR SHIELD + MAX471: V-1.2.1-DB / Sep 21 2016 14:52:02>

Cordialement