Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Robot autonome de type Roomba

Robot autonome de type Roomba

De Wikidebrouillard.

(Liste du matériel)
(Code)
Ligne 24 : Ligne 24 :
===Code===
===Code===
<pre>
<pre>
-
mettre le code entre ces deux balises
+
// variable hc sr04
-
//attention à bien documenter le cod
+
const int trigPin = 6;
 +
const int echoPin =7;
 +
// variable moteur droit
 +
const int vitesseMotD=3;
 +
const int sensMotD=12;
 +
const int freinMotD=9;
 +
const int intensiteMotD = A0;
 +
// variable moteur gauche
 +
const int vitesseMotG=11;
 +
const int sensMotG=13;
 +
const int freinMotG=8;
 +
const int intensiteMotG = A1;
 +
// variable pour rotation
 +
int a=0;
 +
int sens = random(0,2);
 +
// variable temps pour analyse blocage
 +
int time2 =0;
 +
 
 +
void setup() {
 +
  Serial.begin (115200);
 +
  // initialisation HC SR04
 +
  pinMode(trigPin, OUTPUT);
 +
  pinMode(echoPin, INPUT);
 +
  // intialisation moteur droit
 +
  pinMode (vitesseMotD,OUTPUT);
 +
  pinMode (freinMotD,OUTPUT);
 +
  pinMode (sensMotD,OUTPUT);
 +
  // initialisation moteur gauche
 +
  pinMode (vitesseMotG,OUTPUT);
 +
  pinMode (freinMotG,OUTPUT);
 +
  pinMode (sensMotG,OUTPUT);
 +
  // conditions initiales : moteurs a l arret
 +
  stopMot(); 
 +
}
 +
 
 +
void loop() {
 +
  long time = millis();
 +
  Serial.print("temps ecoule :");
 +
  Serial.println(time);
 +
  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 < 20) {
 +
    //Serial.println("Mur detecte");
 +
    stopMot();
 +
    delay(100); // 5 secondes temps arbitraire
 +
    rotation();
 +
    delay(300);
 +
 
 +
}
 +
  else {
 +
   
 +
    //Serial.println("aucun mur detecte");
 +
    if (analogRead(intensiteMotD)>155 || analogRead(intensiteMotG)>155){
 +
      Serial.println("Moteur bloque!");
 +
      reculer();
 +
      delay(500);
 +
      rotation();
 +
      delay(500);
 +
    }
 +
    else if (time2>2000 && (analogRead(intensiteMotD)>130 || analogRead(intensiteMotG)>130)){
 +
        reculer();
 +
        delay(500);
 +
        rotation();
 +
        delay(500);
 +
        time2 = 0;
 +
    }
 +
    else if  (analogRead(intensiteMotD)>130 || analogRead(intensiteMotG)>130){
 +
      time2= millis();// temps pour analyse blocage
 +
    }
 +
    else {
 +
      avancer();
 +
     
 +
  }
 +
   
 +
}
 +
 +
  if (distance >= 30000 || distance <= 0){
 +
    //Serial.println("Out of range");
 +
    stopMot();
 +
  }
 +
  else {
 +
  // Serial.print("Distance: [");
 +
    //Serial.print(distance);
 +
    //Serial.println(" cm");
 +
  }
 +
  delay(200);
 +
}
 +
 
 +
 
 +
void stopMot() {
 +
  //moteur Droit
 +
  digitalWrite(vitesseMotD,LOW);
 +
  digitalWrite(sensMotD,LOW);
 +
  digitalWrite(freinMotD,LOW);
 +
  //moteur Gauche
 +
  digitalWrite(vitesseMotG,LOW);
 +
  digitalWrite(sensMotG,LOW);
 +
  digitalWrite(freinMotG,LOW);
 +
}
 +
 
 +
void avancer(){
 +
  digitalWrite(sensMotD,LOW); // sens 1
 +
  digitalWrite(sensMotG,HIGH); // sens 1
 +
  analogWrite(vitesseMotG,255); // vitesse max
 +
  analogWrite(vitesseMotD,253); // vitesse modere
 +
  // afficher l'intensite
 +
  Serial.print("intensite moteur gauche : ");
 +
  Serial.println(analogRead(intensiteMotG));
 +
  Serial.print("intensite moteur droit : ");
 +
  Serial.println(analogRead(intensiteMotD));
 +
  Serial.println("  ");
 +
}
 +
 
 +
void rotation(){
 +
  if (a%=5){
 +
    sens = random(0,2); // 2 exclus
 +
  }
 +
  //Serial.print("sens est :");
 +
  //Serial.println(sens);
 +
  a=a+1;
 +
  digitalWrite(sensMotD,sens); // sens est high(1) ou low(0)
 +
  digitalWrite(sensMotG,sens);
 +
  analogWrite(vitesseMotG,255); // vitesse max
 +
  analogWrite(vitesseMotD,255); // vitesse modere
 +
}
 +
 
 +
