Mon robot autonome "evolubot" est actuellement bloqué au niveau du code,
je m'explique:
Je voudrais que mon robot,quand il detecte un obstacle,doit tourner,mais,
j'ai beau essayer et reesayer plusiuer code deuis une semaine,
il m'est impossible de reussir a arreter un moteur quand mon capteur detecte un "mur".
S'il vous plait pourriez vous m'aidez avec mon code?
#include <Servo.h> // Pin de controle du module HC-SR04 Servo myservoR; // servo droit Servo myservoL; // servo gauche const int trigPin = 3; const int echoPin = 2; // Pin pour la LED verte const int greenLEDPin = 10; // Pin pour la LED rouge const int redLEDPin = 12; // Pin pour le buzzer const int buzzerPin = 7; // Distance minimale correcte const int min_dist = 200; // Distance pour declancher l alerte const int alerte_dist = 100; // Variable pour la distance calculee long distance; // Fonction pour le parametrage void setup() { myservoR.attach(5); myservoL.attach(6); // Initialisation des broches pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(greenLEDPin, OUTPUT); pinMode(redLEDPin, OUTPUT); pinMode(buzzerPin,OUTPUT); // Definition de la vitesse de transmission pour la console Serial.begin(9600); } // Fonction de boucle void loop() { // Duree du signal emis par la sonde. Il y a un aller et un retour int duree; // Activation de la sonde digitalWrite(trigPin, HIGH); // Attente delayMicroseconds(1000); // Desactivation de la sonde digitalWrite(trigPin, LOW); // Demande de la duree a la sonde duree = pulseIn(echoPin, HIGH); // Calcul en centimetre (division par 2 pour un aller simple puis par 29 la distance parcourue par micro seconde) distance = duree/58; if (distance >= min_dist || distance <= 0) { Serial.print(distance); Serial.println(" hors limite"); } else { Serial.println(distance); if(distance >0 && distance < alerte_dist) { blink(distance, redLEDPin, true); } else if(distance >= alerte_dist) { blink(distance, greenLEDPin, false); } if (20 <= distance) { myservoL.writeMicroseconds(1000); myservoR.writeMicroseconds(100); delay(100); myservoR.writeMicroseconds(1000); myservoL.writeMicroseconds(1000); } } } // Fonction pour faire clignoter une LED en fonction de la distance detectee // Le buzzer peut etre active void blink(int pause, int ledPin, int buzzer) { pause = distance * 10; digitalWrite(ledPin, HIGH); if (buzzer) digitalWrite(buzzerPin,HIGH); delay(10); digitalWrite(ledPin, LOW); if (buzzer) digitalWrite(buzzerPin,LOW); delay(pause); }Merci d'avance,
Rbot99