Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A

Démarré par ucino, Janvier 01, 2019, 09:54:30 pm

« précédent - suivant »

ucino

Bonjour à tous,

Tout d'abord un grand merci à Seb et à ceux qui l'ont aidé pour mettre ce projet en place.

J'essaie de mettre en place des blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver ULN2003A.

Je débute dans les moteurs pas à pas, blocky@rduino et javascript et dans github... ce n'est donc pas très évident pour moi :)

ça avance un peu quand même, mais voici ce qui me bloque actuellement :

Quand on dépose un de ces 3 blocs créés, un void nomdelinstance ; qui est créé dans le code arduino, ce qui rend la compilation dans arduino impossible, et ce que d'autres blocs ne font pas.

J'aimerai savoir comment empêcher cela.

Voici quelques infos :

Accéder au résultat actuel : http://developpements.open-elearning.fr/contrib-blockly-at-arduino/

Choisir français > Arduino Nano > Configurer les blocs > tout > Moteurs pas à pas > ce sont les 3 blocs avec des images.

Glisser déposer un de ces 3 blocs, et un vilain void moteurPap1; apparaît dans le code arduino.

Voici les 2 principaux fichiers :

https://github.com/openelearning/Blockly-at-rduino/blob/gh-pages/blocks/unipolar_stepper_motor/unipolar_stepper_motor.js

https://github.com/openelearning/Blockly-at-rduino/blob/gh-pages/generators/arduino/unipolar_stepper_motor.js

Si quelqu'un a des pistes pour que "void moteurPap1;" n'apparaisse pas, je suis preneur, merci.

Ucino

buchiprof

Bonjour et bonne année,

Je suis exactement dans la même situation : je débute dans blockly-at-rduino et je souhaite piloter le même kit moteur pas à pas.

En pur code il suffit d'utiliser les exemples dans l'EDI arduino et ça marche avec ce kit.

Dans blockly-at-rduino, il n'y a qu'une partie de la fonction stepper (à partir de la catégorie "arduino pour confirmés" --> moteurs pas à pas) : on ne peut créer qu'une instance de moteur pas à pas avec deux broches car il manque l'instance moteur 4 broches (voir référence : https://www.arduino.cc/en/Reference/StepperConstructor )

De plus ce bloc ne semble même pas fonctionnel puisqu'en mettant les numéro de broches, le code généré ne donne que des valeurs "null".

Pour terminer, il apparait dans le code arduino une ligne dont j'ignore l'utilité : int moteur_PaP[2] = {null, null,null, null}

Bref c'est pas très fonctionnel tout ça  ???

Depuis une semaine maintenant j'essaie de re-créer ce fameux bloc "stepper 4 broches"...on va voir ce que ça donne...

Courage,
BuchiProf

SebCanet

Bien le bonjour et bonne année !
Qui démarre sur les chapeaux de roue  :D
J'ai réglé les pb de moteurs pas à pas, rapido :
- système existant : le bloc de définition n'est pas intégré donc logique différente, plus visible, plus proche d'une déclaration de câblage à part ; mauvaise définition dans le générateur Arduino, un changement de forme de blocs (entrée interne en entrée externe) qui change la syntaxe à utiliser.
- UNL2003 : sympa l'image ; il manquait la déclaration correcte des instances, j'ai fait un simple copier-coller du bloc existant pour réutiliser la mécanique existante.

Merci de tester !

ucino

Bonjour et meilleurs vœux à vous 2 :)

Merci beaucoup Seb pour ces corrections et intégrations. BuchiProf on a planché en même temps sur la même chose :)

Impeccable pour le moteur pas à pas existant, maintenant donc les pins sont bien pris en compte. Je ne peux pas aller plus dans les tests matériels car je n'ai pas de moteur pas à pas bipolaire, seul à pouvoir fonctionner avec 2 pins de config si j'ai bien compris.

Pour le nouveau moteur :
* Merci de l'avoir ajouté :)
* Bien joué pour qu'il n'y ait plus le void qui apparaisse, je vais regarder en détail pour mieux comprendre.

Les 4 prochains objectifs sur lesquels je vais essayer de m'atteler :
- comme BuchiProf, faire qu'il soit possible d'utiliser 2 moteurs pas à pas en même temps (piste 1 : créer 2 blocs un avec par défaut moteurG, l'autre moteur D - piste 2 : utiliser un seul bloc que l'on peut mettre plusieurs fois, et changer sa variable sans que cela bug comme c'est le cas actuellement) ;
- mettre les traductions dans fr.js ;
- tester avec les enfants pour voir si d'autres méthodes - améliorations seraient  plus pertinentes (ex. l'enfant renseigne des tours au lieu du nombre de pas) ;
- faire des tests avec différentes valeurs pour voir celles qui marchent le mieux avec ce modèle de moteur (ex. dans le bloc de config,  4096 ou 2048 en nombre de tours par révolution fonctionnent toutes deux, laquelle est la plus intéressante)