void reculer(){
 +
digitalWrite(sensMotD,HIGH); // sens 1
 +
  digitalWrite(sensMotG,LOW); // sens 1
 +
  analogWrite(vitesseMotG,255); // vitesse max
 +
  analogWrite(vitesseMotD,253); // vitesse modere
 +
}
-
e !
 
</pre>
</pre>

Version du 14 janvier 2014 à 11:00

Article incomplet en cours de rédaction
Modèle:Vidéo

Sommaire

Présentation du projet Arduino

Utilisation de la carte arduino uno et du shield motor afin de réaliser un robot autonome capable de se déplacer librement et d'eviter des obstacles.

Liste du matériel

réalisation du projet

Explication

Schéma Fritzing

Code

// variable hc sr04
const int trigPin = 6;
const int echoPin =7;
// variable moteur droit
const int vitesseMotD=3;
const int sensMotD=12; 
const int freinMotD=9;
const int intensiteMotD = A0; 
// variable moteur gauche
const int vitesseMotG=11; 
const int sensMotG=13;
const int freinMotG=8;
const int intensiteMotG = A1;
// variable pour rotation
int a=0;
int sens = random(0,2);
// variable temps pour analyse blocage
int time2 =0;

void setup() {
  Serial.begin (115200);
  // initialisation HC SR04
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  // intialisation moteur droit
  pinMode (vitesseMotD,OUTPUT); 
  pinMode (freinMotD,OUTPUT); 
  pinMode (sensMotD,OUTPUT); 
  // initialisation moteur gauche
  pinMode (vitesseMotG,OUTPUT); 
  pinMode (freinMotG,OUTPUT); 
  pinMode (sensMotG,OUTPUT); 
  // conditions initiales : moteurs a l arret
  stopMot();  
}

void loop() {
  long time = millis();
  Serial.print("temps ecoule :");
  Serial.println(time);
  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 < 20) {
    //Serial.println("Mur detecte");
    stopMot();
    delay(100); // 5 secondes temps arbitraire
    rotation();
    delay(300);

}
  else {
    
    //Serial.println("aucun mur detecte");
    if (analogRead(intensiteMotD)>155 || analogRead(intensiteMotG)>155){
      Serial.println("Moteur bloque!");
      reculer();
      delay(500);
      rotation();
      delay(500);
    }
    else if (time2>2000 && (analogRead(intensiteMotD)>130 || analogRead(intensiteMotG)>130)){
        reculer();
        delay(500);
        rotation();
        delay(500);
        time2 = 0;
    }
    else if  (analogRead(intensiteMotD)>130 || analogRead(intensiteMotG)>130){
      time2= millis();// temps pour analyse blocage
    }
    else {
      avancer();
      
  }
    
 }
 
  if (distance >= 30000 || distance <= 0){
    //Serial.println("Out of range");
    stopMot();
  }
  else {
   // Serial.print("Distance: [");
    //Serial.print(distance);
    //Serial.println(" cm");
  }
  delay(200);
}


void stopMot() { 
  //moteur Droit
  digitalWrite(vitesseMotD,LOW);
  digitalWrite(sensMotD,LOW);
  digitalWrite(freinMotD,LOW);
  //moteur Gauche 
  digitalWrite(vitesseMotG,LOW);
  digitalWrite(sensMotG,LOW);
  digitalWrite(freinMotG,LOW);
}

void avancer(){
  digitalWrite(sensMotD,LOW); // sens 1
  digitalWrite(sensMotG,HIGH); // sens 1
  analogWrite(vitesseMotG,255); // vitesse max 
  analogWrite(vitesseMotD,253); // vitesse modere
  // afficher l'intensite
  Serial.print("intensite moteur gauche : ");
  Serial.println(analogRead(intensiteMotG));
  Serial.print("intensite moteur droit : ");
  Serial.println(analogRead(intensiteMotD));
  Serial.println("  ");
}

void rotation(){
  if (a%=5){
    sens = random(0,2); // 2 exclus
  }
  //Serial.print("sens est :");
  //Serial.println(sens);
  a=a+1;
  digitalWrite(sensMotD,sens); // sens est high(1) ou low(0)
  digitalWrite(sensMotG,sens);
  analogWrite(vitesseMotG,255); // vitesse max 
  analogWrite(vitesseMotD,255); // vitesse modere
}

void reculer(){
digitalWrite(sensMotD,HIGH); // sens 1
  digitalWrite(sensMotG,LOW); // sens 1
  analogWrite(vitesseMotG,255); // vitesse max 
  analogWrite(vitesseMotD,253); // vitesse modere
}

Liens avec d'autres projets arduino

chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino

Pour aller plus loin

Liens avec le quotidien

quelles peuvent être les applications technologique de ce montage, ou est-ce qu'on retrouve des programme qui y ressemble ?
Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraits
AR
CO

Robot autonome de type Roomba

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique