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

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1654
    • 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

  • Sr. Member
  • ****
  • Messages: 492
    • 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: 1654
    • 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: 1654
    • 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

  • Sr. Member
  • ****
  • Messages: 492
    • 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: 1654
    • 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

  • Sr. Member
  • ****
  • Messages: 492
    • 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: 1654
    • 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

  • Sr. Member
  • ****
  • Messages: 492
    • 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: 1654
    • 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