buchiprof

Hello,

Super boulot !!! ça fonctionne ...presque : Le code arduino est généré lorsque les blocs "avancer" et/ou "régler la vitesse" sont connectés au dessus du bloc de configuration mais pas de code si ces deux blocs se retrouvent en-bas du bloc configuration...bizarre.

Dernière remarque, le lien d'aide pour les trois blocs renvient à la même page alors que, à mon avis, l'aide du bloc "avancer" devrait renvoyer vers https://www.arduino.cc/en/Reference/StepperStep  et l'aide du bloc "vitesse" devrait renvoyer vers https://www.arduino.cc/en/Reference/StepperSetSpeed


ucino

Salut,

Merci pour ton retour, bien vu pour les liens.

Pour le bloc de config je me demande ce qu'il faudrait mieux mettre, que penses-tu qu'on ne puisse l'emboiter ni par en haut, ni par en bas ? Je ne sais pas trop, on dirait que pour les blocs de configs on retrouve un peu des deux dans blockly at arduino.

SebCanet

Citation de: ucino le Janvier 02, 2019, 12:51:46 pm
- comme BuchiProf, faire qu'il soit possible d'utiliser 2 moteurs pas à pas en même temps (piste 1 : créer 2 blocs un avec par défaut moteurG, l'autre moteur D - piste 2 : utiliser un seul bloc que l'on peut mettre plusieurs fois, et changer sa variable sans que cela bug comme c'est le cas actuellement) ;


Le pb vient du champ des définitions et/ou du setup qui ne doivent pas être fixes (ex : 'stepper') mais différent quand on veut les ajouter (ex : 'stepper_' + num_pin).

Citation de: ucino le Janvier 02, 2019, 12:51:46 pm
- mettre les traductions dans fr.js ;


Mais aussi dans en.js et de.js.... ;)

Citation de: ucino le Janvier 02, 2019, 12:51:46 pm
- tester avec les enfants pour voir si d'autres méthodes - améliorations seraient  plus pertinentes (ex. l'enfant renseigne des tours au lieu du nombre de pas) ;
- faire des tests avec différentes valeurs pour voir celles qui marchent le mieux avec ce modèle de moteur (ex. dans le bloc de config,  4096 ou 2048 en nombre de tours par révolution fonctionnent toutes deux, laquelle est la plus intéressante)


Cool ! Des tests avec des enfants et remanier l'ergonomie, voilà ce qui manque ! Toute remarque ets la bienvenue.

Citation de: ucino le Janvier 08, 2019, 01:20:22 am
Pour le bloc de config je me demande ce qu'il faudrait mieux mettre, que penses-tu qu'on ne puisse l'emboiter ni par en haut, ni par en bas ? Je ne sais pas trop, on dirait que pour les blocs de configs on retrouve un peu des deux dans blockly at arduino.


Pour les URL c'est réglé mais pour l'ergonomie c'est un vrai problème...sachant qu'on peut faire les deux en les mettant dans des toolbox de niveaux différents et pas seulement dans 'TOUT'.

ucino

Citation de: SebCanet le Janvier 08, 2019, 03:10:25 pm
Le pb vient du champ des définitions et/ou du setup qui ne doivent pas être fixes (ex : 'stepper') mais différent quand on veut les ajouter (ex : 'stepper_' + num_pin).

Merci j'essaierai de l'appliquer.

Citation de: SebCanet le Janvier 08, 2019, 03:10:25 pm
Mais aussi dans en.js et de.js.... ;)

oula  ::)


Citation de: SebCanet le Janvier 08, 2019, 03:10:25 pm
Cool ! Des tests avec des enfants et remanier l'ergonomie, voilà ce qui manque ! Toute remarque ets la bienvenue.

ok impec.

Citation de: ucino le Janvier 08, 2019, 01:20:22 am
Pour le bloc de config je me demande ce qu'il faudrait mieux mettre, que penses-tu qu'on ne puisse l'emboiter ni par en haut, ni par en bas ? Je ne sais pas trop, on dirait que pour les blocs de configs on retrouve un peu des deux dans blockly at arduino.


Citation de: SebCanet le Janvier 08, 2019, 03:10:25 pm
Pour les URL c'est réglé mais pour l'ergonomie c'est un vrai problème...sachant qu'on peut faire les deux en les mettant dans des toolbox de niveaux différents et pas seulement dans 'TOUT'.

