Go Down

Topic: Romeo et servomoteur (Read 1 time) previous topic - next topic

phildream

Bonjour, je commence avec arduino et quand j'utilise le code suivant, le servo se déplace par saccade. C'est un servo standart.
merci, phil...

// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.


#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

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 += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
  {                               
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

phildream


// Sweep
// by BARRAGAN <http://barraganstudio.com>

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 1;    // 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 < 255; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(10);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 255; pos > 1; pos-=1)     // goes from 180 degrees to 0 degrees
  {                               
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(10);                       // waits 15ms for the servo to reach the position
  }
}

phildream

c'était ma petite correction pour la romeo...

phildream

Suite au second code, j'ai remis le premier et ça marche...<pourquoi, au bout de 15 jours de recherche et d'essai? Si vous savez merci de me répondre...

karistouf


phildream

Bonne question, je regarde, merci...

Teiva

Bonjour,
Ton délais 10 ou 15ms est trop court, il faut au moins 20ms pour rafraichir un servo.
Un delais de 50 ms est plus approprié.
un step de 1° n'ai pas forcément visible sur un servo, certains vont "décoller" qu'après 2 à 5° et c'est pas forcément linéaire.
Cela change aussi suivant l'alimentation, sur une roméo tu as un connecteur dédié pour les servos, tu peux leurs donner du 5V ou 6v et aussi avec une bonne réserve d'intensité (ne pas oublier que les servos sont fait pour le modélisme et en modélisme on utilise des batteries qui peuvent "cracher" jusqu'à une centaine d'ampères ;o)

A+ Teiva


www.Zartronic.fr : Arduino & Robotique

phildream

Merci pour les info, mise a jour java ok karistouf.
Merci Teiva, je vais tester tout ça....

Go Up