Bonjour à tous,
Je souhaite réaliser un robot autonome. J'ai une formation électronique mais je galère un peu en programmation
Sur mon robot je souhaite mettre un capteur ultrason (HC-SR04) monté sur un servomoteur (Tower Pro SG90) de type radar (oscille de 20° à 160°).
J'ai déjà écrit un programme pour le capteur ultrason avec un système de LED RGB qui fonctionne bien :
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 25) { // Limite 25 cm ;
delay(10);
if (distance < 10) { // Limite 10 cm ;
digitalWrite(led,HIGH); // Led Rouge
digitalWrite(led2,HIGH);
digitalWrite(led3,LOW);
}
else {
digitalWrite(led,LOW); // Led Bleu
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
}
}
else {
digitalWrite(led,LOW); // Led White
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
}
if (distance >= 200 || distance <= 0){
Serial.println("Hors limite");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}
Et je voudrais l'améliorer avec le servomoteur, mais je n'arrive pas à combiner le capteur ultrason (détection de l'obstacle) et le servomoteur (oscillation entre 20° et 160°)
J'ai commencé mais ça ne fonctionne pas ![]()
void loop(){
long duration,distance;
int i = 20;
int augmente =1;
int automatic = 1;
while( automatic = 1){
if(augmente)i=i+5; // Si "augmente" n'est pas nul / on incrémente "pos"
if(!augmente)i=i-5; // Si "augmente" est nul / on décrémente "pos"
if(i>160)augmente =0; // si "pos" vaut plus que 160 / Augmente = 0
if(i<20)augmente =1;
servo.write(i);
delay(20);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.println(duration);
}
}
Merci d'avance pour votre aide, je ne suis encore qu'un jeune padawan ![]()













