L'application est conçue pour détecter les objets en hauteur (panneaux de signalisation, ...).

sonar1-1

sonar1b-2

- Carte arduino leonardo

- Capteur ultrason HC-SR 04

- Buzzer KY-012 ou Toogoo R

Voici le code utilisé :

/*
 * Code pour eva pour un capteur à ultrasons HC-SR04.
 le son est sur le pin 8
 */

/* Constantes pour les broches */
const byte TRIGGER_PIN = 2; // Broche TRIGGER
const byte ECHO_PIN = 3;    // Broche ECHO
 
/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s

/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;

/** Fonction setup() */
void setup() {
   
  /* Initialise le port série */
  Serial.begin(115200);
   
  /* Initialise les broches */
  pinMode(TRIGGER_PIN, OUTPUT);
  digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
  pinMode(ECHO_PIN, INPUT);
}
 
/** Fonction loop() */
void loop() {
 
  /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */
  digitalWrite(TRIGGER_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIGGER_PIN, LOW);
 
  /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */
  long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);
   
  /* 3. Calcul la distance à partir du temps mesuré */
  float distance_mm = measure / 2.0 * SOUND_SPEED;
  long cm = distance_mm / 10;
   
   
  /* Affiche les résultats en mm, cm et m */
  Serial.print(F("Distance: "));
  Serial.print(distance_mm);
  Serial.print(F("mm ("));
  Serial.print(cm);
  Serial.print(F("cm, "));
  Serial.print(distance_mm / 1000.0, 2);
  Serial.println(F("m)"));
   
   
   
  if (cm>250 && cm<300)
{
  tone(8,220,200);
 
  }
   if (cm>200 && cm<250)
{
  tone(8,440,200);
 
  }
 
  if (cm>150 && cm<200)
{
  tone(8,880,200);
 
  }
 if (cm>100 && cm<150)
{
  tone(8,1760,200);
 
  }
   
  if (cm>30 && cm<100)
{
  tone(8,3520,200);
 
  }
     
   
  /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */
  delay(100);
}