Bibliothèque Accessories (2)
Que mettre dans son croquis ?
. Par : Thierry
Vous répondez à :
Bonsoir Msport...
Merci pour votre message et réponse rapide ce matin.
Je me faisais une joie de tester cette nouvelle librairie mais j’ai à nouveau des messages d’erreur. Je pensais qu’il fallait seulement rechercher les libriairies manquantes sur internet, mais ca n’a pas l’air d’être le cas !!!
Je suis sincèrement désolé de solliciter les gens pour si peu. J’essaye de lire le forum en détail mais beaucoup de choses m’échappent...
Voici mon message d’erreur :
In file included from c :\Users\Cyril\Documents\Arduino\libraries\Accessories\src/Accessories.h:605:0,
from C :\Users\Cyril\Documents\MES PROJETS\TRAIN_MINIATURE\Locoduino\Accessories\examples\Locoduino.org\Programme4\Programme4.ino:2 :
c :\Users\Cyril\Documents\Arduino\libraries\Accessories\src/PortExpanderMCP23017.hpp:10:10 : fatal error : Adafruit_MCP23017.h : No such file or directory
#include "Adafruit_MCP23017.h" // Include MCP23017 library
J’ai donc essayé de télécharger la librairie Adafruit_MCP23017.h en vain !!!
36 Messages
-
Bibliothèque Accessories (2) 18 décembre 2016 09:05, par Cédric
Bravo pour ce développement qui représente probablement quelques centaines d’heures de boulot.
Maintenant il y a tout de même une certaine complexité (probablement nécessaire) qui risque de rendre ce développement difficile à généraliser. Je vous propose non pas de critique mais des suggestions si vous le voulez bien :
Dans l’exemple, le mélange avec le dcc porte un coup fatal je trouve, même si c’est une possibilité offerte qu’il n’est pas du tout nécessaire d’utiliser.
On devrait pouvoir encore simplifier en liant les accessoires aux ports directement depuis leur classe peut-être en typant.
Vous avez créé des classes techniques totalement polyvalentes on pourrait intégrer une nouvelle déclinaison de vos classes pour cette fois mettre du fonctionnel ce qui simplifierait grandement.
Les cas d’usage sont assez connus dans le milieu du modélisme et pourquoi ne pas faire une bibliothèque métier avec des classes aiguillage (plusieurs types), PN, grande roue, téléphérique, feu de signalisation, Incendie, détection canton, lampadaire, etc. En faisant ça, le code sera très facilement généralisable ainsi que les arduino. Les "pro" pourront toujours créer leur propre type.
Ce n’est qu’une suggestion et je le répète, je ne critique surtout pas ce travail extraordinaire.-
Bonjour, et merci pour vos remarques (que je ne prend pas pour des critiques :) ).
Voyons point par point.
La présence du DCC dans les exemples ne fait que souligner la possibilité de son usage, puis qu’aujourd’hui cette forme de pilotage de loco devient la norme. Mais c’est vrai que c’est tout à fait facultatif.
Les typages forts dont vous parlez sont exactement l’inverse du but recherché : l’universalité. Comment dire à une DEL qu’elle utilise la broche gérée par un shield L293D et pas une simple broche directe sans typer fortement ce port ? Je veux bien croire que la déclaration supplémentaire que cela engendre créé de la complexité, par ailleurs réduite par rapport à UAD qui nécessitait un Driver en plus... Mais il me semble que c’est le prix à payer pour être ouvert à toutes les configurations possibles et sans doute pas encore imaginées.
Dans le même ordre d’idées, typer fortement les applications possibles de la bibliothèque revient à faire une bibliothèque spécialisée, et donc limitée à ce qu’elle propose. Le but d’Accessories est précisément de fournir les outils de base pour inventer vos propres animations ! Par ailleurs, Locoduino a déjà des bibliothèques thématiques comme celles sur les animations lumineuses...
-
-
Bibliothèque Accessories (2) 15 février 2017 12:58, par Roland
Je lis avec beaucoup d’intérêt ;)
Avec mes aiguilles LGB, j’ai déjà trouvé le pont-H TB6612FNG pour les piloter...
J’attend par ailleurs mes interfaces CAN qui viennent de Chine...
Bref... il n’y a plus qu’à intégrer tout ça... sauf :
je pensais utiliser les inverseurs d’aiguille (option LGB) pour valider la position...
le cas échéant en cas de manoeuvre manuelle...
pas vraiment un problème puisqu’il suffit de "lire" un inverseur...
mais je pense à coordonner l’état (donc connu) de l’aiguille avec sa commande...
Comment verriez-vous les choses ? -
Bibliothèque Accessories (2) 15 février 2017 14:38, par Thierry
Bonjour. Le problème est intéressant... Je n’ai effectivement pas prévu de remontée d’information, ou de mise à jour de l’état d’un accessoire suite à une intervention extérieure. Ajouter la fonctionnalité se ferait en deux étapes : une fonction de base permettant de mettre à jour l’état sans activation de l’accessoire, et un type d’événement dédié, traité par Accessories::ReceiveEvent(), qui permettrait de mettre à jour l’état depuis l’extérieur de la bibliothèque. Le tout est assez simple à coder. A voir dans un moment creux, sauf si c’est urgent !
-
Urgent ? non ;)
Une simple question pour l’instant... je continue à creuser...
C’est plus qu’intéressant.
-
-
Bibliothèque Accessories (2) 15 février 2017 20:41, par Thierry
Après réflexion, j’ai poussé sur la forge une nouvelle version 0.60 d’Accessories qui ajoute une fonction ExternalMove() à tous les moteurs. Il s’agit de forcer l’état courant du moteur à RIGHT ou LEFT. La partie électrique n’est pas sollicitée. Seul l’état interne d’Accessories change. D’autre part un nouvel événement ACCESSORIES_EVENT_EXTERNALMOVE peut être envoyé à Accessories::ReceiveEvent() avec dans l’argument ’data’, la nouvelle valeur de l’état.
Dites moi si cela répond au problème posé.-
Je n’ai pas encore analysé les mécanismes de manière approfondie...
L’idée est d’avoir un retour fiable quant à la position effective de l’aiguille et de déclencher toute action nécessaire : informer, verrouiller...
-
-
Bibliothèque Accessories (2) 17 février 2017 20:09, par pat95
Bonjour,j’ai réalisé avec l’aide du projet "Réalisation de centrales DCC avec le logiciel libre DCC++ en HTML" avec succès et c’est super. Maintenant je dois réaliser les commandes des appareils de mon réseau avec les bibliothèques "Accessories et "Commanders" et là j’ai une question : je teste le programme 4 des exemples et ça fonctionne mais je souhaite faire les commandes par l’intermédiaire de la console de l’IDE en Serial. Est-ce possible et comment ? j’ai bien essayé de gérer avec les événements mais sans succès... Merci.
-
Oui c’est possible. Commanders a un exemple tout prêt pour ça, c’est SerialCommander. La syntaxe à envoyer sur la ligne série, que ce soit par l’IDE ou un programme, est simple et décrite dans le code source de TextInterpreter.hpp :
// The accepted syntax is
// id separator event separator data
// where id can be a number from 0 to 4 000 000 000,
// where separator can be ’,’ , ’ ;’ , ’/’ or ’ ’
// where event can be any string of 9 characters long maximum, but must begin with
// ’t’ to toggle
// ’m’ to make a move, data is necessary a COMMANDERS_MOVE_TYPE enum value in this case
// ’p’ to make a move to a given position, data is necessary in this case
// ’c’ to change configuration, data is necessary in this case : high byte is the address, low byte the value.
// and where the data can be a COMMANDERS_MOVE_TYPE enum value if this is a MOVE event,
// or any number between -32767 and 32768 for a move position event.
//
// id can be dccid:dccacc for Dcc id, where dccid is the dcc address and dccacc 0 or 1.
//
// ex : 123 means ID 123 toggled
// ex : 456 | T means ID 456 toggled
// ex : 789 , p , 100 means ID 789 make an absolute movement to 100 .
// ex : 20:0 T means Dcc id 20/0 toggledSi Accessories est ’branché’ derrière pour recevoir les événements, alors elle exécutera les ordres !
-
Merci, je comprenais bien le paragraphe "liaison série exploitation" de commanders mais je n’avais pas intégré les principales lignes de l’exemple de SerialCommander dans mon programme. Maintenant tout fonctionne à merveille je peux saisir mes commandes dans la console IDE et l’appareil exécute. Merci.
-
-
-
Event sur HIGH et LOW 23 février 2017 22:11, par Benoit
Bonjour, Merci beaucoup pour tout ce travail.
Est-il possible d’avoir des événements sur les changements d’état HIGH vers LOW ?
En effet, je cherche à gérer ma détection de présence de train par conso de courant.
Je le gère comme un bouton push. Si détection de courant, passage en état HIGH, génération de l’événement, cela coupe le relais en utilisant un accessoire type light. Mais comment le désactiver s’il n’y a pas d’événement au passage à l’état LOW ?
Pour un aiguillage, cela permettrait aussi d’économiser une broche l’état LOW représentant un sens, l’état HIGH un autre sens.
Merci de votre aide-
Event sur HIGH et LOW 1er mars 2017 12:54, par Benoit
Bonjour,
Pour affiner ma remarque, sur les boutons de type switch, il serait intéressant de gérer un événement de passage de HIGH vers LOW. Pour les boutons de type push, ce n’est effectivement pas utile.
Cdt
-
-
Bibliothèque Accessories (2) 1er mars 2017 16:47
Bonjour, et pardon pour le délai.
Si je comprends bien, il s’agit de savoir quand le switch quitte un état avant d’en atteindre un autre ?-
Bonsoir,
oui, exactement. Si j’ai bien compris le fonctionnement actuel, l’événement est produit uniquement lors du passage de l’état low vers l’état high. Mon idée est de retrouver les changements d’état de la librairie Bounce2 (rose() et fell()).
Dans le cas d’un aiguillage à 2 positions, cela permettrait de gérer les 2 positions avec une seule broche.
Dans le cas d’un détecteur d’occupation de voie (que je traiterai comme un switch), cela permet de d’avoir l’événement au moment où le canton est occupé (passage du low vers high dans mon cas) et quand il est libéré, passage du high vers low.
-
-
Bibliothèque Accessories (2) 30 août 2018 19:49, par Pierre
Bonjour,
J’essaie d’utiliser cette bibliothèque pour commander tout simplement mes aiguillages avec des servos moteurs.
J’ai déjà réalisé un de vos exemples avec un bouton poussoir et ça marche, mais pour remplacer le bouton poussoir par du DCC, là je cale...
J’ai bien réalisé l’interface avec l’opto-coupleur, et branché sur la broche 3(interruption) de l’Arduino Nano.
J’ai beaucoup de mal à comprendre où l’on doit mettre dans le programme le n° de l’accessoire ( aiguillage manoeuvré par servo dans mon cas ).
Exemple : sur mon Intellibox1, si j’appui sur un bouton commandant un aiguillage, à quel endroit du code est-ce que je doit insérer le N° de l’accessoire ?
Et sous quelle forme ? 1 pour le bouton 1, 2 pour le bouton 2, ou y a t-il un codage particulier à chaque centrale ?
Cordialement
-
Bibliothèque Accessories (2) 30 août 2018 20:41, par Thierry
Attention, je pense qu’il y a confusion entre Accessories dont le rôle est de piloter des accessoires, et Commanders qui s’occupe de recevoir les ordres, par des boutons, un bus CAN ou DCC.
Il y a deux sources importantes d’information :
1 : la documentation incluse dans toutes mes bibliothèques et que l’on peut consulter en double cliquant sur le fichier extras/Doc/index.html de Arduino/Libraries/Accessories, ou en lançant le fichier StartDoc.bat du même répertoire sous Windows. Elle est en Anglais, mais je pense qu’elle reste compréhensible par le plus grand nombre. Idem pour Commanders, évidemment.
2 : les exemples. Dans ce cas précis, l’exemple Accessories/examples/Servos est le plus proche de votre besoin. Le numéro 20, celui associé à l’action est bien l’adresse DCC de l’accessoire. Le mieux est de lire la documentation de la classe DccCommanderClass dans Commanders.
-
Bonsoir,
Evidemment, j’ai confondu Accessories et Commander, mais le sujet est si vaste que l’on se perd facilement.
Je vais relire tout ça, merci encore de votre super travail.
.
Cordialement-
Bonsoir,
Je crois avoir trouvé, dans ’Commanders.h’, j’ai commenté la ligne :
- #define NO_DCCCOMMANDER
//#define NO_BUTTONSCOMMANDERPUSH
//#define NO_BUTTONSCOMMANDERANALOGPUSHES
//#define NO_BUTTONSCOMMANDERSWITCH
//#define NO_BUTTONSCOMMANDERPOTENTIOMETER
#define NO_CANCOMMANDER
//#define NO_DCCCOMMANDER
#define NO_I2CCOMMANDER
//#define NO_SERIALCOMMANDER
//#define NO_EVENTSSEQUENCERJe pense que en commentant cette ligne, on évite la routine qui désactive dans le programme ce qui concerne le DCC
Depuis, la compilation se fait, c’est bien ça ?
Cordialement
-
-
Bonjour,
La compilation de l’exemple Servo, me renvoie systématiquement le message :
"Dcc commander was not declared in this scope’, ainsi que tous les exemples incluant cette ligne.
Il me semble pourtant avoir décompacter toutes les bibliothèques, une idée ???
Cordialement
-
Oui, c’est bien ça. Si on compilait tout, la mémoire serait fortement impactée sans réelle utilité. Donc presque tout est désactivé par défaut, il faut activer le nécessaire, et juste ça, dans Commanders.h.
-
-
-
Bibliothèque Accessories (2) 11 septembre 2018 11:10, par pat95
Bonjour,
J’ai posté un message à Thierry qui n’est plus nécessaire mille excuses.
J’avais réussi à faire fonctionner le programme 4 de locoduino et après un plantage ordinateur j’ai été obligé de réinstaller l’IDE arduino, la bibliothèque et évidemment le programme 4 ne fonctionnait plus pourquoi ?
Pour les débutants comme moi ne pas oublier de vérifier les modifs que l’on a fait dans les bibliothèques Commanders et Accessories surtout les "//NO..." vous gagnerez du temps et moins d’énervement. Puis recompléter la librairie d’Aduino qui évidemment des éléments avaient disparu.
Thierry ne tient pas compte de mon dernier message tout fonctionne.
Cordialement. -
Bibliothèque Accessories (2) 11 septembre 2018 11:58
Ok, c’est noté. Cela dit, je suis conscient du problème posé par la modification de fichiers livrés avec la bibliothèque. Le .h doit de plus être adapté à chaque changement de projet à compiler... Et je suis sans doute le plus impacté puisque pour mes tests je passe mon temps changer de projet, et donc à modifier ce .h ...
Bref je suis preneur de toute solution alternative permettant de changer le comportement d’une bibliothèque pour un projet précis... -
Bibliothèque Accessories (2) 2 novembre 2019 16:58, par David
Bonjour à tous
Je lis le sujet avec beaucoup d’intérêt et j’essaie de reproduire les différents exemples donnés.Mon problème va sans doute vous paraître bête mais je ne parviens pas à faire fonctionner le programme2
J’ai chargé la librairie, le televersement se fait sans problème et pourtant ma Led ne s’allume pas.
J’ai également essayé avec les librairies présentes dans le dossier Hystory mais rien n’y fait.J’utilise une carte uno (une version non officielle)
Peut être que le problème viens de là ??
Si quelqu’un peu éclairer ma lanterne
Cordialement -
Bibliothèque Accessories (2) 3 novembre 2019 12:14, par David
Bonjour a tous
Je reviens vers vous pour présenter mes excuses pour mon précédent post
Je me suis rendu compte de mon erreur (vraiment très bête effectivement !) mais cela fait partie de mon apprentissage
Il semble que je me suis emmêlé les pinceaux entre Commanders et Accessories
Tout fonctionne comme il faut , je poursuis donc mes investigations
Un grand merci pour avoir crée ces librairies pleines de promesses en ce qui me concerne
Très cordialement
Ps : Peut être que mes 2 derniers messages peuvent être supprimer , histoire de ne pas polluer inutilement la page, merci d’avance -
Bibliothèque Accessories (2) 4 novembre 2019 09:14
Bonjour David
Oui, l’apprentissage passe par des erreurs, Rome ne s’est pas faite en un jour... Bon courage !
-
Bibliothèque Accessories (2) 12 avril 2020 15:48, par Jerome
Bonjour
A la fin du programme 2, ne manque t il pas cette ligne :
Accessories::loop() ; ?Le programme 2 ne fonctionnait pas du tout.
Le programme 3 fonctionnait.
En comparant le programme 2 avec tous les programmes suivants, je ne vois que cette différence.
Pour autant, après cette modification, le programme 2 ne conserve pas la LED allumée quand le poussoir est relâché, comme cela se passe dans le 3. Est ce normal ? -
Bibliothèque Accessories (2) 29 octobre 2021 19:42, par pat95
Bonsoir à tous.
Suite à changement de matériel j’en profite pour installer une version plus récente de IDE arduino vers 1.8.16 ainsi que les différentes bibliothèques que j’aie utilisées.
Et là premier problème avec Accessories j’ai le message d’erreur suivant : #include "SparkFunSX1509.h" // Include SX1509 library. Qu’est-ce cette librairie qui ne m’était pas demandée auparavant ?
Merci pour votre aide.-
-
Bonjour à vous,
je découvre LOCODUINO. J’ai réussi a faire marcher mon premier programme pour aiguillages solenoides avec UAD mais j’ai dru comprendre qu’il fallait maintenant utiliser Commanders et accesories.
J’utilise donc le programme4 pour les aiguillages présents dans les exemples de ACCESSORIES
L’IDE me dit qu’il manque les librairies Commanders.zip et DIO2.zip que j’ai trouvé dans le répertoire /extras de accesories.
Par la suite, il me dit qu’il manque le programme #include "SparkFunSX1509.h" // Include SX1509 library que j’ai téléchargé sur le site de GuitHub comme mentionné par msport (29 octobre 2021)
==> SX1509_IO-Expander-master.zipMaintenant, il me dit qu’il manque le fichier ShiftRegister74HC595.h ?
c :\Users\Cyril\Documents\Arduino\libraries\Accessories\src/PortExpander74HC595.h:9:10 : fatal error : ShiftRegister74HC595.h : No such file or directory
#include "ShiftRegister74HC595.h"et du coup, je suis perdu !!! merci par avance
cyril-
-
Bonsoir Msport...
Merci pour votre message et réponse rapide ce matin.
Je me faisais une joie de tester cette nouvelle librairie mais j’ai à nouveau des messages d’erreur. Je pensais qu’il fallait seulement rechercher les libriairies manquantes sur internet, mais ca n’a pas l’air d’être le cas !!!Je suis sincèrement désolé de solliciter les gens pour si peu. J’essaye de lire le forum en détail mais beaucoup de choses m’échappent...
Voici mon message d’erreur :
In file included from c :\Users\Cyril\Documents\Arduino\libraries\Accessories\src/Accessories.h:605:0,
from C :\Users\Cyril\Documents\MES PROJETS\TRAIN_MINIATURE\Locoduino\Accessories\examples\Locoduino.org\Programme4\Programme4.ino:2 :
c :\Users\Cyril\Documents\Arduino\libraries\Accessories\src/PortExpanderMCP23017.hpp:10:10 : fatal error : Adafruit_MCP23017.h : No such file or directory
#include "Adafruit_MCP23017.h" // Include MCP23017 libraryJ’ai donc essayé de télécharger la librairie Adafruit_MCP23017.h en vain !!!
-
Télécharger la librairie Adafruit_MCP23017.h :
ça coince où ?Voir en ligne : mizraith / mizraith_MCP23017
-
bonsoir,
Merci pour votre aide.
Je ne comprends pas pourquoi il n’y a pas un endroit où il y a l’ensemble des librairies nécessaires. Dés que je prends une librairie, j’ai l’impression que ce n’est pas la bonne ..
JE crois que ce n’est pas fait pour moi pourtant ce n’est pas faute d’essayer de comprendre...
et pourtant, je charge le programme de base "2 aiguillages" :-( !!!!C :\Users\Cyril\Documents\MES PROJETS\TRAIN_MINIATURE\Locoduino\Accessories\examples\Locoduino.org\Programme4\Programme4.ino : In function ’void setup()’ :
C :\Users\Cyril\Documents\MES PROJETS\TRAIN_MINIATURE\Locoduino\Accessories\examples\Locoduino.org\Programme4\Programme4.ino:32:3 : error : ’DccCommander’ was not declared in this scope
DccCommander.begin(0x00, 0x00, digitalPinToInterrupt(3), true) ;
^
C :\Users\Cyril\Documents\MES PROJETS\TRAIN_MINIATURE\Locoduino\Accessories\examples\Locoduino.org\Programme4\Programme4.ino:32:3 : note : suggested alternative : ’Commander’
DccCommander.begin(0x00, 0x00, digitalPinToInterrupt(3), true) ;
^
Commander -
-
-
-
-
-
-
-
Bibliothèque Accessories (2) 30 octobre 2021 09:58, par Thierry
Cela dit, c’est tout à fait vrai que si j’ai bien prévu les exclusions correspondantes aux extenders dans Accessories.h :
//#define NO_EXPANDER_SX1509
//#define NO_EXPANDER_74HC595
//#define NO_EXPANDER_PCA9505_06
//#define NO_EXPANDER_MCP23017Ils ne sont pas utilisés comme il se doit. Je dois faire une nouvelle version de la bibliothèque pour corriger ça. En attendant, comme le dit msport, le bon workaround est de récupérer ces bibliothèques.
-
Merci pour vos réponses.
He oui j’aurai dû m’en douter qu’il y aurait des "#define NO_" mais comme mes programmes fonctionnaient avant ma mise à jour je n’ai pas cherché.
Maintenant ça fonctionne.
-