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

#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[] = "3bb-Wichit";
char pass[] = "0626481214";
int t_slider = 0;
int Value_slider;
int led = D0;
bool lock1 = false;
bool lock2 = false;
BLYNK_WRITE(V1){ 

t_slider = param.asInt();
 Blynk.virtualWrite(V7,t_slider); 
 delay(100);

}
 BLYNK_WRITE(V3) // button ความชื้น
{
   if (param.asInt()==1) { 
        digitalWrite(led, HIGH); 
   }
  if (param.asInt()==0) { 
        digitalWrite(led, LOW); 
   }
}
 BLYNK_WRITE(V2) //button ตั้งเวลา
{
   if (param.asInt()== 1) { 
        digitalWrite(led, HIGH); 
   }
  if (param.asInt()== 0) { 
        digitalWrite(led, LOW); 
   }
}

BLYNK_WRITE(V5)// ตั้งเวลา
{
  if(param.asInt() == 1){
    {   if(lock2 == false)
          digitalWrite(led,HIGH);
          Blynk.virtualWrite(V2,1);
          lock2 = true;
  }
  }
    else
    {
      lock2 = false;
    }
  if(param.asInt() == 0){
    {   if(lock2 == false)
          digitalWrite(led,LOW);
          Blynk.virtualWrite(V2,0);
          lock2 = true;
  }
  }
    else
    {
      lock2 = false;
    }
}
BLYNK_CONNECTED() {
  Blynk.syncAll();
}

void setup()
{
pinMode(led,OUTPUT);
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); 
  if(outputValue >= t_slider)
      {   if(lock1 == false)
          digitalWrite(led,HIGH);
          Blynk.virtualWrite(V3,1);
          lock1 = true;
  }
       else
    {
      lock1 = false;
    }
  if(outputValue <= t_slider)
      {   if(lock1 == false)
          digitalWrite(led,LOW);
          Blynk.virtualWrite(V3,0);
          lock1 = true;
  }
       else
    {
      lock1 = false;
    }

  Blynk.run();
  
}


ยังทํางานชนกันครับ ตั้งเวลาให้เปิดแต่ไปดับเพราะคําสั่งเซนเซอร์

แต่ละ อันคืออะไร อธิบายแยกแยะมาด้วยครับ

#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[] = “3bb-Wichit”;
char pass[] = “0626481214”;
int t_slider = 0;
int Value_slider;
int led = D0;
bool lock1 = false;
bool lock2 = false;
BLYNK_WRITE(V1){ // widget slider

t_slider = param.asInt();
Blynk.virtualWrite(V7,t_slider);
delay(100);

}
BLYNK_WRITE(V3) // button ความชื้น
{
if (param.asInt()==1) {
digitalWrite(led, HIGH);
}
if (param.asInt()==0) {
digitalWrite(led, LOW);
}
}
BLYNK_WRITE(V2) //button ตั้งเวลา
{
if (param.asInt()== 1) {
digitalWrite(led, HIGH);
}
if (param.asInt()== 0) {
digitalWrite(led, LOW);
}
}

BLYNK_WRITE(V5)// ตั้งเวลา
{
if(param.asInt() == 1){ // หาก widget timerส่งค่ามาเป็น1 จะให้ทํางาน
{ if(lock2 == false)
digitalWrite(led,HIGH);
Blynk.virtualWrite(V2,1); // v2คือ wiitget button มีค่าเป็น1
lock2 = true;
}
}
else
{
lock2 = false;
}
if(param.asInt() == 0){ // หากwidgettimer ส่งค่ามาเป็น0จะหยุดการทํางาน
{ if(lock2 == false)
digitalWrite(led,LOW);
Blynk.virtualWrite(V2,0); // v2คือ wiitget button มีค่าเป็น0
lock2 = true;
}
}
else
{
lock2 = false;
}
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}

