J'ai une nouvelle fois un problème, mon but serai de faire un Roby sans les capteurs de contact mais seulement avec un capteur de distance. Dans Roby c'est un capteur infrarouge, et moi j'ai un capteur US. J'ai donc cherchais à faire le code pour que le robot évite les obstacle moi même mais la je suis bloqué.
Avec ce code les servomoteurs tournent bien et au bout de 8 seconde un des deux fait demi-tour:
#include <Servo.h>
#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 90;
else
return 90;
}
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(9);
servod.attach(10);
move(AVANT);
}
void loop()
{
move(AVANT);
delay(8000);
move(GAUCHE);
delay(2000);
}
J'ai essayer des codes pour que le robot tourne pour évité les obstacles mais je n'y arrive pas mon robot et branché comme ça est-ce bon ?
Voir pièce jointe
Mister Uno