Boucle else if incorrecte

Bonjour,

Le confinement semble me ramollir mais je n’arrive pas à regler le pb.
Voici le code:

void loop(void) {
    int quality = sensor.slope();

    Serial.print("Sensor value: ");
    Serial.println(sensor.getValue());

    if (digitalRead(quality) > 400) {
        Serial.println("High pollution! Force signal active.");
    } else if (digitalRead(quality) > 350) {
        Serial.println("High pollution!");
    } else if (digitalRead(quality) > 250) {
        Serial.println("Low pollution!");
    } else if (digitalRead(quality) < 250) {
        Serial.println("Fresh air.");
    }

    delay(1000);
}

Quelle que soit la valeur de quality, ‘Fresh air’ s’affiche. Savez-vous pourquoi?
Le signal du catpeur est branché sur SCL

Bonjour,

digitalRead() retourne LOW ou HIGH (0 ou 1). Est ce que tu as voulu mettre analogRead()?

Hello ,

Si tu fais :

void loop(void) {
    int quality = sensor.slope();

    Serial.print("Sensor value: ");
    Serial.println(sensor.getValue());

    if (digitalRead(quality) > 400) Serial.println("High pollution! Force signal active.");
 else if (digitalRead(quality) > 350) Serial.println("High pollution!");
 else if (digitalRead(quality) > 250) Serial.println("Low pollution!");
 else Serial.println("Fresh air.");
    delay(1000);
}

ca marche ?

hum correction le code n ' est pas complet mais avec çà ca devrait le faire :

void loop(void) {
    int quality = sensor.slope();

    Serial.print("Sensor value: ");
    Serial.println(sensor.getValue());
 
 valeur = sensor.getValue();

    if (valeur > 400) Serial.println("High pollution! Force signal active.");
 else if (valeur > 350) Serial.println("High pollution!");
 else if (valeur > 250) Serial.println("Low pollution!");
 else Serial.println("Fresh air.");
    delay(1000);
}

ou bien

void loop(void) {
    int quality = sensor.slope();

    Serial.print("Sensor value: ");
    Serial.println(sensor.getValue());


    if (quality > 400) Serial.println("High pollution! Force signal active.");
 else if (quality > 350) Serial.println("High pollution!");
 else if (quality > 250) Serial.println("Low pollution!");
 else Serial.println("Fresh air.");
    delay(1000);
}

Merci à tous, effectivement c'est bien analogRead et non digitalRead!

Merci bien !

Je te conseille de lire une seule fois la valeur et de changer le dernier else if en else comme dans le 2eme code de iznobe.