Parlons Arduino > Bibliothèques

Bibliothèque SlowMotionServo

<< < (2/9) > >>

Jean-Luc:

--- Citation de: TF53 le mai 10, 2015, 11:12:55 pm ---A quoi correspond le paramètre vitesse? est ce qu'il y a une conversion à faire entre la valeur qu'on rentre dans le paramètre et la valeur de la vitesse réelle?

--- Fin de citation ---

La position du servo est une fonction du temps. Le temps est la durée en millisecondes depuis l'instant initial où le mouvement est lancé. La vitesse est en fait un facteur multiplicatif du temps. Le temps est normalisé entre 0.0 (position initiale) et 1.0 (position finale). Par défaut la vitesse est de 1, ce qui correspond à 0,0001 de facteur multiplicatif. C'est à dire que pour atteindre un temps normalisé de 1, il faudra 10s. Dans l'exemple la vitesse est mise à 2, il faut donc 5s pour accomplir le mouvement. La position est aussi normalisée en fonction des positions min et max. la vitesse angulaire sera donc différente selon l'écart max-min.


--- Citer ---Ceci m'amène à une autre question : Ayant commencé la programmation par l'assembleur (sur PIC), je me demandais si avec le C++ on pouvait, tout comme en assembleur, compter le nombre de cycles d'horloge utilisés par instruction? Le C++ étant un language haut niveau, il me parait difficile de déduire des temps précis uniquement grace au programme. Mais peut être que je me trompe?

--- Fin de citation ---

On peut mais il faut aller voir le code assembleur généré par le compilateur. Quoiqu'il en soit, ici le temps en compté via un timer et est donc indépendant du code qui s'exécute.

Jean-Luc:

--- Citation de: railyrabbit le mai 10, 2015, 06:57:50 pm ---J'ai découvert cette semaine la librairie VarSpeedServo, avec la quelle j'ai un peu joué. C'est pratique, on peut régler la vitesse mais elle n'intègre pas de courbes à proprement parler.

--- Fin de citation ---

C'est une modification de la bibliothèque Servo originale. Effectivement le mouvement est seulement linéaire et on ne peut pas avoir une courbe de position en fonction du temps donc pas de possibilité de simuler des accélérations et décélérations, ni des rebonds.

SlowMotionServo intègre aussi un détachement automatique quand le servo a fini son mouvement avec un délai avant détachement programmable. Cela permet d'éviter qu'il ne grogne en butée contre une force de rappel, typiquement ce que l'on a sur un aiguillage.

La contrainte de SlowMotionServo est d'appeler répétitivement update dans loop.

AmadeusHF:
@Jean-Luc, petite proposition pour rendre SlodMotionServo compatible ESP32 :


--- Code: ---#include "Arduino.h"
#ifndef ESP32
#include <Servo.h>
#else
#include <ESP32Servo.h>
#endif

--- Fin du code ---

;)

Jean-Luc:
Ah Merci !  Je m’en occupe.   ;)

ethal:
Bonsoir,

Ne serait-Il pas plus judicieux de faire un IF avec les notions #define AVR... au lieu de la librairie Arduino.h

Cordialement
Jean-claude

Navigation

[0] Index des messages

[#] Page suivante

[*] Page précédente

Utiliser la version classique