LOCODUINO

Parlons Arduino => Bibliothèques => Discussion démarrée par: petitrain le février 25, 2018, 11:28:26 pm

Titre: Bibliothèque Commanders
Posté par: petitrain le février 25, 2018, 11:28:26 pm
Bonjour,
  J'essaie de me familiariser avec la bibliothèque Commanders de Thierry:
  Pour les boutons et les switchs, pas de problème!!!
  J'attaque les encodeurs, et là, j'ai un problème :
   - je déclare : ButtonsCommanderEncoder  monEncodeur;
   - dans le Setup() : Commanders::begin(LED_BUILTIN);
                               monEncodeur.begin(100,8,9,0,-4,4);( j'ai monté 4 leds que je voudrais allumer/éteindre avec monEncodeur)
   - dans loop() : unsigned long eventID = Commanders::loop(); // je récupère l'identifiant de monEncodeur
       if( eventID != UNDEFINED_ID)      // Si il a bien l'identifiant,
        value = Commanders::GetLastEventData(); // je mets les valeurs (entre -4 et 4)  dans ma variable value
et je fais un switch ( value) pour allumer et éteindre mes leds successivement

mais ça ne marche pas, y'a quelque chose que je n'ai pas compris, surement dans l'exploitation des valeurs renvoyées par l'encodeur.
Voilà, si quelqu'un veut m'aider, je l'en remercie par avance...
Titre: Re : Bibliothèque Commanders
Posté par: Thierry le février 27, 2018, 11:53:19 pm
Bonsoir

Un encodeur, à la base, c'est fait pour renvoyer une quantité de mouvement : vers l'avant avec +1, vers l'arrière avec -1. La quantité de mouvement de l'encodeur nécessaire pour déclencher un +1 ou un -1 est donnée par le quatrième argument de begin, que je ne vois pas là... Donc on parle d'une vieille version de Commanders, antérieure à la 1.40. Voici quoi faire:

1 - mettez vous à jour sur la bibliothèque.
2 - testez à nouveau en ajoutant le quatrième argument 'MoveIncrement' au begin de l'encodeur.
3 - Si ça ne marche toujours pas, dites le ici et utilisez la balise code (le #) pour votre programme, ou ajoutez le en pièce jointe.
4 - On est pas à l'abri d'un bug que je tracerai beaucoup mieux avec le code complet. Le mode mini/maxi de l'encodeur n'est pas extrêmement testé...
Titre: Re : Bibliothèque Commanders
Posté par: petitrain le mars 01, 2018, 10:14:07 am
Bonjour,
Merci de votre disponibilité et bravo pour toutes ces bibliothèques très riches en possibilités.
J'avais bien la dernière version de la bibliothèque, mais j'avais suivi l'exemple  "FullDéclarations" fourni avec, où l'argument 'MoveIncrement' n'est pas mentionné. Voilà mon erreur!!!
Je continue donc mon investagation, j'aurai peut-être encore besoin de précision.
Merci encore.
Titre: Re : Bibliothèque Commanders
Posté par: Thierry le mars 01, 2018, 10:19:53 am
Ha ben non, en fin de compte, comme c'est dans un des exemples fournis, c'est plutôt mon problème... Je corrigerai ça pour la prochaine version...
Titre: Re : Bibliothèque Commanders
Posté par: petitrain le mars 03, 2018, 09:58:21 am
Encore du boulot en perspective!!!!
Bon, sinon il y a un forum pour se faire dépanner!!!
Encore merci pour tout le boulot , je prépare avec le club des petites centrales "Dccppnanocontroler" , je poste des photos dès que l'on est un peu avancé;
Titre: Re : Bibliothèque Commanders
Posté par: railyRabbit le mai 20, 2018, 03:21:50 pm
Hello,

Je suis en train d'essayer la lib Commanders, avec le sketch "SimpleButtons". Mais je n'ai aucune réaction, que ce soit sur la LED ou sur le port série, alors que j'ai bien activé le mode DEBUG dans Commanders.h

J'ai essayé avec l'IDE en ligne et local, en retéléchargeant la dernière version depuis Git..  :o
Ça compile bien, mais ça ne réagit pas :(

Une idée ?

(testé avec Uno, IDE local dernière version...)
Titre: Re : Bibliothèque Commanders
Posté par: Thierry le mai 20, 2018, 03:39:56 pm
Après vérification et reproduction du problème, il se trouve qu'il y a eu un changement dans l'ordre des arguments du begin() pour toujours avoir l'identifiant en premier, et l'exemple n'a pas suivi... Le setup de SimpleButtons s'écrit donc :

void setup()
{
Commanders::begin(ReceiveEvent, LED_BUILTIN);

Left.begin(100, 4); // Arduino pin 4, id 100
Dc.begin(101, 6);
Right.begin(102, 8);
pushEPS.begin(103, 10);
pushTJD.begin(104, 11);
}

Je vérifie d'abord les autres exemples, et je pousserai une version corrigée sur Github...
Merci pour le signalement !
Titre: Re : Bibliothèque Commanders
Posté par: railyRabbit le mai 20, 2018, 03:47:27 pm
Ah super, j'essaye ça tout de suite ça marche nickel maintenant ! 8)
Merci Thierry !!

J'ai finalement réussi à avoir quelques infos sur le port série, en ajoutant un Serial.begin(9600) dans le setup.
Ça vaut peut-être le coup de le rajouter dans le sketch d'exemple ?
Titre: Re : Bibliothèque Commanders
Posté par: railyRabbit le mai 20, 2018, 05:28:41 pm
Je suis passé à l'implémentation d'un AnalogPushes, mais ça ne répond pas. :-[
Pourtant les valeurs attendues sont bonnes, vérifiées par 2 lignes de code :

/*************************************************************
project: <Commanders>
author: <Thierry PARIS>
description: <Demo sample with push buttons, event handler alternative>
*************************************************************/

#include "Commanders.h"

ButtonsCommanderAnalogPushes Pushes;
 
int values[] = { 0, 270, 518, 774 };
unsigned long ids[] = { 100, 101, 102, 103 };

void ReceiveEvent(unsigned long inId, COMMANDERS_EVENT_TYPE inEvent, int inData)
{
COMMANDERS_PRINT_EVENT(inId, inEvent, inData);
}

void setup()
{
Serial.begin(9600);
Commanders::begin(ReceiveEvent, LED_BUILTIN);

Pushes.begin(A0, 4, ids, values, 30);
}

void loop()
{
Commanders::loop();
if (analogRead(A0) < 900)
Serial.println(analogRead(A0));
 }
Titre: Re : Bibliothèque Commanders
Posté par: Thierry le mai 21, 2018, 08:37:15 pm
Effectivement, ça ne marchait plus... C'est corrigé, la version est poussée sur Github. Dis moi si ça marche.
Titre: Re : Bibliothèque Commanders
Posté par: railyRabbit le mai 21, 2018, 09:32:13 pm
Hop, ça marche au poil ! ;D merci !
Je compte m'en servir pour sélectionner des itinéraires...
Titre: Bibliothèque Commanders: quelques questions...
Posté par: savignyexpress le août 27, 2018, 12:49:03 pm
Bonjour Thierry,

Un tout grand merci et un tout grand bravo pour la bibliothèque Commanders qui est très bien structurée. C'est un très bon exemple pour moi qui me (re-)mets au C++ !

J'ai quelques questions:

Meilleures salutations de Suisse romande.
Titre: Re : Bibliothèque Commanders
Posté par: Thierry le août 28, 2018, 10:49:08 am
De rien, c'est un plaisir de voir son travail utilisé...

1 : Pour les extensions, il 'suffit' effectivement de continuer à dériver les classes. Pour les détecteurs en tout genre, une classe dédiée serait la bienvenue. Je n'ai pas d'exemple pratique, c'est pour ça que je ne l'ai pas encore fait... Comme tu dis, ça ressemble beaucoup à un poussoir avec une durée d'activation un peu plus longue.
2 : Oui c'est bien ce pattern qui est utilisé, dans une implantation maison avec une instance statique de la classe CAN/I2C allouée dès qu'on en a besoin.
3 : J'ai en projet d'ajouter des événements 'appui long' ou 'double appui' sur un même bouton poussoir, mais je n'avais pas pensé à un appui simultané sur deux boutons...

Bon courage.