Ignorer la navigation

Ressource partie III

Montage incompet

Montage 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);
}