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 ... 28 29 [30] 31 32 ... 45
436
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: octobre 22, 2017, 11:31:21 am »
Bonjour

Oui, le problème semble venir de l'installation de Commanders. L'arborescence de toutes les bibliothèques devrait ressembler à cela :

Mes Documents
     ...
     Arduino
          ...
          Libraries
               ...
               Commanders
                    src
                         Commanders.h
               DcDccNanoController
                    src
                         DcDccNanoController.h
               DIO2
                    src
                         Dio2.h
               LcdUi
                    src
                         LcdUi.h

et l'arborescence que je vois dans le message d'erreur est très étrange :/Applications/Arduino.app/Contents/Java/libraries/DcDccNanoController/examples/Demo/Demo.ino

Que fait DcDccNanoController dans les librairies java ?

437
Bibliothèques / Re : ArduiEmulator
« le: octobre 21, 2017, 01:34:52 pm »
C'est parce qu'il n'y est pas ! Il est présent dans ArduiEmulator et doit y rester. C'est la configuration du projet qui dit d'aller chercher les includes dans ArduiEmulator. Pour retrouver cette configuration :

propriétés du projet DIO2
C/C++/General
première ligne Additionnal Include Directories : $(VisualStudioDir)\..\Arduino\ArduiEmulator\ArduiEmulator

dans le contexte $(VisualStudioDir) est remplacé par 'Mes documents/Visual Studio 2017'.

Je me rend compte en écrivant cette réponse que c'est peut être Visual lui-même le problème. J'utilise 2017 en anglais, et je viens d'essayer avec un 2015 en français et le résultat n'est pas bon. Je dois creuser, mais on m'attend pour aller au théâtre, alors ce sera pour demain. Bonne fin de journée !

438
Bibliothèques / Re : ArduiEmulator
« le: octobre 21, 2017, 10:50:01 am »
Deux pistes rapides :

L'emplacement de ArduiEmulator. Pour que ça marche le fichier Arduino.h doit se trouver avec une arborescence comme "Mes Documents\Arduino\ArduiEmulator\ArduiEmulator\Arduino.h" . Oui, oui, avec deux fois ArduiEmulator. C'est une erreur sans conséquence du début du projet que je n'ai pas pris le temps de corriger....

La compilation doit se faire en debug/x64. Je n'ai rien testé d'autre !

439
Bibliothèques / Re : bibliothèque Commanders+Accessoires
« le: octobre 20, 2017, 09:20:27 am »
Pour moi, le problème vient de l'utilisation d'Accessories ici qui n'est pas justifié. Le rôle d'Accessories, si on simplifie au maximum, est de recevoir des événements qu'elle va traduire en niveaux HIGH/LOW sur les broches de l'Arduino. Ma version de ton code:

#include <Commanders.h>
#include <Wire.h>

ButtonsCommanderPush push;

#define CONSOLE

#define ADDR_I2C 0x10

#define DCCID_DROIT   DCCINT(20, 0)
#define DCCID_DEVIE   DCCINT(20, 1)

bool Commanders_I2C_SendEvent(uint8_t inID, unsigned long inEventID, COMMANDERS_EVENT_TYPE inEventType, int inEventData)
{
#ifdef CONSOLE
  Serial.print(F("I2C send Commanders event: "));
  Serial.print(inEventID, DEC);
  Serial.print(F("/"));
  Serial.print((char) ('0' + (char)inEventType));
  Serial.print(F("/"));
  Serial.println(inEventData, DEC);
#endif
 
  Wire.beginTransmission(inID);

  int nb = Wire.write((const uint8_t *)&inEventID, sizeof(unsigned long));
  nb += Wire.write((char )inEventType);
  nb += Wire.write((const uint8_t *)&inEventData, sizeof(int));

#ifdef CONSOLE
  Serial.print(F("I2C sender : nb byte transmitted : "));
  Serial.println(nb, DEC);
#endif

  Wire.endTransmission(true);

  return true;
}

void setup()
{
  Serial.begin(115200);
 
  Commanders::begin(LED_BUILTIN);
 
  // Setup of the buttons, one by accessory
  push.begin(DCCINT(20, 0),4);
  push.AddEvent(DCCINT(20, 1));
}

void loop()
{
  unsigned long id = Commanders::loop();
 
  if (id != UNDEFINED_ID)
  {
    Commanders_I2C_SendEvent(ADDR_I2C, id, Commanders::GetLastEventType(), Commanders::GetLastEventData());
  }
}

