Sorry, you must be logged in to use the shoutbox!

Auteur Sujet: Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A  (Lu 146 fois)

ucino

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
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
« Dernière modification: janvier 01, 2019, 09:58:47 pm par ucino »

buchiprof

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A
« Réponse #1 le: janvier 02, 2019, 09:25:23 am »
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

  • Administrator
  • Sr. Member
  • *****
  • Messages: 487
    • Voir le profil
Re : Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A
« Réponse #2 le: janvier 02, 2019, 11:29:02 am »
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

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A
« Réponse #3 le: janvier 02, 2019, 12:51:46 pm »
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

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A
« Réponse #4 le: janvier 02, 2019, 02:36:32 pm »
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

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Blocs pour utiliser un moteur pas à pas 28BYJ-48 avec un driver UNL2003A
« Réponse #5 le: janvier 08, 2019, 01:20:22 am »
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

  • Administrator
  • Sr. Member
  • *****
  • Messages: 487
    • Voir le profil
- 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).

- mettre les traductions dans fr.js ;

Mais aussi dans en.js et de.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)

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

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

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
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.

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


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

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'.
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.
« Dernière modification: janvier 12, 2019, 01:56:05 am par ucino »