สอบถามหน่อยครับ! App Blynk
เกี่ยวกับการควบคุมความชื้น
อยากทราบว่าถ้าต้องการให้การทำงานในคำสั่งที่เราต้องการทำงานผ่านการกดปุ่ม button ที่แอป (on/off) ต้องเขียนคำสั่งอะไรเพิ่มมั้งครับ
ตอนนี้ผมเขียนโปรแกรมควบคุมความชื้นผ่านแอปblynk พอถึงค่าที่กำหนดให้แจ้งเตือนเข้า
มือถือ แต่ตอนนี้ยังติดตรงที่ มันทำงานโดยไม่ผ่านการกดปุ่มอยู่ครับ
#include <DHTesp.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
BlynkTimer timer;
DHTesp dht;
WiFiClient client;
#define Pin_DHT22 4
#define RL_01 5
#define RL_02 18
#define RL_03 19
#define RL_04 21
#define RL_05 22
#define RL_06 23
const char *channel_R1 = "RL_01";
const char *channel_R2 = "RL_02";
const char *channel_R3 = "RL_03";
const char *channel_R4 = "RL_04";
const char *channel_R5 = "RL_05";
const char *channel_R6 = "RL_06";
char auth[] = " ";
char ssid[] = " ";
char pass[] = " ";
BLYNK_CONNECTED() {
Blynk.syncAll();}
void setup()
{
pinMode(RL_01, OUTPUT);
pinMode(RL_02, OUTPUT);
pinMode(RL_03, OUTPUT);
pinMode(RL_04, OUTPUT);
pinMode(RL_05, OUTPUT);
pinMode(RL_06, OUTPUT);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass, "blynkfree.info", 8080);
timer.setInterval(10000L, sendTemp);
dht.setup(Pin_DHT22);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{ delay(5000);
Serial.print(".");
}
}
void loop()
{ if (digitalRead(RL_01) == HIGH){DataHum = 62} //ใส่ค่าในxxxเอานะครับ
else if (digitalRead(RL_02) == HIGH){DataHum = 65} //ใส่ค่าในxxxเอานะครับ
else if (digitalRead(RL_03) == HIGH){DataHum = 67}//ใส่ค่าในxxxเอานะครับ
else if (digitalRead(RL_04) == HIGH){DataHum = 69} //ใส่ค่าในxxxเอานะครับ
else if (digitalRead(RL_05) == HIGH){DataHum = 70} //ใส่ค่าในxxxเอานะครับ
else if (digitalRead(RL_06) == HIGH){DataHum = 72}//ใส่ค่าในxxxเอานะครับ
sendTemp(DataHum);
Blynk.run();
timer.run();
}
1 Likes
void Humidity (int DataHum)
{
float humidity = dht.getHumidity();
float temperature = dht.getTemperature();
Serial.print("\nTemperature('C) = "); Serial.print(temperature, 1);
Serial.print("\tHumidity(%) = "); Serial.println(humidity, 1);
Blynk.virtualWrite(V10, temperature);
Blynk.virtualWrite(V11, humidity);
if (humidity >= DataHum)
{ digitalWrite(RL_01, HIGH); }
if (humidity < DataHum)
{ digitalWrite(RL_01, LOW);
Blynk.notify("Hand Washing1 = ผ้าแห้งแล้วจ้า....");
delay(10000);
}
}
1 Likes
ต้องเพิ่มคำสั่งนี้เข้าไปครับอ่านตรงนี้ดู
ในโค้ตยังไม่มีคำสั่ง รับค่า และสางค่าจาก ปุ่มแอพครับ เลยยังไม่ทำงาน แต่ถ้าไม่อยากเขียนโค้ตก็ทำได้ แค่คอนฟิกในแอพไปเลยว่าให้มันเป็น gpio อะไรตาม io ของ esp8266
การ code ผมต้องแก้ยังไงบ้างครับ
แถมหน้าแอพยังไม่ได้ตั้งค่าด้วยว่าจะให้เป็น gpio เลย หรือแบบ Vpin หรือ พินจำลอง
แบบที่ 1 เป็นการส่งคำสั่งตรงเลย กดปุ่มติดปั๊บไม่ต้องเขียนโค้ตใส่เข้าไป
แบบที่ 2 คือ สร้าง พินจำลองเพื่อเอามาคำนวณรูปแบบในโปรแกรมที่เราเขียน ซึ่งต้องมีโค้ตรองรับ
ถ้าไม่ต้องการสั่งงานแบบสับซ้อนอะไรมาก ก็กำหนด เป็นแบบที่ 1 ไปเลยครับ ง่ายสุด ไม่ต้องเขียนโค้ตอะไร
ทำโค้ตให้เป็นฟอร์มด้วยนะครับจะได้ดูง่าย เลือกคุมโค้ตทั้งหมดแล้วกดตรง </>
ด้านบน
ตอนนี้มันส่งค่ากลับมาอัติโนมัติ โดยไม่ผ่านการกดปุ่มเลยครับ
ส่งค่าอะไรครับขยายความหน่อย