Le problème du plantage vient peut être de l'utilisation d'Accessories sans aucun accessoires déclaré !

440
Bibliothèques / Re : ArduiEmulator
« le: octobre 19, 2017, 05:38:39 pm »
J'ai refait les tests, ajouté les fichiers manquants et poussé toutes les bibliothèques avec les bonnes versions partout : DIO2, Accessories, Commanders, LcdUI et DcDccNanoController.
Je te conseille vivement d'enlever toutes ces bibliothèques, de les ré-installer, ainsi que ArduiEmulator. Chez moi, en partant d'un Libraries vide et sans ArduiEmulator du tout, j'ai  tout installé et cliqué sur les fichiers sln de Accessories, LcdUi et DcDccNanoController, et tout à démarré au premier F5...

441
Bibliothèques / Re : ArduiEmulator
« le: octobre 18, 2017, 08:37:16 pm »
Je dois faire des essais.
Tu es le premier utilisateur de cette solution qui n'était pas destinée à une diffusion mondiale ! Il faut donc que je teste un peu en situation réelle (biblio fraîchement installées...) pour me retrouver dans le même cas que toi et pouvoir corriger... L'autre excuse, si je devais en avoir une, c'est que la plupart des autres contributeurs du site travaillent sous Linux ou Mac. Je n'avais donc pas la pression pour mettre ArduiEmulator à disposition, vu qu'il ne tourne pas dans ces environnements.
Je reviens au plus vite pour apporter des réponses.

442
Bibliothèques / Re : bibliothèque Commanders+Accessoires
« le: octobre 18, 2017, 08:31:47 pm »
Je vois que tu progresses, c'est bien. La différence vient de la non utilisation de DCCINT du côté de l'envoyeur. Parce que DCCINT(20,1) donne 10020 ! C'est pour ça que ça marche quand tu mets 10020 du côté de l'envoyeur, interprété ensuite à la réception comme '20,1' . Pour être cohérent, tu devrais ajouter la macro DCCINT trouvée dans DccCommander.hpp, au source de l'envoyeur et l'utiliser pour définir le message à envoyer :

#define DCCINT(id, acc)      ((acc) * 10000UL + (id))

Commanders_I2C_SendEvent(0x10, DCCINT(20,0), COMMANDERS_EVENT_MOVEPOSITIONID, 0);
Commanders_I2C_SendEvent(0x10, DCCINT(20,1), COMMANDERS_EVENT_MOVEPOSITIONID, 0);

Le dernier argument n'a pas de sens pour un moteur à deux positions, c'est l'id de l'événement qui fait le boulot.

Dernier point, je n'avais pas imaginé que quelqu'un ferait un appel à AddEvent avant begin ! Mais je constate avec plaisir que ça marche quand même...

