Bonjour,
Nous sommes en 1èreS et nous sommes un groupe de 4 pour les TPE.
Nous construisons une voiture qui suit une ligne.
Nous avons déjà réaliser le moteur faisant tourner les roues à l'arrière et le servo moteur faisant diriger les roues à l'avant de notre voiture.
Nous avons 3 capteurs positionnés à l'avant utilisés pour capter la ligne et faire ainsi tourner la voiture en fonction de la ligne dessinée sur le sol.
Nous avons le code arduino pour le moteur qui fonctionne.
Nous avons essayé d'assembler le code du moteur avec le code du servo et des capteurs, ce qui donne :
#include <Servo.h> #define PIRD 2 #define PIRM 3 #define PIRG 4 #define MOTEUR 8
int val = 0;
int pirState = LOW;
int servoPin = 9;
Quand on effectue tous les branchements, rien ne fonctionne, pourriez-vous nous aider ?
Nous devons le rendre la semaine prochaine donc nous avons besoin d'aide au plus vite.
Merci d'avance
quels sont ces capteurs qui vous renvoient 1 ou 0 s'il sont ou non sur la ligne?
_dans votre code vous utilisez le meme flag "pirState" pour toutes les manip...
_il faudrait probablement pirState_M, pirState_D, pirState_G.
_le véhicule tourne, il n’arrête jamais de tourner.
_et la position milieu du servo pour aller tout droit.
_quand vous tournez, c'est du tout ou rien de 0 à 45°..........
_mettez des commentaires comme ceux ci
#include <Servo.h>
#define PIRD 2
#define PIRM 3
#define PIRG 4
#define MOTEUR 8
int val = 0;
int pirState_M = LOW;
int pirState_D = LOW;
int pirState_G = LOW;
int servoPin = 9;
Servo servo;
int pos = 0;
void setup()
{
servo.attach(servoPin);
pinMode(MOTEUR, OUTPUT);
pinMode(PIRD, INPUT);
pinMode(PIRM, INPUT);
pinMode(PIRG, INPUT);
Serial.begin(9600);
}
void loop()
{//si pas d'obstacle, mise en marche du moteur
Serial.println(digitalRead(PIRM));
val = digitalRead(PIRM);
if(val == LOW)
{
if(pirState_M == LOW)
{
digitalWrite(MOTEUR, HIGH);
pirState_M = HIGH;
}
}
{//si le moteur est en marche, on regarde à droite
Serial.println(digitalRead(PIRM));
val = digitalRead(PIRM);
if(val == HIGH);//s'il y a un obstacle devant
Serial.println(digitalRead(PIRD));
val = digitalRead(PIRD);//on regarde à droite
if(val == HIGH) //s'il y a un obstacle à droite
if(pirState_G == LOW) //si on ne tournait pas déjà à gauche
{
digitalWrite(MOTEUR, HIGH); //moteur en marche
for (pos = 0; pos <= 45; pos += 1)//on tourne à gauche
servo.write(pos);
delay(15);
pirState_G = HIGH;
}
}
{//si le moteur est en marche, on regarde à gauche
Serial.println(digitalRead(PIRM));
val = digitalRead(PIRM);
if(val == HIGH);//s'il y a un obstacle devant
Serial.println(digitalRead(PIRG));
val = digitalRead(PIRG);//on regarde à gauche
if(val == HIGH)//s'il y a un obstacle à gauche
if(pirState_D == LOW) //si on ne tournait pas déjà à droitee
{
digitalWrite(MOTEUR, HIGH);//moteur en marche
for (pos = 45; pos >= 0; pos -= 1) //on tourne à droite
{
servo.write(pos);
delay(15);
}
pirState_D = HIGH;
}
}
}