Close

Odpověď na: RHT 03 – měření teploty a vlhkosti vzduchu

Úvodní stránka Fórum Hardware Senzory RHT 03 – měření teploty a vlhkosti vzduchu Odpověď na: RHT 03 – měření teploty a vlhkosti vzduchu

#2712
tom.vitek
Účastník

Zdravím, mám tu prosím další problém se kterým si nevím rady:
V tomto programu je ovládání výstupního relé pomocí teploty – funguje samo automaticky
a dále je tu, že když sepnu tlačítko tak by se mělo sepnout i relé. A tady je ten kamen urazu po nahraní teplota automaticky řidí relé, ale když manualně zmačknu tlačítko abych seplo relé,když není seplé tak tato funkce nefunguje. Myslím že chyba bude třeba v rozmístění dané části programu nebo takoveho něco.

Je možné že když jsou 2 IF v programu tak jedno program bere jako to hlavní a druhé podřadné?

#include <DHT.h>
#define DHT1PIN 7 //teplota
#define DHT2PIN 6 // teplota 2
#define DHT1TYPE DHT22 //definuje typ senzoru
#define DHT2TYPE DHT22 //definuje typ senzoru
DHT dht1(DHT1PIN, DHT1TYPE); //definuje typ senzoru
DHT dht2(DHT2PIN, DHT2TYPE); //definuje typ senzoru
const int buttonPin1 = 50; // kam je připojeno tlačítko
const int relePin1 = 30; // kam je připojeno rele
int buttonState = 0;

void setup() {
Serial.begin(9600);
pinMode(relePin1, OUTPUT);
pinMode(buttonPin1,INPUT);
dht1.begin();
dht2.begin();
}

void loop() {
buttonState = digitalRead(buttonPin1);
if (buttonState == HIGH) { // zapneme relé:
digitalWrite(relePin1, LOW);
}
else {
digitalWrite(relePin1, HIGH);
} // vypneme relé:
//automatické ovladani pomoci teploty
if (dht1.readTemperature() >= 30) {
digitalWrite(relePin1, LOW);
}else{
if (dht1.readTemperature() <= 28)
digitalWrite(relePin1, HIGH);
}
//snímani teploty
void teplotavlhkost();
delay(4000);
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
if (isnan(t1) || isnan(h1)) {
Serial.println(„Failed to read from DHT #1“);
}
if (isnan(t2) || isnan(h2)) {
Serial.println(„Failed to read from DHT #2“);
}
Serial.print(„T1:“);
Serial.print(dht1.readTemperature(),1);
Serial.print((char)223); // vypíše znak ° na displej
Serial.print(„C „);
}

Přejít k navigační liště