mon servo Hiwonder LDX-227 ne fonctionne pas !

mais j’espère que mon cerveau fonctionne...
Quelqu’un as-il déjà utilisé ces servos, les exemples de la librairie servo standard ne fonctionnent pas...

Une idée ?

Merci d'avance,
Jacques

Bonsoir Jacques
NB : je ne connais pas ton servo ,
Tu n'a strictement aucune reaction du servo ?

Il semble assez gourmand en energie
tu l'alimente avec quoi ?
il a une course possible sur 270°
les 2 exemples de la lib servo utilisent l'instruction servo.write pour positionner le servo , mais c'est pour faire du positionnement entr 0 et 180°

Il est fort probable que dans ton cas il faille utiliser l'instruction servo.writeMicroseconds pour gerer correctement l'amplitude 0/270°

Bonsoir Artouste,
ça faisait longtemps qu'on avait pas échangé, j’espère que tu vas bien.
Le servo est alimenté en 7v avec une alim surdimensionnée en terme d'intensité donc pas de souci de ce côté là je crois.
Le servo vibre mais ne fait pas de réel mouvement. Il y a deux modèles, un avec un débatement de 270°,
un autre 180°, les deux ont le même comportement...
On a aussi testé un code sans lib :

uint8_t servo1=9;

void setup() {


  pinMode (servo1,OUTPUT);

}

void loop() {

  for(int i=500 ;i<=2500;i=i+5)
  { 
  digitalWrite(servo1,HIGH);
  delayMicroseconds(i);
  digitalWrite(servo1,LOW);
  delayMicroseconds(2500-i);
  }
  delay(15);
}

Pareil !

bouault:
Bonsoir Artouste,
ça faisait longtemps qu'on avait pas échangé, j’espère que tu vas bien.
Le servo est alimenté en 7v avec une alim surdimensionnée en terme d'intensité donc pas de souci de ce côté là je crois.
Le servo vibre mais ne fait pas de réel mouvement. Il y a deux modèles, un avec un débatement de 270°,
un autre 180°, les deux ont le même comportement...

Bonjour Jacques
hé oui , le temps passe vite à son rythme :grin:

ok pour l'alim

juste pour une verif rapide

test ce code dérivé de l'exemple sweep

servo 180° ou 270° peu importe
tu devrais obtenir du "plus franc" et soutenu en positionnement entre les positions extremes

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 10) { // goes from 0 degrees to  degrees max
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(300);                       // waits  for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 10) { // goes from max degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(300);                       // waits  for the servo to reach the position
  }
}

bouault:
Le servo vibre mais ne fait pas de réel mouvement.

Bonjour,

Dans ton programme la période du signal est de 2.5 ms au lieu de 20 ms généralement utilisée pour les servos. Ne serait ce pas la cause du problème?
Essayes avec une période de 20 ms

void loop() {
  for (int i = 500 ; i <= 2500; i = i + 5)
  {
    digitalWrite(servo1, HIGH);
    delayMicroseconds(i);
    digitalWrite(servo1, LOW);
    delayMicroseconds(20000 - i);
  }
}

Kamill :en effet c'est une erreur !
On corrige et on essaie cet après midi. Ainsi que le code d'Artouste.

Bon désolé, j'ai tardé à répondre...
Pour conclure : Les servos Hiwonder LDX227 ne doivent pas être pilotés avec la commande myservo.write(pos); , mais avec servo.writeMicroseconds(uS) , avec 500<=uS<=2500.
Avec la commande myservo.write(pos); , ces valeus sont comprises entre 1000 et 2000.
Merci pour votre aide.
Jacques

bouault:
Bon désolé, j'ai tardé à répondre...
Pour conclure : Les servos Hiwonder LDX227 ne doivent pas être pilotés avec la commande myservo.write(pos); , mais avec servo.writeMicroseconds(uS) , avec 500<=uS<=2500.
Avec la commande myservo.write(pos); , ces valeus sont comprises entre 1000 et 2000.
Merci pour votre aide.
Jacques

Bonjour Jacques
Comme je l'avais "subodoré" :grin: à ma réponse en #2
la solution avec la lib servo standard viens souvent dés que l'on sort du basique 0/180° de passer par du

servo.writeMicroseconds(uS)

çà permet déjà une "finesse" plus importante dans le positionnement

Par curiosité (saine) 8) parfaitement assumée , je suppose que tu motorise de l'éclairage avec ton servo ?

Non c'est pour des trappes à fumée !
C'est pour un projet avec l'artiste Guillaume Cousin qui fait des installations avec de la fumée.