ต้องการสั่งงานด้วยปุ่ม button ที่แอป (on/off) ต้องเขียนคำสั่งอะไร เพิ่มมั้งครับ


(Jakkrapan Barbershop) #1

สอบถามหน่อยครับ! App Blynk
เกี่ยวกับการควบคุมความชื้น
อยากทราบว่าถ้าต้องการให้การทำงานในคำสั่งที่เราต้องการทำงานผ่านการกดปุ่ม button ที่แอป (on/off) ต้องเขียนคำสั่งอะไรเพิ่มมั้งครับ
ตอนนี้ผมเขียนโปรแกรมควบคุมความชื้นผ่านแอปblynk พอถึงค่าที่กำหนดให้แจ้งเตือนเข้า
มือถือ แต่ตอนนี้ยังติดตรงที่ มันทำงานโดยไม่ผ่านการกดปุ่มอยู่ครับ

รบกวนผู้รู้ด้วยครับ!


(Jakkrapan Barbershop) #2
#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();
}

(Jakkrapan Barbershop) #3
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);
  }

  
 }

(Permpol Thanapunnamas) #4

ต้องเพิ่มคำสั่งนี้เข้าไปครับอ่านตรงนี้ดู


(Permpol Thanapunnamas) #5

ในโค้ตยังไม่มีคำสั่ง รับค่า และสางค่าจาก ปุ่มแอพครับ เลยยังไม่ทำงาน แต่ถ้าไม่อยากเขียนโค้ตก็ทำได้ แค่คอนฟิกในแอพไปเลยว่าให้มันเป็น gpio อะไรตาม io ของ esp8266


(Jakkrapan Barbershop) #6

การ code ผมต้องแก้ยังไงบ้างครับ


(Permpol Thanapunnamas) #7

แถมหน้าแอพยังไม่ได้ตั้งค่าด้วยว่าจะให้เป็น gpio เลย หรือแบบ Vpin หรือ พินจำลอง

แบบที่ 1 เป็นการส่งคำสั่งตรงเลย กดปุ่มติดปั๊บไม่ต้องเขียนโค้ตใส่เข้าไป

แบบที่ 2 คือ สร้าง พินจำลองเพื่อเอามาคำนวณรูปแบบในโปรแกรมที่เราเขียน ซึ่งต้องมีโค้ตรองรับ


(Permpol Thanapunnamas) #8

ถ้าไม่ต้องการสั่งงานแบบสับซ้อนอะไรมาก ก็กำหนด เป็นแบบที่ 1 ไปเลยครับ ง่ายสุด ไม่ต้องเขียนโค้ตอะไร


(Permpol Thanapunnamas) #9

ทำโค้ตให้เป็นฟอร์มด้วยนะครับจะได้ดูง่าย เลือกคุมโค้ตทั้งหมดแล้วกดตรง </> ด้านบน


(Jakkrapan Barbershop) #10

ตอนนี้มันส่งค่ากลับมาอัติโนมัติ โดยไม่ผ่านการกดปุ่มเลยครับ


(Permpol Thanapunnamas) #12

ส่งค่าอะไรครับขยายความหน่อย