void setup()
{
pinMode(led,OUTPUT);
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);
if(outputValue >= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งให้ทํางาน
{ if(lock1 == false)
digitalWrite(led,HIGH);
Blynk.virtualWrite(V3,1); // v3คือ wiitget button มีค่าเป็น1
lock1 = true;
}
else
{
lock1 = false;
}
if(outputValue <= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งหยุดให้ทํางาน
{ if(lock1 == false)
digitalWrite(led,LOW);
Blynk.virtualWrite(V3,0); // v3คือ wiitget button มีค่าเป็น0
lock1 = true;
}
else
{
lock1 = false;
}

Blynk.run();

}

กดofแล้วเด้งไปONตอลอด

แคปหน้านี้มาดูครับ หน้าหลักที่เห็นว่าฟิกอะไรไว้บ้าง ไม่งั้นก็เดาอะไรเป็นอะไรไม่ถูก

กด stop แล้วแคปมาครับ

สองปุ่มนี้ไว้ทำอะไร อธิบายหน่อยครับ

เลือกโหมดในการทํางงาน

ถ้าเป็นอย่างนั้นตรงนี้ก็เขียนผิด นะครับ นี้เป็นแค่การสั่งงานให้ led ติด on หรือ off เท่านั้น

ผมจะยกตัวอย่างการเลือกโหลดให้ดู

bool auto_lock = false;
BLYNK_WRITE(V3) // button ความชื้น
{
if (param.asInt()==1) {

   auto_lock = true;

}else {

  auto_lock = false;

           }
     }
}

void loop(){

if(auto_lock == true){

//led on

}else{

//led off

}
}

ตรงนี้จะต้องมีของ button แยกกับ auto คนละชุดเพื่อไม่ให้ทำงานซ้ำซ้อนกัน

#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[] = "3bb-Wichit";
char pass[] = "0626481214";
int t_slider = 0;
int Value_slider;
int led = D0;
bool lock1 = false;
bool lock2 = false;
bool auto_lock = false;
bool manul = false;
BLYNK_WRITE(V1){ 

t_slider = param.asInt();
 Blynk.virtualWrite(V7,t_slider); 
 delay(100);

}
 BLYNK_WRITE(V3) // button ความชื้น
{
if (param.asInt()==1) {auto_lock = true;}
else {manul = false;}

if (param.asInt()==0) {auto_lock = true;}else {auto_lock= false;}
}
 BLYNK_WRITE(V2)// button ตั้งเวลา
{
if (param.asInt()==1) {manul = true;}
else {manul = false;}

if (param.asInt()==0) {manul = true;}else {manul = false;}
     
}
    

BLYNK_WRITE(V5)// ตั้งเวลา
{
if(param.asInt() == 1){ // หาก widget timerส่งค่ามาเป็น1 จะให้ทํางาน
{ if(lock2 == false)
digitalWrite(led,HIGH);
Blynk.virtualWrite(V2,1); // v2คือ wiitget button มีค่าเป็น1
lock2 = true;
}
}
else
{
lock2 = false;
}
if(param.asInt() == 0){ // หากwidgettimer ส่งค่ามาเป็น0จะหยุดการทํางาน
{ if(lock2 == false)
digitalWrite(led,LOW);
Blynk.virtualWrite(V2,0); // v2คือ wiitget button มีค่าเป็น0
lock2 = true;
}
}
else
{
lock2 = false;
}
}
BLYNK_CONNECTED() {
  Blynk.syncAll();
}

