bonjour,
j'ai un problème dans mon code et j'aurai donc besoin de votre aide si possible quand je compile mon programme il me met une erreur dans le mode automatique et je ne comprend pas pourquoi.
je vous remercie par avance
#include <OneWire.h>
#define monte 9
#define descente 8
#define vanne 7
#define LEDVvolet 28
#define LEDRvolet 29
#define LEDVvanne 30
#define LEDVauto 31
#define LEDRauto 32
#define LEDV???
#define LEDR???
#define LEDR???
#define selecmod 12
#define bpvanne 9
#define bpfermevolet 11
#define bpouvertvolet 10
#define ET 0
#define al 1
boolean etatvanne=ET ;
OneWire bus_sonde1(4);
OneWire bus_sonde2(5);
int seuilpiscine = 26;
int seuilext = 27;
int seuilldr = 450;
uint8_t adresse_sonde1[8];
uint8_t adresse_sonde2[8];
void ModeAutomatique();
void OuvrirFermerVolet();
void ChauffagePiscine();
void initialiserSonde1()
{
if (!bus_sonde1.search(adresse_sonde1))
{
Serial.println("Sonde 1 absente");
bus_sonde1.reset_search();
return;
}
bus_sonde1.reset_search();
if (OneWire::crc8(adresse_sonde1, 7) != adresse_sonde1[7])
{
Serial.println("Identifiant sonde 1 invalide");
return;
}
if (adresse_sonde1[0] != 0x28)
{
Serial.println("Le composant sonde 1 n'est pas un DS18B20");
return;
}
Serial.println("Sonde 1 trouvee");
}
void initialiserSonde2()
{
if (!bus_sonde2.search(adresse_sonde2))
{
Serial.println("Sonde 2 absente");
bus_sonde2.reset_search();
return;
}
bus_sonde2.reset_search();
if (OneWire::crc8(adresse_sonde2, 7) != adresse_sonde2[7])
{
Serial.println("Identifiant sonde 2 invalide");
return;
}
if (adresse_sonde2[0] != 0x28)
{
Serial.println("Le composant sonde 2 n'est pas un DS18B20");
return;
}
Serial.println("Sonde 2 trouvee");
}
uint16_t lectureSonde1()
{//retourne la température relevée en seizièmes de degrés
uint8_t data[9];
uint8_t i;
bus_sonde1.reset();
bus_sonde1.select(adresse_sonde1);
bus_sonde1.write(0x44,1);
delay(750);
bus_sonde1.reset();
bus_sonde1.select(adresse_sonde1);
bus_sonde1.write(0xBE);
for (i=0; i<9; i++) data[i] = bus_sonde1.read();
if (OneWire::crc8(data, 8) != data[8])
{
return 0;
}
else
{
return ((uint16_t) data[1] << 8) | data[0];
}
}
uint16_t lectureSonde2()
{//retourne la température relevée en seizièmes de degrés
uint8_t data[9];
uint8_t i;
bus_sonde2.reset();
bus_sonde2.select(adresse_sonde2);
bus_sonde2.write(0x44,1);
delay(750);
bus_sonde2.reset();
bus_sonde2.select(adresse_sonde2);
bus_sonde2.write(0xBE);
for (i=0; i<9; i++) data[i] = bus_sonde2.read();
if (OneWire::crc8(data, 8) != data[8])
{
return 0;
}
else
{
return ((uint16_t) data[1] << 8) | data[0];
}
}
void setup()
{
Serial.begin(9600);
initialiserSonde1();
initialiserSonde2();
pinMode(LEDVvanne, OUTPUT);
pinMode(LEDVvolet, OUTPUT);
pinMode(LEDRvolet, OUTPUT);
pinMode(LEDVauto, OUTPUT);
pinMode(LEDRauto, OUTPUT);
pinMode(vanne,OUTPUT);
pinMode(monte, OUTPUT);
pinMode(descente, OUTPUT);
pinMode(selecmod, INPUT);
pinMode(bpvanne,INPUT);
pinMode(bpfermevolet,INPUT);
pinMode(bpouvertvolet,INPUT);
digitalWrite(bpfermevolet, HIGH);
digitalWrite(bpouvertvolet, HIGH);
}
void loop()
{
if(digitalRead(selecmod)==1)
{
Serial.print("temp piscine: ");
Serial.print((float) 0.0625 * lectureSonde1());
Serial.write('C');
Serial.write(0x03);
Serial.print("temp ext : ");
Serial.print((float) 0.0625 * lectureSonde2());
Serial.write('C');
delay(5000);
Serial.write (0x1B);
Serial.write (0x43);
Serial.write(0x01);
if(!digitalRead(bpvanne))
{
delay(10);
ChauffagePiscine();
}
if(!digitalRead(bpfermevolet))
{
delay(10);
OuvrirFermerVolet();
}
if(!digitalRead(bpouvertvolet))
{
delay(10);
OuvrirFermerVolet();
}
if(!digitalRead(selecmod))
{
delay(10);
ModeAutomatique();
}
}
}
void ChauffagePiscine()
{
if(digitalRead(bpvanne)==LOW)
{
if(etatvanne==ET)
{
digitalWrite(vanne,al);
etatvanne=al;
}
else
{
digitalWrite(vanne,ET);
etatvanne=ET;
}
do{} while (digitalRead(bpvanne)==LOW);
delay(1000);
}
}
void OuvrirFermerVolet()
{
if(!digitalRead(bpouvertvolet))
{
digitalWrite(monte,HIGH);
delay(13000);
digitalWrite(monte,LOW);
}
if(!digitalRead(bpfermevolet))
{
digitalWrite(descente,HIGH);
delay(13000);
digitalWrite(descente,LOW);
}
}
void ModeAutomatique()
{
if (0.0625 * lectureSonde1()> seuilpiscine)
{
digitalWrite(LEDVvanne, HIGH);
digitalWrite(vanne,HIGH);
}
else
{
digitalWrite(LEDVvanne, LOW);
digitalWrite(vanne,LOW);
}
if (0.0625 * lectureSonde2()< seuilext)
{
if (analogRead(A0)>seuilldr)
{
digitalWrite(LEDRvolet, HIGH);
digitalWrite(LEDVvolet, LOW);
digitalWrite(descente,HIGH);
delay(500); // temps de descente ou d'ouverture du volet
digitalWrite(descente,LOW);
}
}
else
{
if (analogRead(A0)<seuilldr)
{
digitalWrite(LEDVvolet, HIGH);
digitalWrite(LEDRvolet, LOW);
digitalWrite(monte,HIGH);
delay(500);// temps de descente ou d'ouverture du volet
digitalWrite(monte,LOW);
}
else
{
digitalWrite(LEDVvolet, LOW);
digitalWrite(LEDRvolet, HIGH);
digitalWrite(descente,HIGH);
delay(500);// temps de descente ou d'ouverture du volet
digitalWrite(descente,LOW);
}
}
}}
else
{
Serial.print("temp piscine: ");
Serial.print((float) 0.0625 * lectureSonde1());
Serial.write('C');
Serial.write(0x03);
Serial.print("temp ext : ");
Serial.print((float) 0.0625 * lectureSonde2());
Serial.write('C');
delay(5000);
Serial.write (0x1B);
Serial.write (0x43);
Serial.write(0x01);
if(digitalRead(bpvanne)==LOW)
{
if(etatvanne==ET)
{
digitalWrite(vanne,al);
etatvanne=al;
}
else
{
digitalWrite(vanne,ET);
etatvanne=ET;
}
do{} while (digitalRead(bpvanne)==LOW);
delay(1000);
}
if(!digitalRead(bpouvertvolet))
{
digitalWrite(monte,HIGH);
delay(13000);
digitalWrite(monte,LOW);
}
if(!digitalRead(bpfermevolet))
{
digitalWrite(descente,HIGH);
delay(13000);
digitalWrite(descente,LOW);
}
}
}