Go Down

Topic: Programme Servo 360 (Read 1 time) previous topic - next topic

frizz

Bonjour,

je commence sur arduino,
j'ai récemment acheté un servo 360 rotation continue (Spring RC SM-S4303R Grand Rotation Continue de 360° Plastique Servo Robot M31D)

J'aimerai que la rotation complète du servo se fasse en 1 jour.
Est ce possible?

Code: [Select]

#include <Servo.h>

Servo myservo; 

int pos = 0; 

void setup()
{
 myservo.attach(9); 
}

void loop()
{
 for(pos = 0; pos <= 360; pos += 1)
 {                                 
  myservo.write(pos);             
   delay(86400000);                     

 }
 }


Voici le code que j'ai mis, mais il tourne en continu....

fdufnews

#1
Apr 06, 2017, 01:17 pm Last Edit: Apr 06, 2017, 01:19 pm by fdufnews
3 problèmes (dont un fatal):
  • le delay() arrête le code pendant 24 heures. Donc il bouge d'un degrés, attend 24h, bouge d'un degrés, attend 24 heures, ..... ce n'est sans doute pas ce que tu veux faire.
  • Si tu regardes la doc de delay(), tu verras que le paramètre est un unsigned long. par défaut, les constantes sont des int. Donc actuellement la constante que tu as mise est tronquée à 16 bits et le temps doit être de l'ordre de 25 secondes. Les constantes unsigned long doivent avoir un suffixe UL.
  • et surtout, erreur fatale, le servo que tu utilises est un servo à rotation continue. Il ne tourne pas d'un angle fonction de la consigne envoyée mais il tourne en permanence à une vitesse proportionnelle à la valeur de la consigne

frizz

Merci,
Comment régler la valeur de la consigne ( a quoi correspond elle dans le code)?

frizz

Ce qui marche avec un servo futaba s3003 ne fonctionne pas avec le Spring RC SM-S4303R .Y a t'il des spécificités de code à rentrer pour ce type de servo?

fdufnews

Est-ce que tu as compris ce que j'ai écrit plus haut?
Ton Spring RC SM-S4303R n'est pas un servo ordinaire mais un servo à rotation continue. Il se comporte donc comme un moteur que tu peux faire tourner plus ou moins vite dans un sens ou dans l'autre. Tu ne peux pas lui passer une consigne d'angle. La consigne qu'il reçoit est comprise comme une consigne de vitesse.
Sur la façon de passer la consigne, tu regardes la doc de la librairie Servo.

Artouste

Ce qui marche avec un servo futaba s3003 ne fonctionne pas avec le Spring RC SM-S4303R .Y a t'il des spécificités de code à rentrer pour ce type de servo?
Bonsoir
Comme expliqué plus haut :

Pour faire simple un signal "servo" commande
- en positionnement (angle) un servo basique  (< 360 ° )
- en vitesse de rotation un servo "360° "
references de ton servo 360 ?


bilel25


Go Up