void setup()
{
pinMode(led,OUTPUT);
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); 
    if (auto_lock == true){digitalWrite(led,1);} // buttonความชื้น(auto)
  else {digitalWrite(led,0);}
  
  if (manul == true){digitalWrite(led,1);} // button ตั้งเวลา
  else {digitalWrite(led,0);}
    if(outputValue >= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งให้ทํางาน


{ if(lock1 == false)
digitalWrite(led,HIGH);
Blynk.virtualWrite(V3,1); // v3คือ wiitget button มีค่าเป็น1
lock1 = true;
}
else
{
lock1 = false;
}
if(outputValue <= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งหยุดให้ทํางาน
{ if(lock1 == false)
digitalWrite(led,LOW);
Blynk.virtualWrite(V3,0); // v3คือ wiitget button มีค่าเป็น0
lock1 = true;
}
else
{
lock1 = false;
}






    
  Blynk.run();
  
}`Preformatted text`

แบบนี้ไหมคับ

ตังเลือกโหมดไม่ได้คับ พอกดoof เด้ง on ตลอด มันยังทําคําสั่งนี้ตลอด

{ if(lock1 == false)
digitalWrite(led,HIGH);
Blynk.virtualWrite(V3,1); // v3คือ wiitget button มีค่าเป็น1
lock1 = true;
}
else
{
lock1 = false;
}
if(outputValue <= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งหยุดให้ทํางาน
{ if(lock1 == false)
digitalWrite(led,LOW);
Blynk.virtualWrite(V3,0); // v3คือ wiitget button มีค่าเป็น0
lock1 = true;
}
else
{
lock1 = false;
}

ตรงนี้ถูกรึป่าว

ช่วยดูให้หน่อยครับว่าถูกไหม

วางโค้ตเต็มด้วยครับ

#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;
bool lock1 = false;  // ล็อกคําสั่งคามชื้น
bool lock2 = false;  // ล็อกคําสั้งตั้งเวลา

bool auto_lock = false; // ล็อก บัตทอลความชื้น

bool manul = false; // ล็อก บัตทอล ตั้งเวลา

BLYNK_WRITE(V1) {

  t_slider = param.asInt();
  Blynk.virtualWrite(V7, t_slider);
  delay(100);

}
BLYNK_WRITE(V3) // button ความชื้น
{
  if (param.asInt() == 1) {
    auto_lock = true;
  }
  else {
  auto_lock = false;
  }

  if (param.asInt() == 0) {
    auto_lock = true;
  } else {
    auto_lock = false;
  }
}
BLYNK_WRITE(V2)// button ตั้งเวลา
{
  if (param.asInt() == 1) {
    manul = true;
  }
  else {
    manul = false;
  }

  if (param.asInt() == 0) {
    manul = true;
  } else {
    manul = false;
  }

}


BLYNK_WRITE(V5)// ตั้งเวลา
{
  if (param.asInt() == 1) { // หาก widget timerส่งค่ามาเป็น1 จะให้ทํางาน
    { if (lock2 == false)
        digitalWrite(led, HIGH);
      Blynk.virtualWrite(V2, 1); // v2คือ wiitget button มีค่าเป็น1
      lock1 = true;
    }
  }
  else
  {
    lock2 = false;
  }
  if (param.asInt() == 0) { // หากwidgettimer ส่งค่ามาเป็น0จะหยุดการทํางาน
    { if (lock2 == false)
        digitalWrite(led, LOW);
      Blynk.virtualWrite(V2, 0); // v2คือ wiitget button มีค่าเป็น0
      lock2 = true;
    }
  }
  else
  {
    lock2 = false;
  }
}
BLYNK_CONNECTED() {
  Blynk.syncAll();
  digitalWrite(D4,HIGH);
}

void setup()
{
  pinMode(led, OUTPUT);
  digitalWrite(led, HIGH);
  Blynk.begin(auth, ssid, pass);
}

void loop()
{

  sensorValue = analogRead(analogInPin);
  outputValue = map(sensorValue, 0, 1023, 100, 0); //คิดเป็นเปอร์เซ็น
  Blynk.virtualWrite(V0, outputValue);
  if (auto_lock == true) {
    digitalWrite(led, 1); // buttonความชื้น(auto)
  }
  else {
    digitalWrite(led, 0);
  }

  if (manul == true) {
    digitalWrite(led, 1); // button ตั้งเวลา
  }
  else {
    digitalWrite(led, 0);
  }
  
if (outputValue >= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งให้ทํางาน
  { if (lock1 == false)
      digitalWrite(led, HIGH);
    Blynk.virtualWrite(V3, 1); // v3คือ wiitget button มีค่าเป็น1
    lock1 = true;
  }
  else
  {
    lock1 = false;
  }
  if (outputValue <= t_slider) // หากค่าที่อ่านได้จากเซ็นเซอร์น้อยกว่ยกว่าwidget slider จะสั่งหยุดให้ทํางาน
  { if (lock1 == false)
      digitalWrite(led, LOW);
    Blynk.virtualWrite(V3, 0); // v3คือ wiitget button มีค่าเป็น0
    lock1 = true;
  }
  else
  {
    lock1 = false;
  }

  Blynk.run();
}

ขอบคุณกระทู้นี้มากครับ สำหรับเรื่องการแทนค่าที่ผมไม่เข้าใจ ตอนนี้ผมสามารถนำมาประยุคใช้ได้แล้วครับ