Probleme de condition qui n'est pas pris en compte

Fermé
toflfou Messages postés 1317 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 22 janvier 2021 - Modifié par toflfou le 15/02/2017 à 17:50
Bonjour , alors de je vous expliques:
Depuis quelques jours je fais un projet de radiateur contrôler avec un arduino + xbee Hc06 , le capteur DHT11 .
Le but est de faire un "mode automatique (relay1)sur pin 12" avec le dht11 sur pin 8 et relais sur pin 13 ..
j'ai déjà fais l'application android et elle fonctionne parfaitement j'y ai aussi mis la reconnaissance vocal :) ..Bref le problème que je rencontre est que je n'arrive pas a coder le faite que si le relay1 est HIgh alors le dht11 fais son boulot (enfin disons que le programme ne le prend pas en compte , le relais2 pin 13 ne s'active pas quand le Relay1 est HIGH et que t<24)j'ai l’impression que j'ai trop de if .. enfin bref .. ..Si quelqu'un peut m'apporter son aide ce serais formidable.
Bonne journée a tous

Noter que je suis largement débutant en la matière mais passionnés,,



#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT11
const int Relay1 = 12; //led
const int Relay2 = 13; //radiaterur
const int Relay3 = 7; //PIN 5 FOR RELAY #3
const int Relay4 = 6; //PIN 4 FOR RELAY #4
byte serialA;
DHT dht(DHTPIN, DHTTYPE);


void setup(){
Serial.begin(9600);
dht.begin();
pinMode(Relay1,OUTPUT); //SETTING THE OUTPUT FOR RELAY #1
pinMode(Relay2,OUTPUT); //SETTING THE OUTPUT FOR RELAY #2
pinMode(Relay3,OUTPUT); //SETTING THE OUTPUT FOR RELAY #3
pinMode(Relay4,OUTPUT); //SETTING THE OUTPUT FOR RELAY #4
// digitalWrite (Relay1 ,HIGH) ;
}

void loop() {
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = false)
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = true)
float hic = dht.computeHeatIndex(t, h, false);

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");




if (Serial.available()>0) {serialA =Serial.read(); Serial.println(serialA);}
switch(serialA){
//case 49:
//digitalWrite(Relay1, !digitalRead(Relay1));
// break;
//if recieving a 49(ascii for 1) turn on Relay #1

case 50:
digitalWrite(Relay2, !digitalRead(Relay2));

delay(100);
break;
//if recieving a 50(ascii for 2) turn on Relay #2

case 51:
digitalWrite(Relay3, !digitalRead(Relay3));
delay(100);
break;
//if recieving a 51(ascii for 3) turn on Relay #3

case 52:
digitalWrite(Relay1,HIGH);
Serial.print("OKKKKKKKKKKKHIGH");

break;
//if recieving a 52(ascii for 4) turn on Relay #4

case 53:
digitalWrite(Relay1, HIGH);
digitalWrite(Relay2, HIGH);
digitalWrite(Relay3, HIGH);
digitalWrite(Relay4, HIGH);
break;
//if recieving a 53(ascii for 5) turn on ALL Relays

case 54:
digitalWrite(Relay1, LOW);
Serial.print ("OKKKLOW");
digitalWrite(Relay2, LOW);
digitalWrite(Relay3, LOW);
digitalWrite(Relay4, LOW);
break;
//if recieving a 54(ascii for 6) turn OFF ALL Relays

}
if


((Relay2==HIGH)&&(t>26))// Si la temperature est superieur a 23 alors il eteint le relay 2
{
digitalWrite(Relay2,LOW);
delay(20500);
}
if ((Relay1==LOW)&&(t<24))//si la temperature est inferieur a 19 alors il s'allume
{
digitalWrite(Relay2,HIGH);
delay(2500);
}}

Cordialement votre Comme disait M. GABIN :<< il y a une chose que je sais , c est que l'on ne sait jama­is ! >> 

>><gras>Pensez juste a cocher vos problème résolus quand ils le sont (en haut a droite
A voir également: