// mesurer la période T d'un pendule avec des ultrasons
int vitesse = 340 ; // vitesse du son 340 m/s
int Trig = 3; // Déclencheur sur la broche 3
int Echo = 2; // Réception sur la broche 2
/* Pour faire des mesures à intervalle régulier */
unsigned long tempsPrecedent = 0;
float intervalle = 20; // durée entre deux mesures en ms (à modifier si nécessaire)
void setup() {
pinMode(Trig, OUTPUT); // initialisation de la broche "Trig" comme étant une sortie
pinMode(Echo, INPUT); // initialisation de la broche "Echo" comme étant une entrée
digitalWrite(Trig, LOW); // Mettre "Trig" niveau bas
Serial.begin(115200);
}
void loop()
{
unsigned long tempsCourant = millis(); // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré.
if (tempsCourant - tempsPrecedent >= intervalle) {
tempsPrecedent = tempsCourant;
digitalWrite(Trig, HIGH); // Un état haut de 10 microsecondes est mis sur la broche "Trig"
delayMicroseconds(10); // on attend 10 µs
digitalWrite(Trig, LOW); // On remet à l’état bas la broche Trig
unsigned long duree = pulseIn(Echo, HIGH); // Lecture de la durée d’état haut sur la broche "Echo"
// calcul de la distance
duree = duree / 2; // On divise cette durée par deux pour n'avoir qu'un trajet
float temps = duree / 1000000.0; //on met en secondes
float distance = vitesse * temps; //on multiplie par la vitesse, d = v x t
// On affiche la distance sur la liaison série
Serial.println(distance);
}
}