Acquérir une durée d'un échelon appliqué sur une entrée numérique (pulseIn) : capteur à ultrasons
Exemple de montage : capteur à ultrasons

Fonctionnement du capteur à ultrasons :
Pour déclencher une mesure, il faut appliquer un échelon d'amplitude 5V d'au moins 10 μs sur l'entrée "Trig" du capteur.
Le haut-parleur T du capteur émet alors une série de 8 impulsions ultrasoniques à 40 kHz, puis le haut-parleur R attend le signal réfléchi.
Lorsque celui-ci est détecté, le capteur envoie un signal 5V sur la sortie "Echo", dont la durée ΔT est égale à la durée de l'aller-retour du son.
Il est préférable d'attendre au moins 60 μs avant de demander une nouvelle mesure.
NB1 : l'entrée Trig pour le capteur est en fait une sortie du point de vue de la carte Arduino.
NB2 : la sortie Echo pour le capteur est en fait une entrée du point de vue de la carte Arduino.
Structure du code
• dans l'entête déclarative : déclarer les variables associées au numéro des pins numériques utilisés (Trigpin et Echopin) ;
Attention à la casse des noms de variable : « Trigpin » est différent de « trigpin » !
• dans la fonction void setup() : définir les pin utilisés, l'un en entrée et l'autre en sortie, à l'aide de la fonction « pinMode » :
• dans la fonction void loop() ou une autre fonction : acquérir la durée d'un échelon sur le pin echo (image de la distance) à l'aide de la fonction « pulseIn » . Exemple :
pulseIn(11,a)
: Acquiert la durée d'un échelon (soit au niveau 5V si a=1, soit au niveau 0V si a=0) sur le pin entrée numérique 11. Par exemple, si a=1, l'instruction pulseIn() attend que le pin passe à 5V, commence alors le chronométrage, attend que le pin repasse au niveau 0V et stoppe alors le chronométrage. L'instruction renvoie la durée de l'impulsion en microsecondes.
Code pour acquérir la distance d'un obstacle au capteur ultrasons
int Trigpin = 10; // déclare la variable Trigpin comme un entier de valeur 10 (repère du pin utilisé)
int Echopin = 9; // déclare la variable Echopin comme un entier de valeur 9 (repère du pin utilisé)
void setup() {
pinMode(Echopin,INPUT); // définit le pin Echopin (ici 9) comme une sortie
pinMode(Trigpin,OUTPUT); // définit le pin Trigpin (ici 10) comme une sortie
Serial.begin(9600); // définit la vitesse de transmission de données entre la carte et le PC
}
float Distance (){
// envoie une impulsion sonore
digitalWrite(Trigpin,0);
delayMicroseconds(2);
digitalWrite(Trigpin,1);
delayMicroseconds(10);
digitalWrite(Trigpin,0);
// écoute l'écho
return pulseIn(Echopin,1)/58.82;
}
void loop() {
Serial.println(Distance()); // affiche sur l'écran du PC la valeur de la variable Distance, puis effectue un retour à la ligne
delay(200); // attend 200 ms
}