Bonjour et merci à ceux qui m'aideront
le problème:dans mon code je veux afficher des données sur un lcd pendant 5 secondes puis un autre affichage pendant 5 secondes,ce que j'ai codé marche si je commente les lignes 184 à 225 mais affiche n'importe quoi si je décommente et je ne comprends pas pourquoi ?
mon code:
[code]
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur
LiquidCrystal_I2C ecran(0x27, 16, 2);
// Broche du bus 1-Wire
const byte BROCHE_ONEWIRE = 12;
// Adresses des capteurs de température
const byte SENSOR_ADDRESS_0[] = { 0x28, 0x9D, 0x6C, 0x73, 0x4C, 0x20, 0x01, 0xE0 };// T° depart chauffage
const byte SENSOR_ADDRESS_1[] = { 0x28, 0x47, 0x08, 0x2F, 0x46, 0x20, 0x01, 0x45 };// T° retour chauffage
const byte SENSOR_ADDRESS_3[] = { 0x28, 0xC6, 0xA4, 0x11, 0x4C, 0x20, 0x01, 0xBD };// T° ballon milieux
const byte SENSOR_ADDRESS_2[] = { 0x28, 0xF6, 0x8D, 0x78, 0x4C, 0x20, 0x01, 0x58 };// T° ballon bas
const byte SENSOR_ADDRESS_4[] = { 0x28, 0xF6, 0x8A, 0x23, 0x46, 0x20, 0x01, 0x2F };// T° depart resistance
const byte SENSOR_ADDRESS_5[] = { 0x28, 0xEF, 0x00, 0xE5, 0x4B, 0x20, 0x01, 0xB4 };// T° arrivée resistance
/*
const byte SENSOR_ADDRESS_0[] = { 0x28, 0xE8, 0x7C, 0x75, 0xD0, 0x01, 0x3C, 0x33 };
const byte SENSOR_ADDRESS_1[] = { 0x28, 0xCA, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x47 };
const byte SENSOR_ADDRESS_2[] = { 0x28, 0x63, 0x73, 0x75, 0xD0, 0x01, 0x3C, 0x4E };
const byte SENSOR_ADDRESS_3[] = { 0x28, 0x2E, 0x53, 0x75, 0xD0, 0x01, 0x3C, 0x89 };
const byte SENSOR_ADDRESS_4[] = { 0x28, 0x5B, 0x5D, 0x75, 0xD0, 0x01, 0x3C, 0x58 };
const byte SENSOR_ADDRESS_5[] = { 0x28, 0x87, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x78 };
*/
// Création de l'objet OneWire pour manipuler le bus 1-Wire
OneWire ds(BROCHE_ONEWIRE);
// Fonction de démarrage de la prise de mesure de la température via un capteur DS18B20.
void startTemperatureMeasure(const byte addr[]) {
// addr[] : Adresse du module 1-Wire détecté
// Reset le bus 1-Wire et sélectionne le capteur
ds.reset();
ds.select(addr);
// Lance une prise de mesure de température et attend la fin de la mesure
ds.write(0x44, 1);
}
// Fonction de récupération de la prise de mesure de la température via un capteur DS18B20.
float readTemperatureMeasure(const byte addr[])// addr[] : Adresse du module 1-Wire détecté
{
byte data[9]; // data[] : Données lues depuis le scratchpad
// Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad
ds.reset();
ds.select(addr);
ds.write(0xBE);
// Lecture du scratchpad
for (byte i = 0; i < 9; i++) {
data[i] = ds.read();
}
// Calcul de la température en degré Celsius
return ((data[1] << 8) | data[0]) * 0.0625;
}
const int entreeTpSecurResistance = A2 ;// broche A3 reçois 5 volts sur circuit thermostat2 resistance fermé
const int entreeTpDepResist = A3;//broche 13 reçois 5 volts sur circuit thermostat resistance fermé
const int entreeTpBallon = A1;//broche A1 reçois 5 volts sur circuit termostat ballon fermé
const int entreeVoltPressostat = A0;//broche A0 reçois 5 volts sur circuit pressostat fermé
//relais statiques LOW = marche
//const int relaisVanne = 4; //broche relais statique vanne
const int relaisTransfo = 5; //broche relais statique enclenchement transfo et pac
const int relaisCircResistance = 6; //broche relais statique circulateur resistance
const int relaisResistance = 7;//broche relais statique resistance(relais NF)
const int relaisOffPac = 8;// enclenche le off de la pac
const int relaisVentilateur9 = 9; //broche relais elecmeca ventilateur
//const int relaisVentilateur10 = 10; //broche relais elecmeca ventilateur
//const int relaisTransfo = 11; //broche relais elecmeca
int affichageLcd = 1;
int valResistancesecur = 0;
int valThBallon = 0;
int valResistance = 0;
int valPressostat = 0;
int reglTempBallon = 40;
const int pinBoutonPlus = 2 ;
const int pinBoutonMoins = 3 ;
volatile int etatBoutonPlus;
volatile int etatBoutonMoins;
unsigned long delaisLcd;// = 0;
unsigned long delaisLcd1;// = 0;
const unsigned long period = 15000;
unsigned long delais;
unsigned long delais2;
void setup()
{
// digitalWrite(relaisCircPlancher, HIGH);
// digitalWrite (relaisVanne,LOW);
digitalWrite(relaisOffPac, HIGH);
digitalWrite(relaisTransfo , HIGH);
digitalWrite(relaisCircResistance, HIGH);
digitalWrite(relaisResistance, HIGH);
// digitalWrite(relaisVentilateur10,HIGH);
digitalWrite(relaisVentilateur9, HIGH);
pinMode (relaisVentilateur9, OUTPUT);
// pinMode (relaisVentilateur10, OUTPUT);
pinMode (relaisOffPac, OUTPUT);
pinMode (relaisCircResistance, OUTPUT);
pinMode (relaisResistance, OUTPUT);
pinMode (relaisTransfo , OUTPUT);
pinMode (pinBoutonPlus, INPUT_PULLUP);
pinMode (pinBoutonMoins, INPUT_PULLUP);
etatBoutonMoins = LOW;
etatBoutonPlus = LOW;
// ecran.init();
Serial.begin(9600);
}
void loop()
{
boolean etatBoutonPlus = digitalRead(pinBoutonPlus);
boolean etatBoutonMoins = digitalRead(pinBoutonMoins);
//test des conditions
if (etatBoutonPlus == HIGH) //test si bouton 1 appuyé
{
reglTempBallon++;//= reglTempBallon + 1;
delay(50);
}
if (etatBoutonMoins == HIGH) //test si bouton 2 appuyé
{
reglTempBallon--;//= reglTempBallon - 1;
delay(50);
}
float temperature[6];
// Lit les températures des six capteurs
startTemperatureMeasure(SENSOR_ADDRESS_0);// T° depart chauffage
temperature[0] = readTemperatureMeasure(SENSOR_ADDRESS_0); // T° depart chauffage
startTemperatureMeasure(SENSOR_ADDRESS_1);// T° arrivée chauffage
temperature[1] = readTemperatureMeasure(SENSOR_ADDRESS_1); // T° arrivée chauffage
startTemperatureMeasure(SENSOR_ADDRESS_3);// T° ballon milieux
temperature[2] = readTemperatureMeasure(SENSOR_ADDRESS_3); // T°ballon milieux
startTemperatureMeasure(SENSOR_ADDRESS_2);// T° ballon bas
temperature[3] = readTemperatureMeasure(SENSOR_ADDRESS_2); // T° ballon bas
startTemperatureMeasure(SENSOR_ADDRESS_4);// T° depart resistance
temperature[4] = readTemperatureMeasure(SENSOR_ADDRESS_4); // T° depart resistance
startTemperatureMeasure(SENSOR_ADDRESS_5);// T° arrivée resistance
temperature[5] = readTemperatureMeasure(SENSOR_ADDRESS_5); // T° arrivée resistance
valResistance = analogRead(entreeTpDepResist);
valResistancesecur = analogRead(entreeTpSecurResistance);
valThBallon = analogRead(entreeTpBallon);
valPressostat = analogRead(entreeVoltPressostat);
//LOW diode relais allumée relais marche,HIGH diode eteinte relais arret_____________________________________________________________
if (valThBallon > 800 )
{
digitalWrite (relaisOffPac , LOW); // enclenche "on" le OnOff de la pac
digitalWrite (relaisTransfo , LOW);//enclenche les transfos de reduction de tension
digitalWrite(relaisVentilateur9, LOW); //enclenche les ventilos
}
if (valThBallon < 800)
{
digitalWrite (relaisOffPac , HIGH); // coupe "off" le onOff de la pac,arret pac
}
if (valThBallon > 800) delais = millis();
if ((valThBallon < 800) && (millis() - delais >= period))
{
digitalWrite (relaisTransfo , HIGH); //arret transfo
digitalWrite(relaisVentilateur9, HIGH); //arret ventilo
}
//______________________________________________________________________
if (temperature [4] > 25 )//si la temperature de la resistance est plus grande que 90°
{
digitalWrite(relaisResistance, HIGH);//arrete la resistance
}
if (temperature [4] < 25) delais2 = millis();
if ((temperature [4] > 25 ) && (millis() - delais2 >= period))
{
digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
}
else if (temperature [4] < 24)
{
digitalWrite(relaisResistance, LOW);//met en marche la resistance
digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
}
//____________________________________________________________________
if (millis() - delaisLcd >= 5000)
{
ecran.init();
ecran.backlight();
ecran.clear();
ecran.setCursor(0, 0);
ecran.print("T.depChauff: ");
ecran.print(1);
ecran.setCursor(0, 1);
ecran.print("T.arrChauff : ");
ecran.print(2);
/* ecran.setCursor(0, 2);
ecran.print("Th.ballonM: ");
ecran.print(valThBallon);
ecran.setCursor(0, 3);
ecran.print("T.ballonB: ");
ecran.print(temperature [2]);*/
// delaisLcd = millis();
}
if (millis() - delaisLcd1 >= 10000)
{
ecran.backlight();
ecran.clear();
ecran.setCursor(0, 0);
ecran.print("ThDepResist: ");
ecran.print(3);
ecran.setCursor(0, 1);
ecran.print("securResist: ");
ecran.print(4);
/* ecran.setCursor(0, 2);
ecran.print("Pressostat: ");
ecran.print(valPressostat);
ecran.setCursor(0, 3);
ecran.print("regTBallon: ");
ecran.print(reglTempBallon);*/
// delaisLcd1 = millis();
}
/*
// Affiche les températures
Serial.print(F("Temperatures : "));
Serial.println();
Serial.print(F("T depart chauffage : "));
Serial.print(temperature[0], 2);
Serial.println();
Serial.print(F("T ballon milieux : "));
Serial.print(temperature[2], 2);
Serial.println();
Serial.print(F("T ballon bas : "));
Serial.print(temperature[3], 2);
Serial.println();
Serial.print(F("T depart resist : "));
Serial.print(temperature[4], 2);
Serial.println();
Serial.print(F("T arrivee resist : "));
Serial.print(temperature[5], 2);
Serial.println();
Serial.print(F("T arrivee chauff : "));
Serial.print(temperature[1], 2);
Serial.println();
*/
//digitalWrite(relaisTransfo,LOW);
/*
//si la temperature de la resistance > depart pac ou T° resistance > T° ballon bas ,t4=resistance,t1=arrivée pac,t3=ballon bas,t0=depart pac
if (valResistance > 55)//||(temperature[0]+2)) || (temperature[4] > (temperature[3])))
{
digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
}
else if (valResistance < 55)
{
digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
} */
}
[/code]