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