Capteur à InfraRouge Détecter des obstacles avec un capteur à ultrasons Utiliser un capteur à UltraSon Eviter les obstacles avec des moustaches
Accueil du site | Accessibilité | Rechercher | Menu | Contenu | Plan du site | | Contact

°°TechNoLand°°

°°TechNoLand°°

 

Détecter des obstacles avec un capteur à ultrasons

10 novembre 2012 - Dernier ajout 27 mars 2014
par chamayou

Le capteur Sharp HCSR04 permet de détecter des obstacles grâce à l’envoi et la réception d’ultrasons.

 La librairie Ultrasonic

Téléchargement de la librairie

 La vidéo du robot détecteur d’obstacle

robot ultrason from franckuino on Vimeo.

 Le code C

#include <Servo.h>
#include <Ultrasonic.h>

#define TRIGGER_PIN  8
#define ECHO_PIN     7

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);


//servomoteurs sur sortie 3 et 5 de arduino
Servo servo_pin_3;
Servo servo_pin_5;

void setup()
 {
 Serial.begin(9600);
//servomoteurs sur sortie 3 et 5 de arduino
 servo_pin_5.attach(5);
 servo_pin_3.attach(3);
 }

void loop()
 {
 float cmMsec, inMsec;
 long microsec = ultrasonic.timing();

 cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
 inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
 Serial.print("CM: ");
 Serial.print(cmMsec);
 delay(500);
 
if (cmMsec < 20)
{
//tourne
servo_pin_5.write( 180 );
servo_pin_3.write( 180 );
}
else
{
//avance
servo_pin_5.write( 0 );
servo_pin_3.write( 180 );
}
}

 Montage sur carte de prototypage

// robot avance, tourne droit ou gauche si capteur droit ou gauche
// by f. chamayou

#include <Servo.h>

Servo servod;  // cree un objet servodroit
Servo servog;  // cree un objet servogauche
int capteur = 1;

// setup : programme lu une seule fois
void setup()
{
 servod.attach(8);  // servo droit connecté sur sortie 8
 servog.attach(9);  // servo gauche connecté sur sortie 9
 pinMode(capteur, INPUT);

}

// loop : programme en boucle
void loop()
{
if (analogRead(capteur) >= 1023) {
recularret ();
retournegauche ();
} else avance();
}

 
void avance()
{
servod.write(0);   // dit au servo droit de prendre la position 180
servog.write(180);     // dit au servo gauche de prendre la position 0
delay(300);         // attendre 5000 ms (5s)  
}

void recularret()
{
servod.write(99);
servog.write(101);
   delay(200);
servod.write(180);
servog.write(0);
   delay(1000);
}

void retournegauche()
{
servod.write(180);
servog.write(180);
   delay(600);      
}  

 Capteur tournant

Sources : http://www.instructables.com/id/How... http://robotfightleague.wordpress.com/ http://freecode.com/urls/f05d8c56e9... http://blog.iteadstudio.com/ http://arduino.cc/forum/index.php/t... http://blog.iteadstudio.com/arduino...

Visualisation radar :

http://www.pobot.org/Visualisation-...


calle

calle