Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Thierry

Pages: 1 ... 26 27 [28] 29 30 ... 45
406
Bibliothèques / Re : Bibliothèque DCCpp
« le: février 04, 2018, 10:22:11 am »
Voilà pourquoi un schéma, une photo, une explication du contexte et les fichiers sources concernés sont nécessaires avant même de poser des questions.
Envoie ici tes fichiers ino complets, je pourrais ainsi mieux comprendre la situation.
D'après ce que tu dis, DccCommander reçoit bien des paquets accessoires pour les identifiants 2/0 et 2/1. Mais je ne sais pas si c'est ce qui est codé côté émetteur, ni ce que tu en fais dans ton ino de récepteur...

407
Bibliothèques / Re : Bibliothèque DCCpp
« le: février 03, 2018, 08:38:33 pm »
Bonsoir.

Je recolle au problème...

MaxiDcc a été prévu pour piloter des aiguillages avec des boutons, pas avec des ordres envoyés par Dcc... C'est d'ailleurs un peu étrange de demander à une centrale (même faite par DCCpp) de servir aussi de décodeur... Il ne peut pas y avoir deux donneurs d'ordres sur un réseau. Donc la seule centrale à envoyer des commandes Dcc est MaxiDcc. Pourquoi dans ce cas DccCommander aurait-il à analyser des trames pour les décoder ? Si j'utilise Commanders dans l'exemple MaxiDcc, c'est pour gérer les boutons de la centrale de manière bien plus simple qu'en codage classique. Mais l'utilisation d'un DccCommander là est bien plus dangereuse qu'utile !

Si l'on veut décoder les ordres envoyés par une centrale, comme la CS2 par exemple, il faut utiliser Commanders seul avec comme point de départ son exemple DccCommanders .

408
Le logiciel DCC++ / Re : Bug DCC++ dans fonction Sensor::check()
« le: février 02, 2018, 11:30:36 pm »
Tu as tout à fait raison. Le problème sera corrigé -un peu différemment- dans la prochaine version:

void Sensor::check(){
  Sensor *tt;

  for(tt = firstSensor; tt != NULL; tt = tt->nextSensor){
    tt->signal = (float)(tt->signal * (1.0 - SENSOR_DECAY) + digitalRead(tt->data.pin) * SENSOR_DECAY);
   
    if(!tt->active && tt->signal<0.5){
      tt->active=true;
      INTERFACE.print("<Q");
      INTERFACE.print(tt->data.snum);
      INTERFACE.print(">");
#if !defined(USE_ETHERNET)
      INTERFACE.println("");
#endif
    } else if(tt->active && tt->signal>0.9){
      tt->active=false;
      INTERFACE.print("<q");
      INTERFACE.print(tt->data.snum);
      INTERFACE.print(">");
#if !defined(USE_ETHERNET)
      INTERFACE.println("");
#endif
    }
  } // loop over all sensors
   
} // Sensor::check

Ainsi le texte est toujours envoyé, quelle que soit l'interface, mais en plus si on est sur une connexion série, un retour chariot sort le message de suite sur la console et améliore la lisibilité.

409
Bibliothèques / Re : Bibliothèque DCCpp
« le: janvier 28, 2018, 06:04:05 pm »
Pardon pour le délai, la période est un peu compliquée pour moi...

pour les structures turnout, les valeurs sont celles utilisées par le DCC++ originel documentées dans mon code dans turnout.h :

   /** Initialize the turnout created by regular C++ instantiation.
   @param id The numeric ID (0-32767) of the sensor.
   @param add   The primary address of the decoder controlling this turnout (0-511).
   @param subAdd   The sub-address of the decoder controlling this turnout (0-3).
   @remark Should not be used in command line mode.
   */
   void begin(int id, int add, int subAdd);

le premier argument id sert à 'nommer' l'aiguillage.
le deuxième et le troisième servent à décrire le décodeur DCC qui est relié à cet aiguillage. C'est sans objet si l'aiguillage n'est pas contrôlé par DCC.

Pour la déclaration des adresses DCC, ça me parait correct.

Dans DccCommander.begin, les deux premiers arguments servent à donner un identifiant de constructeur de décodeur, et un identifiant de modèle pour ce constructeur. Laisser ces valeurs à 0 ou 1 ne pose pas de problème.

410
Les réseaux / Re : projet Sokaris83
« le: janvier 28, 2018, 05:40:33 pm »
Beau projet ! Pour info, Pégase a déposé le bilan il y a déjà quelque temps (http://le-forum-du-n.forumotions.net/t21473-pegase-info-en-liquidation-judiciaire)...

411
Bibliothèques / Re : Bibliothèque DCCpp
« le: janvier 07, 2018, 08:23:53 pm »
Joli, j'ai laissé passer ça... Je modifierai les exemples pour tenir compte de l'événement EVENT_ENCODER.

Pour le BP F0, je suis surpris, parce que dans mon exemple, il s'agit d'un ButtonsCommanderSwitchOnePin, c'est à dire d'un switch dont on utilise seulement une broche, et pas un bouton poussoir. D'ailleurs l'un comme l'autre ont un mécanisme de debounce intégrés. Mais peut être le délai est-il trop court à 50ms. Dans Commanders, pour ButtonsCommanderSwitchOnePin il faut modifier le source ButtonsCommanderSwitchOnePin.cpp ligne 13 et sans doute augmenter la valeur de debounceDelay... C'est aussi la valeur à changer dans ButtonsCommanderPush.cpp pour les poussoirs, si le besoin se fait sentir...

412
Bibliothèques / Re : Bibliothèque DCCpp
« le: janvier 07, 2018, 06:01:57 pm »
Une nouvelle version 1.0.0 a été publiée. Elle corrige deux problèmes : l'apparition de nombreuses lignes vides sur la console, causée par Sensor::check(), et la mise à la norme de l'envoi de paquet DCC pour l'activation de fonctions qui doit toujours se faire en double.
Avec ces modifications, maxiDcc semble fonctionner. Pour la partie Sensor dont j'ai repris le codage exact (à l'exception de check(), et on a vu le résultat...), je ne comprends pas la façon d'identifier un état haut ou un état bas sur la broche. Peut être faut il impérativement une résistance de Pullup, et sans utiliser celle interne de l'Arduino. En tout cas c'est ce que dit Gregg (Sensor.cpp, ligne 62):
Citer
// don't use Arduino's internal pull-up resistors for external infrared sensors --- each sensor must have its own 1K external pull-up resistor

D'autre part, dans Commanders des événements de démarrage interviennent sur tous les switchs, pour initialiser leur état de départ, ce qui provoque l'activation des turnout...

Enfin pour la forme du signal, je n'ai pas d'oscilloscope, je ne peux pas vérifier. Ce que je sais, c'est que toutes mes locos fonctionnent.

413
Bibliothèques / Re : Bibliothèque DCCpp
« le: janvier 06, 2018, 09:01:47 pm »
Je constate le même genre de problème sur mon émulateur. Je regarde demain...

414
Bibliothèques / Re : Bibliothèque DCCpp
« le: janvier 06, 2018, 08:25:31 pm »
Bonsoir. Il faut commencer par se mettre en mode Debug en retirant le '//' devant #define DCCPP_DEBUG_MODE ligne 296 de DCCpp.h, recompiler et téléverser. Une fois là, il devrait s'afficher des choses en clair au lancement. Sinon il y a peut être juste la vitesse de la console à régler, sans doute sur 115200...

