Je suis étudiant et avec des camarades de classe on à crée une voiture en arduino.
Nous utilisons une carte mega sur laquelle nous avons trois capteurs ultrason pour la détection d'obstacle et un capteur infrarouge pour la détection de chute.
Nous arrivons à faire fonctionner la détection d'obstacle ou la détection de chute, mais quand nous mettons à la fois les capteurs ultrason pour les obstacle et ir pour la chut la détection de chute se fait plus tard et donc la voiture tombe.
voici notre code sur la partie demi-tour pouvez vous nous aidés ? à résoudre notre problème
//Bibliothèques
#include <AFMotor.h>
#include <SharpIR.h> // Capteur IR
//Définir les capteurs Ultrason Avant
//Droite
#define trig_AVD 23
#define echo_AVD 22
//Milieu
#define trig_AVM 25
#define echo_AVM 24
//Gauche
#define trig_AVG 27
#define echo_AVG 26
//Définir capteurs IR
//Avant
SharpIR SharpIR(SharpIR::GP2Y0A41SK0F, A7);
//Définir les variables des Capteurs Ultrasons
long lecture_dureeU_AVD, lecture_distanceU_AVD;
long lecture_dureeU_AVM, lecture_distanceU_AVM;
long lecture_dureeU_AVG, lecture_distanceU_AVG;
//Déclaration des moteur
AF_DCMotor moteur1(1);//avant Droite
AF_DCMotor moteur2(2);//avant Gauche
AF_DCMotor moteur3(3);//arrière Gauche
AF_DCMotor moteur4(4);//arrière Droite
void setup(){
//Debut de communication
Serial.begin(9600);
Serial.println("Teste Communication");
//Défini le trig en sortie (emet) et le echo en entrée (reçoit)
pinMode(trig_AVD, OUTPUT);
pinMode(echo_AVD, INPUT);
pinMode(trig_AVM, OUTPUT);
pinMode(echo_AVM, INPUT);
pinMode(trig_AVG, OUTPUT);
pinMode(echo_AVG, INPUT);
}
void loop(){
//définir la vitesse des moteurs au max (0 - 255)
moteur1.setSpeed(200);
moteur2.setSpeed(200);
moteur3.setSpeed(200);
moteur4.setSpeed(200);
//Variables Capteurs Infrarouges
int lecture_distanceIR = SharpIR.getDistance();
Serial.print("Distance du capteur Infrarouge en cm : ");
Serial.println(lecture_distanceIR);
//Scan de la distance
//Capteur ultrason avant droit
digitalWrite(trig_AVD, LOW);
delayMicroseconds(2); // un délais est nécéssaire pour recevoir une bonne opération.
digitalWrite(trig_AVD, HIGH);
delayMicroseconds(10);// ce délai est également requis!
if ((lecture_distanceU_AVM>0 && lecture_distanceU_AVM<40)|| (lecture_distanceU_AVG>0 && lecture_distanceU_AVG<40)){ //cette condistion va définir une distance entre 0 à 30 cm la voiture devra faire demitour
Serial.println("Obstacle detecté à moins de 30cm");
Serial.print("Mesure capteur milieu: ");
Serial.print(lecture_distanceU_AVM);
Serial.print("Mesure capteur gauche: ");
Serial.print(lecture_distanceU_AVG);
Serial.print("cm");
Serial.print("La voiture fait demi-tour");
moteur1.run(BACKWARD);
moteur2.run(FORWARD);
moteur3.run(FORWARD);
moteur4.run(BACKWARD);
delay(850);
}
else if (lecture_distanceU_AVD>0 && lecture_distanceU_AVD<40){ //cette condistion va définir une distance entre 0 à 30 cm la voiture devra faire demitour
Serial.println("Obstacle detecté à moins de 30cm");
Serial.print("La voiture se situe à : ");
Serial.print(lecture_distanceU_AVD);
Serial.print("cm");
Serial.print("La voiture fait demi-tour");
moteur1.run(FORWARD);
moteur2.run(BACKWARD);
moteur3.run(BACKWARD);
moteur4.run(FORWARD);
delay(850);
}
//Demi-tour IR détection de chute
if (lecture_distanceIR > 20){
Serial.println("Vide detecté");
Serial.print("En effet, la voiture mesure un vide de : ");
Met le code dans la balise de code stp, la c'est impossible à lire
- Edité par Antoinnneee 18 janvier 2019 à 22:06:55
Problème capteur ultrason et capteur IR arduino
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.