ตรงนี้ผิดอยู่นะครับ มันต้องรับค่าจาก slider ก่อน
ต้องแก้เป็นยังไงคับ
D4 คืออะไรครับ
D4คือ ledในบอร์ด
เอาส่วนที่จะให้ทำงานเป็น output คือ D4 หรอ
คับ เหมือนว่าถ้าความชื้นเท่านี้จะให้หลอดติด
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
int sensorValue = 0; //ตัวแปรค่า Analog
int outputValue = 0; // ตัวแปรสำหรับ Map เพื่อคิด %
const int analogInPin = A0;
char auth[] = " vrUsz_PiEoHTQN3nfrY6gZI9jJBpXnis";
char ssid[] = "iPhone";
char pass[] = "12345678";
int t_slider = 0;
int Value_slider;
BLYNK_WRITE(V1){ //ควบคุมความชื้น //ยังติดปัญหา
t_slider = param.asInt();
Serial.printIn(t_slider);
}
BLYNK_WRITE(V5)// ตั้งเวลา
{
if(param.asInt() == 0)
{
digitalWrite(D4, HIGH); // เปิด
}
if(param.asInt() == 1)
{
digitalWrite(D4, LOW); //ปิด
}
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void setup()
{
Serial.begin(9600);
pinMode(D4,OUTPUT);
digitalWrite(D4, HIGH);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023,100,0); //คิดเป็นเปอร์เซ็น
Blynk.virtualWrite(V0,outputValue);
Blynk.run();
if(outputValue >= t_slider ){ //ถ้าค่าที่อ่านได้จาก เซ็นเซอร์ มากกว่าหรือเท่ากับ slider ให้ D4 ทำงาน
digitalWrite(D4, HIGH);
Serial.print('ON');
}else{
digitalWrite(D4, LOW);
Serial.print('OFF');
}
}
ใช้ display แสดงค่าที่ปรับแทนครับตัด printIn ออกไปเลย
ตัวอย่าง
BLYNK_WRITE(V1){ //ควบคุมความชื้น //ยังติดปัญหา
t_slider = param.asInt();
Blynk.virtualWrite(V7,t_slider);
delay(100);
}
แต่D4ยังไม่ทํางานคับ
ตอนนี้ได้แล้วแต่ทําไม่เวลากับความชื้นใช้ขาหลอดเดียวกันไม่ได้หรอคับเพราะปั๊มนํ้าผมใช้ตัวเดียว
ตอนนี้ควบคุมความชื้นได้แล้วคับแต่ผมจะให้ตั้งเวลาด้วยแต่ผมจะใช้หลอดเดียวกับตัวควบคุมความชื้นผมต้องเขียนโค้ดยังไงคับตอนนี้ใช้หลอดเดียวกันไม่ได้
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
int sensorValue = 0; //ตัวแปรค่า Analog
int outputValue = 0; // ตัวแปรสำหรับ Map เพื่อคิด %
const int analogInPin = A0;
char auth[] = " vrUsz_PiEoHTQN3nfrY6gZI9jJBpXnis";
char ssid[] = "iPhone";
char pass[] = "12345678";
int t_slider = 0;
int Value_slider;
int led = D0;
BLYNK_WRITE(V1){ //ควบคุมความชื้น
t_slider = param.asInt();
Blynk.virtualWrite(V7,t_slider);
delay(100);
}
BLYNK_WRITE(V5)// ตั้งเวลาติดปัญหาควบคุมหลอดเดียวกับหลอดเซ็นเซอร์ไม่ได้
{
if(param.asInt() == 0)
{
digitalWrite(led, HIGH); // เปิด
}
if(param.asInt() == 1)
{
digitalWrite(led, LOW); //ปิด
}
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void setup()
{
pinMode(led,OUTPUT);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 0, 1023,100,0); //คิดเป็นเปอร์เซ็น
Blynk.virtualWrite(V0,outputValue);
if(outputValue >= t_slider ){ //ถ้าค่าที่อ่านได้จาก เซ็นเซอร์ มากกว่าหรือเท่ากับ slider ให้ D4 ทำงาน
digitalWrite(led, HIGH);
Serial.print('ON');}
if (outputValue < t_slider){digitalWrite(led,LOW);}
Blynk.run();
}
ก็ใช้ได้ครับ อยู่ที่ว่าเราจะต่อ ฮาร์ทแวร์ยังไง วิธีก็คือต่ออนุกรมกัน แต่ปั๊มมันต้องไปต่อผ่าน Relay ก็เท่านั้น
คําสั่งตั้งเวลาตอนนี้หลอดมันติดแปปนึงแล้วก็ดับไปเหมือนมันติดคําสั่งเซนเซอร์อยู่ด้วย ต้องแก้ยังไงคับ
ยังไงหรอคับ
ระบุตรงไหนหรอคับ
ระบุตรงไหนหรอคับเพราะเท่าที่ผมสังเกตุที่มันติดแปปนึงแล้วก็ดับน่าจะเป็นเพราะตอนนั้นคํ่าสั่งของเซ็นเซอร์ใช้ให้ดับด้วย ต้องทําอย่างไรอย่าให้มันทํากันหรอคับ
ตรงเซต v5 ในแอพอะครับ