On conçoit un petit projet qui permet de mesurer la distance via le
télémètre à ultrasons. Par exemple,quand on fait rouler une voiture
en sens inverse ,dès le télémètre (input)détecte l’obstacle, le lamp
LED (output)allume pour attirer l’attention, puis il y a un servo
moteur(output) qui pousse l’obstacle pour on l’éviter.
Composants
Input: Télémètre à ultrasons
Output: LED Servo moteur
Autres: Carte Arduino Base Workshop KIT Base en électronique
Schéma Fritzing
Code Arduino
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 5; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int echo = 9;
boolean compteur = false;
int etat;
unsigned long time;
void setup()
{
Serial.begin(9600);
pinMode(echo, OUTPUT);
pinMode(12, OUTPUT);
myservo.attach(echo); // attaches the servo on pin 9 to the servo object
}
Projet 3 – Automatisme sécurité routière
Réalisé par Yujun HE / Chen LI / Yi ZHOU
Description
On conçoit un petit projet qui permet de mesurer la distance via le
télémètre à ultrasons. Par exemple,quand on fait rouler une voiture
en sens inverse ,dès le télémètre (input)détecte l’obstacle, le lamp
LED (output)allume pour attirer l’attention, puis il y a un servo
moteur(output) qui pousse l’obstacle pour on l’éviter.
Composants
Input: Télémètre à ultrasons
Output: LED Servo moteur
Autres: Carte Arduino Base Workshop KIT Base en électronique
Schéma Fritzing
Code Arduino
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 5; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int echo = 9;
boolean compteur = false;
int etat;
unsigned long time;
void setup()
{
Serial.begin(9600);
pinMode(echo, OUTPUT);
pinMode(12, OUTPUT);
myservo.attach(echo); // attaches the servo on pin 9 to the servo object
}
void loop()
{
int distance;
distance = analogRead(potpin);
Serial.println(distance);
if(distance <= 50 && compteur == false)
{
etat = 0;
}
else if (compteur == true)
{
etat = 1;
}
else {
etat = 2;
}
switch (etat){
case 0 :
time = millis();
//J’allume la led rouge pendant 3 Secondes
digitalWrite(12, HIGH);
compteur = true;
break;
case 1 :
// J’attends 3 secondes puis
//Serial.print(time);
if (millis() > time+3000)
{
// J’éteins la LED
//digitalWrite(12, LOW);
val = 180;
myservo.write(val);
}
if(distance > 50)
{
etat = 2;
compteur = false;
}
break;
case 2 :
val = 84;
time = millis();
digitalWrite(12, LOW);
myservo.write(val);
break;
}
}
Vidéo
Il y a une personne (comme l’obstacle)est détectée qui est devant le
télémètre à ultrasons,nous ne la filme pas.
http://arduino.cc/en/Tutorial/Knob
http://arduino.cc/en/Reference/ServoWrite
Demandez vous si le servo est à rotation continue.