11191
(ณัฐนน รอดรวมมิตร์)
1
ผมต้องการดึงค่าความชื้นกับอุณหะภูมิมาเปรียบเทียบ กับค่าที่กำหนดอ่ะครับ
ยกตัวอย่าง
if ความชื้น<70
{รีเรย์ทำงาน}
else{รีเรย์หยุด}
if อุณหะภูมิ>25
{รีเรย์ทำงาน}
else{รีเรย์หยุด}
ควรเขียนโค้ดแบบไหนดีครับ
โค้ดปจุบัน
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <SimpleTimer.h>
#define DHTPIN D4 // กำหนดขาให้กับอุปกรณ์ตรวจสอบความชื้น DHT11
#define DHTTYPE DHT11
//////////////////////////////////////////จุดที่เพิ่ม
int setTemp;
int setHumid;
BLYNK_WRITE(V4) //temperature slider in app on pin V22
{
setTemp = param.asInt();
}
BLYNK_WRITE(V3) //temperature slider in app on pin V23
{
setHumid = param.asInt();
}
//////////////////////////////////////////
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;
//* **BLYNK TOKEN** //
char auth[] = "XXXXXXXXXXXXXXXX";
char ssid[] = "AndroidAP";
char pass[] = "123654789a";
void setup()
{
Serial.begin(115200);
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void sendSensor()
{
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V2, h);
Serial.println("Humidity: ");
Serial.print(h + String("%"));
Serial.println("Temperature: ");
Serial.print(t + String("c"));
}
void loop()
{
//if(Blynk.connected()) {
Blynk.run();
timer.run();
}
PUYIOT
(อิทธิรงค์ ทองย้อย (ปุ๋ย))
2
ผมพอมีตัวอย่างครับ
if ( t > v6 && t <= v7 ) {
//Blynk.virtualWrite(V17, t);
// Blynk.virtualWrite(V10, 1);
digitalWrite(D7, HIGH);
// led_3.on();
}
else
{
//Blynk.virtualWrite(V17, t);
// Blynk.virtualWrite(V10, 0);
digitalWrite(D7, LOW);
// led_3.off();
}
if ( h > v4 && h <= v5 ) {
//Blynk.virtualWrite(V18, h);
// Blynk.virtualWrite(V10, 1);
digitalWrite(D7, HIGH);
// led_2.on();
}
else
{
// Blynk.virtualWrite(V18, h);
// Blynk.virtualWrite(V10, 0);
digitalWrite(D7, LOW);
//led_2.off();
}
V4, V5, V6 ,V7 แก้ไขเป็นตัวเลขครับ
1 Likes
11191
(ณัฐนน รอดรวมมิตร์)
3
อันนี้เลาแทน h t ได้โดยไม่ต้องเขียนอ่ะไรเพิ่มแล้วใช่ป่าวครับ
Remy_Martin
(Permpol Thanapunnamas)
4
t กับ h รับค่า มาจากส่วนนี้อยู่แล้วครับ เอาไปใช่ได้เลย
11191
(ณัฐนน รอดรวมมิตร์)
5
โค้ดนี้ผมสั่งการให้ รีเลย์ตัว 1 ทำงานเมื่อ t สูงกว่า 25 และ รีเลย์ตัวที่ 2 ทำงานเมื่อ h ต่ำกว่า 70
รบกวนตรวจสอบโค้ดให้หน่อยครับว่าผมเรียงลำดับถูกไหม
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
char auth[] = "1";
char ssid[] = "qqq";
char pass[] = "qqq";
#define DHTPIN D4
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;
int Relay1 = D0;
int Relay2 = D1;
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
{
pinMode(Relay1, OUTPUT);
digitalWrite(Relay1, HIGH);
pinMode(Relay2, OUTPUT);
digitalWrite(Relay2, HIGH);
}
if ( t > 25 ) {
digitalWrite(Relay1, LOW);
}
else
{
digitalWrite(Relay1, HIGH);
}
if ( h < 70 ) {
digitalWrite(Relay2, LOW);
}
else
{
digitalWrite(Relay2, HIGH);
}
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
}
void setup()
{
Serial.begin(115200); // See the connection status in Serial Monitor
Blynk.begin(auth, ssid, pass);
dht.begin();
// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
}
void loop()
{
Blynk.run(); // Initiates Blynk
timer.run(); // Initiates SimpleTimer
}