Si je viens demander ici, evidemment c'est que j'ai deja recherché et que je n'ai pas trouver de reponse a mon probleme.
Pour l'instant j'ai ce programme, les sens des moteurs etc sont pas encore forcement coherents, je cherche d'abord a voir si le robot reagi !
Cependant j'ai encore un probleme, lorsque je bouge le joystick, il reste bloqué sur une commande meme quand je le lache !
const int vitesseMotA=3; // Constante pour la broche 3
const int sensMotA=12; // Constante pour la broche 12
const int freinMotA=9; // Constante pour la broche 9
const int intensiteMotA=A0; // intensité du moteur 0
const int vitesseMotB=11; // Constante pour la broche 11
const int sensMotB=13; // Constante pour la broche 13
const int freinMotB=8; // Constante pour la broche 8
const int intensiteMotB=A1; // intensité du moteur 1
int port_v = A0; // joystick mouvement vertical
int port_h = A1; // joystick mouvement horizontal
int valeur_v = 0;
int valeur_h = 0;
int zone = 0;
void setup()
{
Serial.begin(9600);
pinMode (vitesseMotA,OUTPUT); // Broche vitesseMotA configurée en sortie
pinMode (freinMotA,OUTPUT); // Broche freinMotA configurée en sortie
pinMode (vitesseMotB,OUTPUT); // Broche vitesseMotB configurée en sortie
pinMode (sensMotA,OUTPUT); // Broche sensMotA configurée en sortie
pinMode (sensMotB,OUTPUT); // Broche senMotB configurée en sortie
digitalWrite(vitesseMotA,LOW); // a l'arret
digitalWrite(sensMotA,LOW);
digitalWrite(freinMotA,LOW); // frein off
digitalWrite(vitesseMotB,LOW); // à l'arret
digitalWrite(sensMotB,LOW);
digitalWrite(freinMotB,LOW); // frein off
}
void calcul_zone(int x, int y)
{
if (x >= 38)
{
if (y >= 23){zone = 2;}
if (y <= 36){zone = 4;}
if ((y < 36) && (y > 23)) {zone = 3;}
}
if (x <= 23)
{
if (y >= 23){zone = 8;}
if (y <= 36){zone = 6;}
if ((y < 36) && (y > 23)) {zone = 7;}
}
if ((x > 23) && (x < 38))
{
if (y >= 23){zone = 1;}
if (y <= 36){zone = 5;}
if ((y < 36) && (y > 23)) {zone = 0;}
}
}
void loop()
{
// Lit l’entrée analogique A0
valeur_v = analogRead(port_v);
// lit l’entrée analogique A1
valeur_h = analogRead(port_h);
calcul_zone(valeur_h, valeur_v);
switch (zone)
{
case 0:
Serial.println("Robot stop");
break;
case 1:
Serial.println("Robot recule");
digitalWrite(sensMotA,HIGH); // sens 1
digitalWrite(vitesseMotA, HIGH); // vitesse maximale
digitalWrite(sensMotB,HIGH); // sens 1
digitalWrite(vitesseMotB, HIGH); // vitesse maximale
break;
case 2:
Serial.println("Robot recule et tourne à droite");
digitalWrite(sensMotA,HIGH); // sens 1
digitalWrite(vitesseMotA, HIGH); // vitesse maximale
digitalWrite(sensMotB,HIGH); // sens 1
digitalWrite(vitesseMotB,LOW); // vitesse maximale
break;
case 3:
Serial.println("Robot tourne à droite toute");
digitalWrite(sensMotA,HIGH); // sens 1
digitalWrite(vitesseMotA, HIGH); // vitesse maximale
digitalWrite(sensMotB,LOW); // sens 1
digitalWrite(vitesseMotB, HIGH); // vitesse maximale
break;
case 4:
Serial.println("Robot avance et tourne à droite");
digitalWrite(sensMotA,LOW); // sens 1
digitalWrite(vitesseMotA, HIGH); // vitesse maximale
digitalWrite(sensMotB,LOW); // sens 1
digitalWrite(vitesseMotB,LOW); // vitesse maximale
break;
case 5:
Serial.println("Robot avance");
digitalWrite(sensMotA,LOW); // sens 1
digitalWrite(vitesseMotA, HIGH); // vitesse maximale
digitalWrite(sensMotB,LOW); // sens 1
digitalWrite(vitesseMotB, HIGH); // vitesse maximale
break;
case 6:
Serial.println("Robot avance et tourne à gauche");
digitalWrite(sensMotA,LOW); // sens 1
digitalWrite(vitesseMotA, LOW); // vitesse maximale
digitalWrite(sensMotB,LOW); // sens 1
digitalWrite(vitesseMotB,HIGH); // vitesse maximale
break;
case 7:
Serial.println("Robot tourne à gauche toute");
digitalWrite(sensMotA,LOW); // sens 1
digitalWrite(vitesseMotA, HIGH); // vitesse maximale
digitalWrite(sensMotB,HIGH); // sens 1
digitalWrite(vitesseMotB, HIGH); // vitesse maximale
break;
case 8:
Serial.println("Robot recule et tourne à gauche");
digitalWrite(sensMotA,HIGH); // sens 1
digitalWrite(vitesseMotA, LOW); // vitesse maximale
digitalWrite(sensMotB,HIGH); // sens 1
digitalWrite(vitesseMotB,HIGH); // vitesse maximale
break;
}
delay(100);
}
Voilà mon programme, merci.