Pour tenter de répondre à ta question que je crains de ne pas avoir totalement comprise, un bouton poussoir dispose d'une liste d'événements. Le begin pose le premier, les AddEvent suivants en ajoutent (ou l'inverse  8) ). Le fait d'appuyer sur ce bouton va envoyer le premier événement. L'appui suivant enverra l'événement suivant, et ainsi de suite jusqu'à la fin de la liste. A ce moment là on recommence au début.

443
Bibliothèques / ArduiEmulator
« le: octobre 18, 2017, 04:15:13 pm »
Pour moi qui développe professionnellement au quotidien avec Visual Studio de Microsoft sous Windows 10, utiliser l'IDE et ses ressources pour identifier un problème dans mes développements Arduino est une 'souffrance' permanente. Pas de vrai débogueur, un éditeur minimaliste... Alors dès le début de mes pérégrinations Arduinesques, j'ai tenté de trouver le moyen d'utiliser visual plutôt que l'IDE, mais aussi et surtout de tester mon code sans utiliser d'Arduino !

Des émulateurs existent sur le net ou ailleurs, mais ils ne permettent pas de voir l'évolution des variables pendant l'exécution, ni de suivre la progression du programme sur chaque ligne de code exécutée... Et ça, c'est dans le meilleurs des cas, lorsqu'ils permettent d'utiliser une bibliothèque maison...

Utilisant Visual Studio 2015 à l'époque, j'ai créé un projet ArduiEmulator dont le but initial n'était que de pouvoir compiler et lancer un fichier .ino sans aucune émulation. Juste de quoi voir ce qui se passe dans le setup... Pour ceux que cela intéresse, ce projet est en C++ managé, c'est à dire dans le Framework .Net. Si ces mots ne vous disent rien, ce n'est pas grave, ils ne seront utiles qu'à ceux qui voudront modifier l'émulateur. Rapidement, le besoin d'une véritable émulation pour les broches et un écran Lcd ont été nécessaires. En particulier au moment de développer et tester LcdUI.

Aujourd'hui, le projet s'est étendu, et il permet de simuler une mémoire EEPROM, une liaison série bidirectionnelle, un écran Lcd. Il dispose d'une console série pour voir passer les messages, d'une zone de saisie pour en envoyer par la liaison série, d'une liste des broches actives avec possibilité de les nommer pour plus de clarté, de la possibilité de cliquer dessus pour en changer l'état, etc...

Pour s'en servir il faut un Visual Studio 2015 ou 2017 Community qui est gratuit (https://www.visualstudio.com/fr/thank-you-downloading-visual-studio/?sku=Community&rel=15). Je sais que Visual existe sous Mac, mais je ne sais pas s'il est compatible, en particulier à cause de la partie .Net qui est obligatoire pour l'émulateur. Pour simplifier, nous considéreront pour la suite que l'on parle d'une version Windows.
Les croquis créés à l'aide de l'IDE vont par défaut dans 'Mes Documents/Arduino'. C'est là qu'il faudra décompresser le ArduiEmulator.zip que vous trouverez dans le répertoire extras de toutes mes bibliothèques (très) récentes. C'est d'ailleurs le même zip partout, il n'y a pas une version par bibliothèque...

Visual a besoin d'une 'solution' (un fichier .sln) pour travailler. Une solution est un ensemble de projets (fichiers .vcxproj) dont ArduiEmulator fait partie. Toujours dans mes bibliothèques récentes, se trouve un répertoire vstudio contenant une solution. Par exemple Accessories contient dans le répertoire 'Mes documents/Arduino/libraries/Accessories/vstudio' un fichier AccessoriesTestExe.sln qui permet de travailler avec l'émulateur.
Pour utiliser un fichier ino particulier, il faut modifier le fichier InoProjet.cpp dans Visual en remplaçant l'include du type

#include "../examples/locoduino.org/programme6/programme6.ino"

par le vôtre :

#include "../../MonCroquis/MonCroquis.ino"

Ensuite, F5 pour compiler et lancer, et vous vous retrouvez dans l'émulateur !

Il est également disponible pour Commanders, Accessories, LcdUi et DcDccNanoController. Bien sûr, certaines choses ne sont pas traitées, comme le DCC ou les bus CAN, I2C ou SPI. Mais si vous utilisez Commanders, alors vous aurez à disposition un nouveau type de bouton ButtonsCommanderKeyboard qui permet d'utiliser le clavier pour simuler des poussoirs. Il y a aussi une fonction pinName() pour nommer une broche. Pour les parties de code spécifiques à Visual, il y a un define VISUALSTUDIO pour faire la différence entre compilation dans Visual et ailleurs:

#ifdef VISUALSTUDIO
...
#endif

Cela permet par exemple d'isoler une partie liée au bus I2C puisque l'émulateur n'en fera rien.
Lors d'une compilation sur Visual Studio, on compile pour un Mega2560 avec 200 broches ! Les macros comme ACCESSORIES_DEBUG_MODE et ACCESSORIES_PRINT_ACCESSORIES sont activées par défaut.

Beaucoup de fonctions ne sont que purement décoratives et ne font rien, sauf permettre de compiler, comme la gestion des interruptions ou la bibliothèque Wire utilisée par le bus SPI. D'autres ont été complètement implémentées pour fonctionner, comme LiquidCrystal ou Serial. Je ne serais pas contre un peu d'aide pour continuer à étendre les fonctionnalités de cet émulateur !

444
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: octobre 18, 2017, 04:11:57 pm »
Oui, c'est exactement ça. Je crois que je vais ouvrir un sujet exprès sur le forum. http://forum.locoduino.org/index.php?topic=393.msg3797#msg3797

445
Bibliothèques / Re : bibliothèque Commanders+Accessoires
« le: octobre 17, 2017, 11:31:42 pm »
C'est une erreur de ma part, corrigée dans la version 1.01 disponible sur Framagit : https://framagit.org/locoduino.org/Accessories/blob/master/Accessories.zip.

446
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: octobre 17, 2017, 10:33:19 pm »
Je viens de pousser une version 1.11, récupérable à l'endroit habituel (https://framagit.org/locoduino.org/DcDccNanoController/blob/master/DcDccNanoController.zip). Elle corrige un problème de paquet de fonction qui ne se répétait pas, et ajoute une fonction setAccessory() à la class DcDccController (non testée...). Cette fonction envoie un paquet Dcc pour piloter un accessoire.

447
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: octobre 17, 2017, 03:19:45 pm »
Dans un monde idéal, ce serait ça. Mais (parce qu'il y a un 'mais'), pour passer outre les problèmes de mémoire sur un Nano, j'ai du vider DCC++ de bon nombre de fonctionnalités, et notamment de l'envoi de commandes accessoires par du texte. Il faudrait remettre au moins une commande minimaliste genre AccessoryPacket(int address, int subaddress, int activate) dans le DCC++ utilisé par DcDccNanoController... Et dans ton croquis, la réception d'un événement I2C pourrait appeler cette fonction.

448
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: octobre 17, 2017, 02:09:27 pm »
Sur un réseau DCC, il ne peut y avoir qu'un seul contrôleur DCC, un seul émetteur. Donc je verrais plutôt :

- 1 arduino avec le DcDccNanoController pour le contrôle de la loco, et réception via bus (Serial, SPI, I2C, CAN,... avec Commanders) de commande extérieures
- 1 arduino avec les boutons TCO avec Commanders, capable d'envoyer les ordres en bus SPI, I2C, CAN ou autre, mais pas avec Commanders qui ne sait pas envoyer.
- 1 arduino avec les aiguilles, leds qui reçoit les ordres en DCC (librairies Commanders + Accessoires)

Il faut comprendre le rôle de Commanders. Cette bibliothèque reçoit des ordres via divers canaux possibles : boutons, encodeurs, bus I2C, SPI, CAN, ou encore DCC. D'autres sont à venir avec écran tactile, blutooth, wifi ou simplement radio 477Mz... Jamais Commanders n'envoie quoi que ce soit. Elle va simplement traduire tout ce qu'elle reçoit par divers moyens en quelque chose de plus simple, un événement, qu'un autre bout de code se chargera d'exploiter, comme Accessories qui va activer des accessoires selon le type et l'identifiant de l'événement, ou DcDccNanoController qui va le traduire en ordre DCC.
A titre d'information, il y a dans les exemples de Commanders des croquis qui envoient des données sur les bus pré-cités. Tu constatera que ces exemples n'utilisent pas Commanders !

449
Bibliothèques / Re : bibliothèque DcDccNanoController
« le: octobre 17, 2017, 11:18:47 am »
Dans l'absolu, rien n'empêche de gérer à la fois du DCC et des accessoires sur le même Arduino. Il y a pourtant trois inconvénients pratiques : la mémoire limitée comme tu l'as signalé, la complexité du croquis qui augmente, et les timing serrés en DCC forcément impactés par des appels réguliers à d'autres loop() comme celui d'Accessories qui n'est pas léger...
Au final, et vu le prix réduit d'un Nano en chine, il n'y a pas de bonne raison de ne pas séparer les deux usages. Un Nano pour le DCC, un autre pour les accessoires aidé par un petit montage façon mynabay (http://www.mynabay.com/dcc_monitor/) à faire soi même ou en soudant un circuit tout fait (http://www.dccinterface.com/product/arduino-model-railway-dcc-interface/)...

Pour ton code, il te faut déclarer un accessoire. Tu as déclaré un bouton poussoir Commanders, mais pas l'aiguillage qui va être piloté, un truc comme AccessoryMotorTwoWays ...

Enfin, il n'y a rien à injecter sur la voie. La partie accessoires se contente de lire ce qui passe sur la voie et en déduit si un accessoire doit être changé d'état.

450
Bus DCC / Re : Märklin Mobile Station 2
« le: octobre 12, 2017, 09:03:30 am »
Je n'ai rien fait ni sur mes décodeurs de diverses provenances, ni sur la MS2, et tout marche bien...

Pages: 1 ... 28 29 [30] 31 32 ... 45