bonsoir voici mon code il et écrit pour 5 sonde le problème et que si il n y a pas 5 sonde de connectée il ne fonctionne pas j aimerais palie a ce probleme
en quelque sorte si il n y a pas 5 sonde c pas grave il tourne quand meme et indique les sonde non connectée
(sans pour autant suprime les sonde je veut qu il s adapte en quelque sorte )
#include <OneWire.h>
#include <LiquidCrystal.h>
// Broche utilisée pour le bus 1-Wire
OneWire ds(13); // Création de l'objet OneWire ds
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
boolean getTemperature(float *temp){
byte data[9], addr[8]; // data : Données lues depuis le scratchpad
// addr : adresse du module 1-Wire détecté
if (!ds.search(addr)) { // Recherche un module 1-Wire
ds.reset_search(); // Réinitialise la recherche de module
return false; // Retourne une erreur
}
ds.write(0x44, 1); // On lance une prise de mesure de température
delay(100); //tempo rafraichissement // Et on attend la fin de la mesure
ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20
ds.write(0xBE); // On envoie une demande de lecture du scratchpad
for (byte i = 0; i < 9; i++) // On lit le scratchpad
data[i] = ds.read(); // Et on stock les octets reçus
*temp = ((data[1] << 8) | data[0]) * 0.0625; // Calcul de la température en degré Celsius
return true;
}
void setup() {
lcd.begin(20, 4);
pinMode(7, OUTPUT); // sortie relais 1
pinMode(8, OUTPUT); // sortie relais 2
pinMode(9, OUTPUT); // sortie relais 3
pinMode(10, OUTPUT); // sortie relais 4
pinMode(6, OUTPUT); // sortie relais 5
pinMode(13, OUTPUT); // sortie relais ventillateur
}
void loop() {
float temp1;
float temp2;
float temp3;
float temp4;
float temp5;
if(getTemperature(&temp1)) // Lecture des capteurs.
if(getTemperature(&temp2))
if(getTemperature(&temp3))
if(getTemperature(&temp4))
if(getTemperature(&temp5))
{
lcd.setCursor(0, 0); // affichage temp 1
lcd.print("A=");
lcd.print(temp1);
lcd.print((char)223);
lcd.setCursor(12, 0); // affichage temp2
lcd.print("B=");
lcd.print(temp2);
lcd.print((char)223);
lcd.setCursor(0, 1); // affichage temp3
lcd.print("C=");
lcd.print(temp3);
lcd.print((char)223);
lcd.setCursor(12, 1); // affichage temp4
lcd.print("D=");
lcd.print(temp4);
lcd.print((char)223);
lcd.setCursor(0, 2); // affichage temp5
lcd.print("E=");
lcd.print(temp5);
lcd.print((char)223);
lcd.setCursor(0, 3); // affichage temp5
lcd.print("Ventillateur=");
//lcd.print();
}
//relais temp1 consigne 29°c
if(temp1 > 30)
{
digitalWrite(7,HIGH); // relais connecté broche 7
lcd.setCursor(0, 0);
lcd.print("A=");
lcd.print(" alarm ");
// delay(100); //ENLEVER SLASH POUR CLIGNOTEMENT
//lcd.setCursor(0, 0);
//lcd.print(" ");
}
else
{
digitalWrite(7,LOW);
}
if(temp2 > 30) //relais temp2 consigne 29°c
{
digitalWrite(8,HIGH); // relais connecté broche 8
lcd.setCursor(12, 0);
lcd.print("B=");
lcd.print(" alarm ");
}
else
{
digitalWrite(8,LOW);
}
if(temp3 > 30) //relais temp2 consigne 29°c
{
digitalWrite(9,HIGH); // relais connecté broche 8
lcd.setCursor(0, 1);
lcd.print("C=");
lcd.print(" alarm ");
}
else
{
digitalWrite(9,LOW);
}
if(temp4 > 30) //relais temp2 consigne 29°c
{
digitalWrite(10,HIGH); // relais connecté broche 8
lcd.setCursor(12, 1);
lcd.print("D=");
lcd.print(" alarm ");
}
else
{
digitalWrite(10,LOW);
}
if(temp5 > 30) //relais temp5 consigne 29°c
{
digitalWrite(6,HIGH); // relais connecté broche 8
lcd.setCursor(12, 1);
lcd.print("E=");
lcd.print(" alarm ");
}
else
{
digitalWrite(6,LOW);
}
//relais ventilateur consigne 25°c
if(temp1 < 20,temp2 < 20,temp3 < 20,temp4 < 20)
{
digitalWrite(13,HIGH); // relais connecté broche 7
lcd.setCursor(13, 4);
lcd.print(" Off ");
}
else
{
lcd.setCursor(13, 4);
lcd.print(" On ");
// delay(100); //ENLEVER SLASH POUR CLIGNOTEMENT
//lcd.setCursor(0, 0);
//lcd.print(" ");
//}
digitalWrite(13,LOW);
}
{
}
return;
}