Problème sur le code pour contrôler un servomoteur depuis un clavier

Bonjour,

je me remets doucement à l’arduino et actuellement je souhaite faire bouger un servomoteur depuis le clavier.

Je m’explique: Par défaut, le servo est à la position 0 et quand j’appuie sur la touche “d”, il tourne d’un degré mais en fait il tourne entièrement donc qu’est ce que je dois changer?

#include <Servo.h>

Servo myservo; // create servo object to control a servo
int cc=0;
int angle=0;
 
void setup() {
  
  Serial.begin(9600);
  myservo.attach(9); // attaches the servo on pin 9 to the servo object
  
}
 
void loop() {
  
  if (Serial.available()>0){

      angle = Serial.read(); 
      
      if (angle=='d'){
        
        cc=cc+1;        
        myservo.write(cc);
        Serial.flush();  
    }
      
                            }
}

merci

essaye ça pour voir mais je garanti rien:

#include <Servo.h>

Servo myservo;
int cc = 0;
 
void setup() {
  Serial.begin(9600);
  myservo.attach(9);
}
 
void loop() {
  if (Serial.available() > 0){
      if(Serial.read() == 'd'){
        (cc > 180) ? cc = 0 : cc++;
        myservo.write(cc);
    }   
  }
}

merci pour la réponse,

non ca ne marche toujours pas comme je veux. il ne passe pas de 0 à 1° il fait 0 à 180° d'un coup

XpBot:
merci pour la réponse,

non ca ne marche toujours pas comme je veux. il ne passe pas de 0 à 1° il fait 0 à 180° d’un coup

humm bizarre, c’est un quoi comme servo ?

Hitec HS-50

j’ai remodifié un peu le code pour avoir une rotation de 180° quand j’appuie sur une touche et je reviens à 0° quand j’appuie sur une autre mais le if pour la touche “e” ne fonctionne pas …

#include <Servo.h>

Servo myservo;
int cc = 0;
 
void setup() {
  Serial.begin(9600);
  myservo.attach(9);
  myservo.writeMicroseconds(0);
}
 
void loop() {
  if (Serial.available() > 0){
      if(Serial.read() == 'd'){
          myservo.write(4000);}   
      if(Serial.read() == 'e'){
          myservo.write(0);} 
  }
}

Essaye l'exemple sweep voir si ton servo répond correctement : http://www.arduino.cc/en/Tutorial/Sweep

oui mon servo fonctionne avec ce code, je vais me baser sur celui la pour la suite.

Je viens de tester mon code avec un futuba S3003 il marche niquel ! je sais d'ou peut venir ton probléme (alimentation ? Durée d'impulsion ?).

le HS-50 c'est pas un servo numérique ? Le S3003 c'est de l'analogique c'est sur mais le HS-50 ?

C'est juste un souvenir de mon passé de modeliste, je me rappel qu'il y avait des servos numériques et des servos analogiques :grin:

chicotore: le HS-50 c'est pas un servo numérique ? Le S3003 c'est de l'analogique c'est sur mais le HS-50 ?

C'est juste un souvenir de mon passé de modeliste, je me rappel qu'il y avait des servos numériques et des servos analogiques :grin:

hu! j'y avais pas pensé ! Mais je crois bien que le hitec HS-50 est un analogique. http://www.servodatabase.com/servo/hitec/hs-50