#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL69NqzNau4"
#define BLYNK_TEMPLATE_NAME "muchroom"
#define BLYNK_AUTH_TOKEN "b4pSTHeUM7EokPGyaYLqgizTA7QeBZYd"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
int button_pin = 2;
bool button_press = false;
int menu = 0;
const int trigPin = 26;//ประกาศตัวแปร
const int echoPin = 27;//const ค่าคงที่
long duration;//ประกาศตัวแปร long จำนวนทศนิยม
int distance;//ประกาศตัวแปรสำหรับเก็บระยะห่าง
#include <LiquidCrystal_I2C.h>
#include <DHTesp.h> //สำหรับ DHT22
const int DHT_PIN = 15;//สำหรับ DHT22
DHTesp dhtSensor; //สำหรับ DHT22
char auth[] = BLYNK_AUTH_TOKEN; //เก็บ token
char ssid[] = "Wokwi-GUEST"; //ไวไฟจำลองของ wokwi
char pass[] = "";
int RelayA = 18;
#define ULT_T 26
#define ULE_E 27
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
float cm;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(trigPin, OUTPUT);//เรียกใช้ขา D26 เป็น output
pinMode(echoPin, INPUT);//เรียกใช้ขา D26 เป็น input
lcd.begin(20, 4);
lcd.print("Hello World!");
Serial.println("Hello, Khonro");
pinMode(button_pin, INPUT);
Blynk.begin(auth, ssid, pass);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //สำหรับ
pinMode(RelayA, OUTPUT);
digitalWrite(RelayA, LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hi");
}
BLYNK_WRITE(V3)
{
if(param.asInt() == 1){
digitalWrite(RelayA, HIGH);
}else{
digitalWrite(RelayA, LOW);
}
}
void loop() {
digitalWrite(trigPin, LOW);//ไม่ยิงคลื่น
delayMicroseconds(2);//0.000002
digitalWrite(trigPin, HIGH);//ยิงคลื่น
delayMicroseconds(10);//0.0000010
digitalWrite(trigPin, LOW);//ไม่ยิงคลื่น
duration = pulseIn(echoPin, HIGH);//รับคลื่นเป็น pulse
distance = duration * 0.034 / 2;//แปลงเป็นระยะห่าง
Serial.println("cm.");//แสดงข้อความบน Serialmonitor
Serial.print(distance);//แสดงระยะห่างพร้อมขึ้นบรรทักใหม่
Serial.println("HBD PLOY HBD NONNY");//แสดงข้อความบน Serialmonitor
Serial.print(distance);//แสดงระยะห่างพร้อมขึ้นบรรทักใหม่
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("distance: ");
Serial.println(distance);
Serial.println("%");
Serial.println("---");
lcd.setCursor(0, 0);
lcd.print("Temp: " + String(data.temperature, 2) + "°C");
lcd.setCursor(0, 1);
lcd.print("Humidity: " + String(data.humidity, 1) + "%");
lcd.setCursor(0, 2);
lcd.print("distance: " );
lcd.print(distance);
lcd.print("%");
int button_state = digitalRead(button_pin);
if (button_state == HIGH && !button_press) {
delay(50);
if (button_state == HIGH) {
button_press = true;
menu++;
if (menu > 3) {
menu = 1;
}
Serial.print("menu : ");
Serial.println(menu);
if (menu == 1) {
lcd.setCursor(0, 0);
lcd.print("Job2-Button");
Serial.println("Job2-Button");
lcd.setCursor(0, 1);
lcd.print("Temp: " + String(data.temperature, 2) + "C ");
Serial.println("Temp: " + String(data.temperature, 2) + "C");
} else if (menu == 2) {
lcd.setCursor(0, 0);
lcd.print("Job2-Button");
Serial.println("Job2-Button");
lcd.setCursor(0, 1);
lcd.print("Humidity: " + String(data.humidity, 1) + "% ");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
}
}
}
delay(200);
Blynk.run();
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
Blynk.virtualWrite(V0,String(data.temperature, 15));
Blynk.virtualWrite(V1,String(data.humidity, 15));
Blynk.virtualWrite(V2,(distance));
}