Capteur de température db18b20

Bonjour, j'ai un problème. En faite je veut qu'au dessus d'une certaine température, une led rouge s'allume et en dessous une Led verte. Mais pour l'instant il n'y a que la led verte qui s'allume même au dessus de la température (27°).

Voici le code:
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

OneWire oneWire(7); //Bus One Wire sur la pin 7 de l'arduino
DallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteurs
DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie

const int pin_led_rouge=4;
const int pin_led_verte=3;

float temperature_max = 27.0;
float temperature= 0;

void setup(void){
Serial.begin(9600); //Permet la communication en serial
sensors.begin(); //Activation des capteurs
sensors.getAddress(sensorDeviceAddress, 0); //Demande l'adresse du capteur à l'index 0 du bus
sensors.setResolution(sensorDeviceAddress, 12); //Résolutions possibles: 9,10,11,12
pinMode(pin_led_rouge,OUTPUT);
pinMode(pin_led_verte,OUTPUT);
}

void loop(void){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
sensors.requestTemperatures(); //Demande la température aux capteurs
Serial.print("La température est: ");
Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du capteur n°0
Serial.println(" C°");
delay (2000);
if (temperature<temperature_max)digitalWrite(pin_led_verte,HIGH);
else if(temperature>temperature_max)digitalWrite(pin_led_rouge,HIGH);

}
Merci a ce qui m'aiderons

bonjour,

Utiliser les balises pour afficher votre code SVP.

Tu compares temperature à une consigne pour savoir s'il faut allumer l'une ou l'autre des LEDs.
Une question pour te faire réfléchir sur ton programme:
A quel moment dans loop la valeur de temperature change-t-elle?

fdufnews:
Tu compares temperature à une consigne pour savoir s'il faut allumer l'une ou l'autre des LEDs.
Une question pour te faire réfléchir sur ton programme:
A quel moment dans loop la valeur de temperature change-t-elle?

Et je dirais même plus : où la variable "temperature" est elle affectée?

Cordialement

hello
comme les copains, tu n'affectes pas la température de la sonde à ta variable "température"
par contre tu l'affiches sur le moniteur.

sensors.requestTemperatures(); //Demande la température aux capteurs
Serial.print("La température est: ");
Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du capteur n°0
Serial.println(" C°");

comme ta variable "température" à laquelle tu n'affectes pas la lecture de la sonde mais que tu as initialisée à zéro dans le setup vaut toujours zéro, ton test

if (temperature<temperature_max)digitalWrite(pin_led_verte,HIGH);

est toujours vrai et la led verte ne demande qu'à s'allumer.

mais au début de la boucle tu forces les deux led à l'état éteint ( il faut le faire dans le setup), alors ta led ne sait plus trop si elle doit etre éteinte ou allumée
et à la vitesse d'exécution de la boucle elle passe de l'état allumé à l'état éteint plusieurs centaines de fois à la seconde. je pense que si tu voies la led verte allumée, elle ne doit pas etre à sa pleine puissance lumineuse.

bonne suite