415
Discussions ouvertes / Re : Sujet éphémère mais important les voeux
« le: janvier 01, 2018, 05:43:04 pm »
Une bonne année 2018 à tous et toutes (même si on manque cruellement d'éléments féminins...). Plein de projets de trains, d'Arduino et assimilés, et plein de bonheur, santé, amour, argent pour les concrétiser !

416
Composants / Re : Teensy 3.1, 3.2 - Sonorisation locomotive
« le: décembre 30, 2017, 11:25:50 am »
Si bien sûr... C'est un système moderne, tout de même !

417
Bibliothèques / Re : Bouton poussoir
« le: décembre 23, 2017, 05:16:09 pm »
Ingénieux la gestion des poussoirs, mais pourquoi passer par des allocations dynamique pour les locos ? Tu sais dès la compilation combien de locos tu veux, autant laisser faire le compilateur:

CmdLoco Cloco[MaxLocos];
et utiliser ensuite une fonction d'initialisation :
for (int L=0; L<MaxLocos; L++) {
    Cloco[L].begin(ledVerte[L],ledRouge[L],gPotPin[L], 25);
  }

Il y a plusieurs avantages à cette façon de faire :

  • Le bilan mémoire fourni par le compilateur avant de téléverser intégrera ainsi aussi cette partie, et il sera plus facile de détecter un problème.
  • La mémoire vive sera moins fractionnée par le recours à 'new'.
  • Le begin pourra être utilisé à tout moment!
  • Il y aura un petit peu de mémoire économisée puisqu'il n'y a plus besoin de pointeurs intermédiaires.


418
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: décembre 09, 2017, 09:01:42 pm »
Oui tu as raison, Commanders active bien les PULLUP de l'Arduino, mais l'ami Xavier, dans son commentaire du 11 octobre associé à l'article a expliqué qu'il avait dû ajouter du 5V sur l'une des entrées de l'encodeur pour que ça marche... Ça dépend sans doute du modèle d'encodeur.
Et mes encodeurs sont aussi tout nu !

419
Bibliothèques / Re : Re : bibliothèque DcDccNanoController
« le: décembre 09, 2017, 05:47:02 pm »
-Vitesse + bouton momentané : il faut mettre des résistances? vers le + ou vers le moins?
Pas de résistance pour moi, mais d'autres en ont mis...
Citation de: petitrain
-F1 et F0 : bouton à deux positions fixes?
Oui, bien que ça puisse marcher avec un poussoir.
Citation de: petitrain
-DC/DCC : bouton à deux positions fixes ou momentané?
Positions fixes. Il faut démarrer avec le bouton dans la bonne position...
Citation de: petitrain
-Echap : bouton momentané ?
Oui, forcément.
Citation de: petitrain
-Urgence : bouton momentané?
Oui, mais on pourrait le gérer différemment. Ce n'est pas ce que j'ai fait...

Pour moi le plus dur a été de trouver un boitier adapté, du coup je l'ai fabriqué avec des chutes de contre-plaqué de 5mm et un peu de Forex.

Bon courage...

420
Présentez vous ! / Re : Présentation Bernyca qui débute
« le: décembre 05, 2017, 09:35:44 am »
Bonjour et bienvenue parmi nous.

Pour commencer en DCC, quelques étapes :

  • l'apprentissage du langage, même si tu pratiques déjà, valides tes connaissances acquises.
  • un montage simple comme celui lié à ma bibliothèque DcDccNanoControler. C'est une centrale complète, mais au format réduit : une seule loco pilotable à la fois. C'est un bon point de départ pour avoir de quoi faire tourner un petit réseau sans trop dépenser (moins de 50€, voire beaucoup moins en passant par des sites chinois). Le code nécessaire à produire est réduit, et dans les exemples figure déjà le code de ma propre centrale, facilement adaptable.
  • Autre possibilité : une centrale simple sans boutons, commandée par un ordinateur et une page web, grâce au travail de Christophe sur le sujet et ses articles sur node.js .
  • Une fois que tu auras réalisé l'un ou l'autre des montages, tu auras acquis un peu plus d'expérience et tu pourras te lancer dans la réalisation d'un TCO pour piloter tes accessoires.

N'hésites pas à poser des questions et à décrire ton projet.

Pages: 1 ... 26 27 [28] 29 30 ... 45