Il faudrait donner des valeurs à Avant, Arriere ... par exemple :
void setup()
{
Avant = 1;
Arriere = 2;
TGauche = 3;
TDroite = 4;
Stop = 0;
...
}
Et peut-être que l'ajout d'un petit délai permettrait au processeur de souffler un peu :
void loop()
{
...
delay(50);
}
...
Salut ! Merci pour ce petit bout de code. Grâce a ca , cela a marcher !! J'ai mis deux moteurs cette fois et ca fonctionnait. Mais seulement pour aller tout droit / Gauche et Arrêt.
Donc il me manque la direction de droite et arrière. Cela fais 2 jours que j'essaye de trouver une erreur dans mon code , mais sans succès. Et niveaux électronique aussi.
Je vais quand meme mettre le code que j'utilise , on ne sait jamais.
#include <IRremote.h>
int action;
int IRdelay = 40 ;
unsigned long Enavant = 0x807F18E7 ;
unsigned long Tourneragauche = 0x807F827D ;
unsigned long Enarriere = 0x807F629D ;
unsigned long Tourneradroite = 0x807F926D ;
unsigned long Arret = 0x807FA25D ;
int Avant = 8;
int Arriere = 9 ;
int TGauche = 10 ;
int TDroite = 11 ;
int Stop = 12;
int RECV_PIN = A0;
IRrecv irrecv(RECV_PIN);
decode_results results;
int distance;
int motor1Pin1 = 4;
int motor1Pin2 = 5;
int motor2Pin1 = 6;
int motor2Pin2 = 7;
int enablePin = 2;
int enable2Pin = 3;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(enable2Pin, OUTPUT);
}
void startMotors()//démarre les moteurs
{
digitalWrite(enablePin, HIGH);
digitalWrite(enable2Pin, HIGH);
delay(50);
}
void stopMotors()//arrête les moteurs
{
digitalWrite(enablePin, LOW);
digitalWrite(enable2Pin, LOW);
delay(50);
}
void avancer() //le robot avancera jusqu'à nouvel ordre
{
startMotors();
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
delay(50);
}
void tournerGauche() //le robot tournera à gauche jusqu'à nouvel ordre
{
startMotors();
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
delay(50);
}
void tournerDroite()//le robot tournera à droite jusqu'à nouvel ordre
{
startMotors();
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
delay(50);
}
void reculer()//le robot reculera jusqu'à nouvel ordre
{
startMotors();
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
delay(50);
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume();
}
if(results.value == Enavant)
{
action = Avant ;
}
else if(results.value == Tourneragauche)
{
action = TGauche ;
}
else if(results.value == Tourneradroite)
{
action = TDroite ;
}
else if(results.value == Arriere)
{
action = Arriere ;
}
else if(results.value == Arret)
{
action = Stop ;
}
{
}
effectueraction(action);
}
void effectueraction(int act)
{
if (act == Avant)
{
avancer();
}
else if ( act == TGauche)
{
tournerGauche();
}
else if ( act == TDroite )
{
tournerDroite();
}
else if ( act == Arriere)
{
reculer();
}
else if ( act == Stop)
{
stopMotors();
}
}
Merci en tout cas !!