Aller au contenu


Photo
- - - - -

Problème code Roby (Moteurs)


2 réponses à ce sujet

#1 alex54-RX

alex54-RX

    Membre

  • Membres
  • 37 messages
  • Gender:Male

Posté 05 janvier 2011 - 05:00




Bonjour,



Voilà j'ai un problème avec le code pour Roby,celui la :





#define AVANT 1

#define ARRIERE 0

#define GAUCHE 2

#define DROITE 3



#define SERVOG 1

#define SERVOD 0



#define UPDDG 3

#define UPDDD 4



#define SHARP 4



#define VMAX 5



Servo servog;

Servo servod;



int vLdr = 5;



int getNeutral(int s)

{

if(s == SERVOG)

return 86;

else

return 84;

}





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 handleUPDD(int updd)

{

if(digitalRead(updd) == HIGH)

{

move(ARRIERE);

delay(500);



if (updd == UPDDG)

{

move(DROITE);

}

else

{

move(GAUCHE);

}

delay(800);

}

}



void sharp()

{

int v = analogRead(SHARP);

if (v >= 180)

{

move(ARRIERE);

delay(300);

move(DROITE);

delay(900);

}

else if (v >= 100)

{

handleS(SERVOG, VMAX);

handleS(SERVOD, 0);

delay(1500);

}

}

void setup()

{

pinMode(UPDDG, INPUT);

pinMode(UPDDD, INPUT);



Serial.begin(9600);

servog.attach(10);

servod.attach(9);

move(AVANT);

}



void loop()

{

handleUPDD(UPDDG);

handleUPDD(UPDDD);

sharp();

move(AVANT);

delay(100);

}[/code]



quand j'allume le robot les moteurs tournent en arrière au-lieu d'aller en avant.Donc je voulais savoir si il etait possible d'inverser le sens des moteurs dans le code et si oui,qui faut il changer ?



Merci d'avance !

#2 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 05 janvier 2011 - 05:07

Je dirais qu'en mettant :
case GAUCHE: m1 = 1; m2 = -1; break;
case AVANT: m1 = -1; m2 = -1; break;
case ARRIERE: m1 = 1; m2 = 1; break; [/code]
ça devrait logiquement changer le sens des moteurs.

OU

handleS(SERVOG, -m1*VMAX);
handleS(SERVOD, -m2*VMAX); [/code]

#3 alex54-RX

alex54-RX

    Membre

  • Membres
  • 37 messages
  • Gender:Male

Posté 05 janvier 2011 - 05:31


Merci d'avoir répondu si vite. :)

C'était bien ça,ça marche. :D

Désolé pour l'orthographie,j'ai tendance a écrire vite. :s



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users