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;
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);
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?
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.