Bonjour,
je suis actuellement en train de bidouiller avec un arduino uno et des ds18b20, je m'en sort pas trop mal pour l'instant , mais je bute sur un problème......
Quand je fait l'acquisition de deux DS18B20 ou plus, si jamais un seul capteur plante dans la mesure, c'est celle du capteur précedent qui notera sa valeur dans 'l"emplacement" du capteur deffectueux. Je sais pas trop si je suis clair =(
Voici mon programme, celui-ci n'est que pour deux capteurs
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress temp = { 0x28, 0x5E, 0xFC, 0x09, 0x05, 0x00, 0x00, 0x02 };
DeviceAddress temp1 = { 0x28, 0x80, 0x31, 0x0A, 0x05, 0x00, 0x00, 0x93 };
void setup(void)
{
Serial.begin(9600);
sensors.begin();
sensors.setResolution(temp, 12);
sensors.setResolution(temp1, 12);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("ERREUR !!! lecture température incorrecte, ");
} else {
Serial.print("C: ");
Serial.print(tempC);
}
}
void loop(void)
{
delay(1000);
float temp = (sensors.getTempCByIndex(0));
float temp1 = (sensors.getTempCByIndex(1));
sensors.requestTemperatures();
Serial.print(temp);
Serial.print(",");
Serial.println(temp1);
}
Du coup sur la console le programme m'affiche "temp,temp1"
Jusque là c'est logique, mais si jamais je deconnecte volontairement "temp1", et bien temp va s'afficher à sa place.....
exemple :
temp = 25°C
temp1 = 30°C
si je retire temp1 cela va m'afficher 25,25
Desolé de bien préciser mon soucis mais j'ai peur de mal me faire comprendre
Mon problème vient-il de :
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("ERREUR !!! lecture température incorrecte, ");
} else {
Serial.print("C: ");
Serial.print(tempC);
}
}
Merci d'avance pour vos réponses
Lykaa