Ressource partie III
Codage à modifier
const byte TRIGGER_PIN = ; // Broche TRIGGER const byte ECHO_PIN = ; // Broche ECHO int = 0; // Déclarer la variable état avec une valeur de 0 int = 5; // Déclarer la variable nouvelle état avec une valeur de 5 /* 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; // Vitesse de propagation du son dans l'ait //------------------------------------------------------ //------------------------------------------------------ /** Fonction setup() */ void setup() { /* Initialise le port série */ Serial.begin(115200); /* Initialise les broches */ pinMode(TRIGGER_PIN, ); // Déclarer la variable Trigger_PIN étant une sortie digitalWrite(TRIGGER_PIN, ); // La broche TRIGGER doit être à LOW au repos pinMode(ECHO_PIN, ); // Déclarer la variable ECHO_PIN en entrée Serial.println(F("!!! Initialisation de la poubelle !!!")); // Afficher le message Serial.println(F("---")); delay(500); /* Délai d'attente avant de commencer à faire les mesures */ } //------------------------------------------------------- //------------------------------------------------------- /** 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, ); 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_cm = (measure / 2.0 * SOUND_SPEED) / 10; /* 4. Comparer la distance relevé avec les états de la poubelle */ if (distance_cm >= && distance_cm <= 10){ // Si la distance mesurée est comprise entre 0 cm et 10 cm nouvelle_etat = 3; } if (distance_cm > && distance_cm <= ){ // Si la distance mesurée est comprise entre 10 cm et 47 cm nouvelle_etat = 2; } if (distance_cm > 47 && distance_cm <= ){ // Si la distance mesurée est comprise entre 47 cm et 84 cm nouvelle_etat = 1; } if (distance_cm > ){ // Si la distance mesurée est supérieure à 84cm nouvelle_etat = 0; } /* 5. Avertir par un message du taux de remplissage de la poubelle */ if (etat != nouvelle_etat){ if (nvelle_etat == 3){ etat = 3; Serial.println(F("La poubelle est pleine, il faut la vider !")); // Afficher le message: La poubelle est plein, il faut la vider Serial.println(F("---")); } if (nouvelle_etat == 2){ etat = 2; Serial.println(F("La poubelle est a moitie pleine.")); // Afficher le message: La poubelle est à moitié pleine. Serial.println(F("---")); } if (nouvelle_etat == 1){ etat = 1; Serial.println(F("La poubelle est en cours de remplissage.")); // Afficher le message: La poubelle est en cours de remplissage Serial.println(F("---")); } if (nouvelle_etat == 0){ etat = 0; Serial.println(F(" ")); // Afficher le message: La poubelle est vide Serial.println(F("---")); } } /* Délai d'attente pour éviter d'afficher trop de résultats à la seconde */ delay(500); }
Régi par la licence Creative Commons: Licence d'attribution en partage identique 4.0