ปัญหาเชิงโปรแกรม

ตรงนี้ผิดอยู่นะครับ มันต้องรับค่าจาก slider ก่อน

ต้องแก้เป็นยังไงคับ

D4 คืออะไรครับ

image

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();
  
}

ใข้wedget ตัวนี้คับ

ก็ใช้ได้ครับ อยู่ที่ว่าเราจะต่อ ฮาร์ทแวร์ยังไง วิธีก็คือต่ออนุกรมกัน แต่ปั๊มมันต้องไปต่อผ่าน Relay ก็เท่านั้น

คําสั่งตั้งเวลาตอนนี้หลอดมันติดแปปนึงแล้วก็ดับไปเหมือนมันติดคําสั่งเซนเซอร์อยู่ด้วย ต้องแก้ยังไงคับ

ถ้าใช้ timer ไม่ต้องใส่โค้ตครับ ระบุเป็น D4 ได้เลย

ยังไงหรอคับ

ระบุตรงไหนหรอคับ

ระบุตรงไหนหรอคับเพราะเท่าที่ผมสังเกตุที่มันติดแปปนึงแล้วก็ดับน่าจะเป็นเพราะตอนนั้นคํ่าสั่งของเซ็นเซอร์ใช้ให้ดับด้วย ต้องทําอย่างไรอย่าให้มันทํากันหรอคับ

ตรงเซต v5 ในแอพอะครับ