Auteur Sujet: Bibliothèque SlowMotionServo  (Lu 75044 fois)

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #30 le: mars 04, 2022, 04:57:42 pm »
Antoine,

il y a zéro chance que le SlowMotionServo que tu utilisais il y a un an fonctionne mieux que la version actuelle.

Ceci pour la simple raison que SMS a été mis à jour la dernière fois en décembre 2018 !

Par ailleurs, structurellement, il y a zéro chance que SMS soit fautif pour la simple raison que son interaction avec le servo et les broches passent exclusivement par des appels à Servo. Sauf que ... C'est limité à des numéros de pins de 0 à 63 et que 63 est une valeur spéciale pour dire « pas connecté ». Toujours regarder avant de dire n'importe quoi :)

En revanche, il est possible que la bibliothèque Servo ait changé entretemps car la dernière version date de septembre 2021.
« Modifié: mars 04, 2022, 05:36:36 pm par Jean-Luc »
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #31 le: mars 04, 2022, 05:10:18 pm »
Très bonne remarque Jean-Luc, mais tu auras quand même noté que SMS ne fonctionne pas avec A9 alors que Servo oui, sais-tu pourquoi ?

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #32 le: mars 04, 2022, 05:10:45 pm »
Je vais regarder ce WE
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #33 le: mars 04, 2022, 05:42:06 pm »
Bon finalement j'ai regardé tout de suite.

Et c'est bien une limitation de SMS. Je code le numéro de pin sur 6 bits (de 0 à 63) et 63 est la valeur spéciale NOPIN. Or A9 = 63.

J'avais un bit de rab, J'ai donc porté les numéros de pin à 127, 127 étant la valeur spéciale NOPIN, sans augmenter l'empreinte mémoire d'un object SMS.
Donc ça marche avec A9.

Voilà, c'était bien moi le fautif  :o

La lib modifiée à télécharger ci-dessous.

Je vais faire la release 1.2.1 ce week-end
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #34 le: mars 04, 2022, 05:54:52 pm »
Merci à toi et bravo pour ta réactivité.

A moi de trouver le soucis avec Servo, je te tiendrai bien sûr au courant (DCC pas analogique  :) )

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #35 le: mars 04, 2022, 05:55:38 pm »
Il reste un soucis avec Servo ?
Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #36 le: mars 04, 2022, 06:14:39 pm »
Oui, mais c'est peut-être normal, je l'ai indiqué dans mes messages, Servo ne fonctionne que jusqu'à A9, A10 et suite ne fonctionnent pas.

Je viens de faire des essais avec, au lieu de A10, le nombre 64, mais cela ne fonctionne pas non plus alors que 63 (A9) c'est OK.

Mais ne t'embête pas avec cela, mon soucis était surtout le A9 avec SMS qui est utilisé sur une carte loin de chez moi et qui ne fonctionnait plus, c'est rentré dans l'ordre.

Par contre par curiosité, cela vaudrait le coup de comprendre pourquoi A10 à A15 ne fonctionnent pas alors que 42 par exemple fonctionne.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #37 le: mars 04, 2022, 06:29:20 pm »
Je viens de regarder et ça ne fonctionne pas pour les mêmes raisons : ils utilisent 6 bits pour coder le numéro de broche :

https://github.com/arduino-libraries/Servo/blob/aaaa944c87c4f8b2c827674f90933843a71af19d/src/Servo.h#L95

Donc de 0 à 63. C'est peut-être d'ailleurs pour ça que j'avais moi même limité à un codage sur 6 bits le numéro de broche  :)

Or A10 à A15 correspondent aux numéros 64 à 69

J'ai survolé rapidement le code et je ne vois pas d'autre limitation que ce choix arbitraire. J'ai donc modifié Servo.h et remplacé le 6 par un 7 ...
... et ça fonctionne (j'ai testé A10 et A15).

Ligne 98 :

  uint8_t nbr : 6; // a pin number from 0 to 63
devient

  uint8_t nbr : 7; // a pin number from 0 to 127

Cordialement

Tony04

  • Hero Member
  • *****
  • Messages: 569
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #38 le: mars 04, 2022, 07:19:13 pm »
Beau travail,

il ne me reste qu'à te remercier pour toutes ces recherches et te souhaiter un très bon WE

Bien cordialement
Antoine

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #39 le: mars 05, 2022, 11:57:51 am »
Merci Antoine :)

Note qu'utiliser un numéro de broche > 63 avec Servo, revient à avoir un numéro de broche modulo 64.

Par conséquent, en attachant le servo à la broche 64, tu le retrouve en fait sur la broche 0. De même, 65 -> 1, 66 -> 2, etc

Ça peut faire des trucs carrément bizarre si ton sketch utilise ces broches pour autre chose. :)
Cordialement

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : Bibliothèque SlowMotionServo
« Réponse #40 le: mars 26, 2024, 10:23:19 am »
Bonjour

J ai une suggestion d ajout à la bibliothèque SLOW SERVO MOTION.

En effet lors de la mise en place  d'un servo il peut etre intéressant que celui ci soit "centré" avant de venir de configurer ses mouvements dans un sens ou l'autre.
On ne part ainsi pas toujours de la butée d un coté ou de l'autre.
Il existe des petits boitier dans le commerce qui réalise cette opération.
A titre d exemple:
https://fr.aliexpress.com/item/1005006068916027.html?spm=a2g0o.productlist.main.63.1e513f36pLiCcm&algo_pvid=d1e57db0-71f9-464e-aa5e-e059ffb6f348&algo_exp_id=d1e57db0-71f9-464e-aa5e-e059ffb6f348-31&pdp_npi=4%40dis%21EUR%213.72%212.23%21%21%213.94%212.36%21%402103853617114448488042159e8186%2112000035582837081%21sea%21FR%21907093358%21&curPageLogUid=o6sH43QgsiNI&utparam-url=scene%3Asearch%7Cquery_from%3A

ou bien encore:
https://fr.aliexpress.com/item/1005004995645232.html?spm=a2g0o.productlist.main.67.1e513f36pLiCcm&algo_pvid=d1e57db0-71f9-464e-aa5e-e059ffb6f348&algo_exp_id=d1e57db0-71f9-464e-aa5e-e059ffb6f348-33&pdp_npi=4%40dis%21EUR%217.03%217.03%21%21%2153.92%2153.92%21%402103853617114448488042159e8186%2112000031284887558%21sea%21FR%21907093358%21&curPageLogUid=pLveJpALMQv5&utparam-url=scene%3Asearch%7Cquery_from%3A

Dans cette idée une methode de type bool  ou void setMiddle(uint8_t PIN) serait bienvenue.

On peut certes la créer de toute pièce avec une valeur de 0.5 mais en disposer nativement me semble un plus comme outils.


Laurent