// // ---------------------------------------------------- // ¦ LA BOITE A LETTRES - Guy Magli - 26 fevrier 2024 ¦ // ---------------------------------------------------- // // ----------- // ¦ INCLUDE ¦ // ----------- // // ------------------------------------ // ¦ VARIABLES ET CONSTANTES GLOBALES ¦ // ------------------------------------ // // GENERAL // const int iDelai = 100; // // DETECTEUR D'ULTRASONS // const int iTrig = 9; const int iEcho = 8; const int iCoeff = 58; int t, g; long lMesure = 0; float fLargeur = 1000; float fDistance = 1000; // // --------- // ¦ SETUP ¦ // --------- // void setup() { Serial.begin(9600); Serial.println(" "); Serial.println(" "); Serial.println("-------------------"); Serial.println("| BOITE À LETTRES |"); Serial.println("-------------------"); Serial.println("| Guy Magli |"); Serial.println("| 26 février 2024 |"); Serial.println("-------------------"); Serial.println(" "); Serial.println("-----> Début de l'initialisation."); Serial.println(" "); delay(iDelai); // // On mesure, lors du boot, la largeur de la boite a lettres. // Envoi d'un ultrason digitalWrite(iTrig, HIGH); delayMicroseconds(10); digitalWrite(iTrig, LOW); // Reception d'un ultrason lMesure = pulseIn(iEcho, HIGH, 25000); fLargeur = lMesure / iCoeff; Serial.print("Le fond de la boîte à lettres est à une distance de "); Serial.print(fLargeur); Serial.println(" cm."); delay(iDelai); Serial.println(" "); Serial.println("-----> Début du programme en continu."); } // // -------- // ¦ LOOP ¦ // -------- // void loop() { // On mesure, continuellement, la distance entre le detecteur et le colis ou la lettre. Si elle est inferieure de 10% a la mesure de la boite, on agit. fDistance = 1000; Serial.println(" "); Serial.println("Attente d'une lettre ou d'un colis."); while (fDistance > (fLargeur -2)) { // Envoi d'un ultrason digitalWrite(iTrig, HIGH); delayMicroseconds(10); digitalWrite(iTrig, LOW); // Reception lMesure = pulseIn(iEcho, HIGH, 25000); fDistance = lMesure / iCoeff; delay(iDelai); } // On agit car une lettre ou un colis a été detecte. Serial.print("Une lettre (ou un colis) a été détectée à "); Serial.print(fDistance); Serial.println(" cm."); // On "presse" le bouton de la sonnette. Serial.println("La sonnette est activée."); // On attend que quelqu'un ouvre la porte de la boite a lettres pour relancer le tout delay(1000); Serial.println("On attend que la porte soit ouverte et que le courrier (ou le colis) soit retiré de la boîte."); fDistance = 0; while (fDistance < fLargeur + 20) { // Envoi d'un ultrason digitalWrite(iTrig, HIGH); delayMicroseconds(10); digitalWrite(iTrig, LOW); // Reception lMesure = pulseIn(iEcho, HIGH, 25000); fDistance = lMesure / iCoeff; delay(iDelai); } Serial.print("La porte de la boîte a a été ouverte, la distance est de "); Serial.print(fDistance); Serial.println(" cm."); // Delai de cinq minutes. Serial.println("Attente de deux minutes avant de relancer le système."); delay(120000); // On relance. Serial.println("Le système est relancé."); fDistance = 1000; }