Posté 11 mars 2011 - 06:54
Salut avec un programme celui la
#include
#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3
#define SERVOG 1
#define SERVOD 0
#define VMAX 5
Servo servog;
int getNeutral(int s)
{
if(s == SERVOG)
return 60; // valeur que je modifie a 60 il s'arrete 50: sens de l'aiguille d'une montre 70 sens contraire.
}
void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);
int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];
if(s == SERVOG)
servog.write(pos += acc);
}
void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}
void setup()
{
servog.attach(10);
move(AVANT);
}
void loop()
{
delay(15);
}
[/code]
j'ai réussi a trouver la valeur de mon neutre en modifiant return 60>50>70
donc environ 60 pour mes deux servomoteur.En faite je souhaite faire un roby avec un capteur infrarouge uniquement mai je bloque pour le code.
Pour l'instant je m'entraine a faire fonctionner mes deux servomoteur dans le meme sens mai sans resulta je suis impeu perdu voici le code
#include
#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3
#define SERVOG 1
#define SERVOD 0
#define VMAX 5
Servo servog;
Servo servod;
int getNeutral(int s)
{
if(s == SERVOG)
return 65;
else
return 65;
}
void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);
int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];
if(s == SERVOG)
servog.write(pos += acc);
else
servod.write(pos -= acc);
}
void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}
void setup()
{
servog.attach(10);
servod.attach(9);
move(AVANT);
}
void loop()
{
delay(15);
}
[/code] j'ai que un des deux servomoteur qui tourne ^^
Je rappel que j'ai découvert la robotique il y a que 2 mois j'ai besoin de votre aide merci.