ช่วยแนะนำวิธีเขียน กำหนดค่าการทำงาน ตวามชื้น+อุณหภูมิ ผ่าน slider blynk

ตอนนี้ผมทำได้แค่ ส่งค่า Humidity+Temperature ไปที่หน้าจอ lcd กับ Gauge ของโปรแกรม blynk สิ่งทีผมต้องการคือ กำหนดค่า min-max การทำงานของค่า Humidity+Temperature ผ่าน slider ของโปรแกรม blynk แล้วให้ค่า min-maxไปออกที่หน้าจอ lcd ด้วยครับ

อันนี้คือโค้ดที่ผมใช้อยู่ครับ



#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
SimpleTimer timer;


#include "DHT.h"
#define DHTPIN D7 
#define DHTTYPE DHT21
DHT dht(DHTPIN, DHTTYPE);


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);


char auth[] = "**********";
char ssid[] = "********";
char pass[] = "********";


void sendSensor ()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite (V5, h);
Blynk.virtualWrite (V6, t);
Serial.print ("Temp =");
Serial.print (h);
Serial.print ("Humi =");
Serial.print (t);
}




void setup()
{

Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
Serial.begin(9600); 
lcd.begin();
Blynk.begin(auth, "********", "**********");
timer.setInterval(1000L, sendSensor);


}

void loop() {
  

float h = dht.readHumidity();
float t = dht.readTemperature();

lcd.begin();

 lcd.setCursor(0,0); 
 lcd.print("Humidity   =");
 lcd.setCursor(13,0); 
 lcd.print(h);
 lcd.setCursor(19,0); 
 lcd.print("%");
 
 lcd.setCursor(0,1); 
 lcd.print("Temperature=");
 lcd.setCursor(13,1); 
 lcd.print(t);
 lcd.setCursor(19,1); 
 lcd.print("C");
 
 lcd.setCursor(0,2); 
 lcd.print("Set-H      =");
 lcd.setCursor(19,2); 
 lcd.print("%");
 
 lcd.setCursor(0,3);
 lcd.print("Set-T      =");
 lcd.setCursor(19,3); 
 lcd.print("C");
 
 delay(500);

 Blynk.run();
 timer.run();
}


ขออภัยที่ตอบช้านะครับ อันนี้ตัวอย่างเบื้องต้นลองไปประยุคต์ดู ติดตรงไหนเอามาคุยกันครับ

นี้เป็น I/O ที่เราจะใช้ กำหนดเป็น 14 ให้เป็น Output ออกมาจากบอร์ด

กดหนดใน void setup()

pinMode(14, OUTPUT);

กรณีที่ 1 เราต้องการจ่ายค่า output ออกมาทาง pin 14 โดยตรง ให้กำหนดแบบนี้

เราปรับ Slider เท่าไหร่มันก็จะออกมาตามนั้นเลย ไม่ต้องเขียนโค้ตรองรับ

กรณีที่ 2 กำหนดแบบ Virtual Pins ที่ V4 คือไปผ่าน I/O ภายในอีกที เหมาะสำหรับ การนำไปเข้าเงื่อนไข ที่ซับซ้อน ต้องมีโค้ตรองรับ

ภาพ

ใส่โค้ตนี้ลงไปนอก void loop()

BLYNK_WRITE(V4){  
  int value = param.asInt(); 
  analogWrite(14, value);  
}

ไม่ค่อยเข้าใจเท่าไหร่เลยครับ


คือตอนนี้ผมกำลังทำโปรเจคตามคลิปนี้ ซึ่งเหลือแค่ตัว Slider ทำให้มันกำหนดค่าการทำงานอะครับ ช่วยแนะนำทีครับ

ลองใส่โค้ตที่แนะนำไปดู รึยังครับ

ลองใช่แบบที่2แล้วครับ อยากรู้ ว่ามันใช่ร่วมกับ if-else ได้มั้ยครับ เพราะผมอยากจะเอาตัวค่าของ Slider มาเป็นตัวกำหนด การทำงานของ if-else อะครับ

เอาตัวแปรนี้ไปไว้ใน void loop เข้าเงื่อนไขได้เลยครับ

ภาพ


ต้องทำไงต่อครับ

ประกาศตัวแปรนอก ฟังก์ชันครับ ค่อยเอาตัวแปรมาใช้

ผมลองประกาศแค่ int value; รันผ่านแต่ขึ้น 0 ครับ

การประกาศค่าถูกแล้วครับ แต่ใส่ให้มันรับค่าในฟังก์ชันด้วย ไม่งั้นมันก็เหมือนว่าเราไม่ได้ใช้ ตัวแปรนี้รับค่าอะไรเลย

ได้แล้วครับ ขอบคุณมากครับ แล้วในคลิป ตอน 5:56 คือต้องเพิ่มโค้ดอะไรอีกหรอครับ มันถึง จดจำค่า หลังจากปิด-เปิดเครื่อง ครับ?

ศึกษาเรื่อง eeprom ครับ

รบกวนขอโค้ตมาเพื่อมาศึกษาครับ ขอบคุณครับ