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

ออ ครับนึกว่าเหมือนกัน

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

จริงๆ ชุดนี้สามารถเอามาใส่ตรง else ได้เหมือนกันนะครับไม่จำเป็นต้องแยกเป็น if ออกมาอีกที

พยายามฝึกนะครับ สำคัญคือต้องคิดเองออกมาก่อน เราจะมีสกิล ติดตัว ติดอกถามได้ผมช่วยแนะให้ครับ

ตอนนี้แยกการทํางานได้แล้วครับ แต่ผมใช้เซิฟเวอร์10ล้านฟรีไม่ได้เลยเด้ง disconnect ตลอด
ต้องแก้ยังไงคับ

วางโค้ตที่ใช้ล่าสุดด้วยครับ ปริ้น error จาก serial ออกมาให้ดูด้วย

#include <SimpleTimer.h>
#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 led = D0;
int t_slider = 0;
int buton = 0;

BLYNK_WRITE(V1) {

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

}


BLYNK_WRITE(V2){
 buton = param.asInt();
 }

BLYNK_WRITE(V3){
    if (param.asInt() == 0) {digitalWrite(led, 1);} 
    if (param.asInt() == 1) {digitalWrite(led, 0);}
    } 

    
    BLYNK_CONNECTED() {
  Blynk.syncAll();
  
}

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



void loop() {
 sensorValue = analogRead(analogInPin);
  outputValue = map(sensorValue, 0, 1023, 100, 0);
   Blynk.virtualWrite(V0, outputValue);
  if (buton == 1) {
      if (outputValue >= t_slider)
            {digitalWrite(led, 1);}
  
      
                 
           if (outputValue <= t_slider)
          
            {digitalWrite(led,0);}}

    
    
  
  Blynk.run();
}


เวลากดเล่นขึ้น oofline แต่ในช่อง6เหลี่ยมขึ้น online

หมายถึงแคปตรง arduino ide มาดูครับว่ามันคอนเน็ตแล้วมัน ขึ้นอะไรมา

อ่านจากกระทู้นี้เลยครับ

เป็นที่ตรงน๊้หรือป่าวครับ ผมว่าไม่ควรมีช่องว่างนะ

1 Likes

โอเคคับได้ละคับ

สรุปหน่อยครับแก้อะไรไป

ผมไม่ได้ไปใส่ เซิฟและพอต ในsetup

void setup() {
Blynk.begin(auth, ssid, pass,“oasiskit.com”, 8080);

1 Likes

ผมจะอัพเดทเว็บ อาจจะเข้าไม่ได้สักแปปนะครับ

1 Likes

เออเร่อไรหรอคับ

ไม่เออเร่อแล้วคับ

ตั้งกระทู้ใหม่เลยครับ