Merci pour ton retour. Du coup, quand toi tu prépares des blocs de configs tu privilégies quand l'un ou l'autre ? Pas d'emboitement par en haut et par en bas pour les niveaux débutant ? [edit : je pense avoir compris un peu mieux les enjeux : mieux vaut pouvoir les emboîter, comme ça on peut avoir une série de bloc emboîtés de déclarations > je conserve donc l'emboitement du haut et du bas]

Je mets à jour ma todo list :)

1 [presque ok - workaround] - comprendre comment répercuter les modifs du dépôt de Seb sur mon fork github [edit :  après avoir tenté https://www.christopheducamp.com/2013/12/16/forker-un-repo-github/ et https://help.github.com/articles/syncing-a-fork/ puis https://gist.github.com/vladimirtsyupko/10964772 je n'y suis pas arrivé. J'ai du coup fait le barbare : supprimé mon fork et en ait recréé un nouveau]
2 - [presque ok] faire qu'il soit possible d'utiliser 2 moteurs pas à pas en même temps en jouant sur  le champ des définitions et/ou du setup qui ne doivent pas être fixes (ex : 'stepper') mais différent quand on veut les ajouter (ex : 'stepper_' + num_pin).; [edit cf. https://github.com/openelearning/Blockly-at-rduino/commit/22f7f01eaa38677a8a3f52bb780cbcdbbb862448 : on peut maintenant ajouter 2 config du moteur pas à pas, mais si on les emboîte le dernier disparaît du code arduino. Le code attach servo de la catégorie servo ne présente pas ce problème, mais en regardant son code je ne suis pas arrivé à avoir le même comportement : faire que l'on puisse emboîter les blocs sans que cela fasse disparaître du code arduino une des 2 déclarations]
3 - faire des tests avec différentes valeurs pour voir celles qui marchent le mieux avec ce modèle de moteur (ex. dans le bloc de config,  4096 ou 2048 en nombre de tours par révolution fonctionnent toutes deux, laquelle est la plus intéressante) ;
4 - ajouter un bloc où l'enfant renseigne un numéro de tour ;
5- tester avec les enfants pour voir si d'autres méthodes - améliorations seraient  plus pertinentes ;
6 - mettre les traductions dans fr.js ;
7 - mettre les traductions dans en.js.

Bzhtitude

Salut,

Voici une proposition pour des blocs concernant les moteurs PAP :
On peut mettre plusieurs moteurs en spécifiant les broches utilisées.
Je n'ai fait le bloc de configuration que pour une connexion 4 fils, mais on peut "facilement" créer un deuxième bloc à partir de celui ci pour une connexion 2 fils.

Pour l'accrochage, je ne me pose jamais la question. A mon avis si le bloc ne renvoie rien, on doit pouvoir l'attacher en haut et en bas.


ucino

Super, bien joué, merci !

1) Est-ce qu'il serait possible d'accéder au code ?

2) Est-ce que tu pourrais me dire comment tu as procédé : Tu as utilisé le tuto http://www.libreduc.cc/wiki/doku.php/fr/arduino/blockly_rduino/creerblocsmultiling , ou tu es parti d'un bloc existant .js (si oui lequel), ou tu as utilisé l'usine à code (icône bleu d'usine en bas à gauche de https://technologiescollege.github.io/Blockly-at-rduino/ ou une autre méthode ?

Merci

Bzhtitude

Le code est dispo dans le PDF page 2.

Pour la fabrication, je procède souvent de la façon suivante :
1. Écrire le code en Arduino "pur"
2. Valider, simuler, tester
3. Repérer les "variables" , ce que doit renseigner l'utilisateur.
4. Ecrire; le bloc, le texte, le toolbox, et le generator,
5. Tester , affiner
6. Go

Je pars souvent d'un bloc existant (n'importe lequel du moment que les entrées nécessaires ressemblent à ce que je souhaite), qui sert de squelette, le reste vient avec l'habitude. L'usine à code est intéressant, mais je ne m'en sers plus.



ucino

Merci beaucoup pour le code, je vais le regarder attentivement, et ton explication vis à vis de la démarche.


ucino

Ahaaaa en regardant bien ton code, j'ai vu qu'il manquait au mien dans le generator lié au block de config:

return '';

Du coup avec ça ça a l'air de fonctionner...

Ton code va aussi beaucoup m'aider pour mettre en œuvre la traduction.

Milles merci pour ta précieuse aide !

SebCanet

Du coup il y a une nouvelle version des blocs pour moteur pas à pas à intégrer ?
Et pour l'ergonomie vous voyez ça comment ?

ucino

Je vais essayer de t'envoyer ce soir la correction, en mettant à jour le tuto sur github.
J'essaie ensuite d'ajouter un bloc plus facile pour les plus petits (nombre de tours de roue au lieu de nombre de pas) et enfin les enfants vont pouvoir tester.