Aller au contenu


Roms

Inscrit(e) (le) 06 mai 2017
Déconnecté Dernière activité juin 28 2017 10:27
-----

Sujets que j'ai initiés

Bonjour à tous

06 mai 2017 - 06:14

Bonjour à tous, 

 

Je m'appelle Romain, j'ai 36 ans, je suis pacsé et père d'un adorable loulou.

 

Mon premier projet de robot autonome sont vraiment une passion et un loisir.  

 

J'ai fais de la programmation au lycée sur un 68HC11.

 

Je viens sur ce forum car il est toujours plus sympa d'apprendre à plusieurs que tous seul dans son coin. 

 

Merci d'avance.


Robot autonome

06 mai 2017 - 05:13

Bonjour à tous, 
 
Je souhaite réaliser un robot autonome. J'ai une formation électronique mais je galère un peu en programmation  :dvgmax_01: 
 
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  :dash2:
 

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  :thank_you: