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

มันไม่ต้องใช้โค้ตครับ แค่ on off

มันให้เลือกขานิ

เลือกD4ตรงเอาพุตหรอคับ

เพราะปัญหาตอนนี้คือ มันทํางานพร้อมกัน2โหมด ส่งผลให้ตั้งเวลาทํางานไม่ได้ เพราะติดคํ่าสั่งของเซนเซอร์

ปกติจะต้องให้ผู้ใช้เลือกนะ ว่าจะให้เป็น แบบ ออโต้ หรือ ทามเมอร์ ถ้าเอามาทำงานร่วมกันก็มั่งครับ ไม่งั้นก็ต้องให้ else ของ sensor ปล่อย off ออกมาแค่ครั้งเดียว

ถ้าผมจะทําโหมด2โหมด แบบออโต้กับทามเมอร์ ผมต้องทําอย่างไรคับ

ตัวอย่างการ lock ลอจิก หาในกระทู้ แจ้งเตือนผ่าน line ดูครับ

ลองเขียนดูแล้วเอามาคุยกันนะครับ

คับขอบคุณคับ

หากระทู้ไม่เจอเลยครับ

เอาคำนี้ไปค้นในนี้ครับ

ไล่อ่านดูจะเห็นว่าเขาติดปัญหาคล้ายๆ เรา และผมแนะนำวิธิใช้ lock ลอจิกให้

ถ้าผมจะทําแบบนี้ได้ไหมคับ ใช้widget button เลือกโหมดเอา แบบว่า หากกดbuttonตัวนี้จะเข้าโหมดนี้และกดbutton อีกตัว จะเลือกแบบตั้งเวลา

sasa
ไม่เจอเลยครับ

ผมจำได้ไม่เปะๆ นะครับ หาก แบบที่หนึ่งไม่เจอเราต้องฝึกประยุกค์ สักนิด นั้นคือทักษะสำคัญในการเขียนโปรแกรมครับ


#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 = D6;
int i;
bool lock1 = false;
bool lock2 = false;
BLYNK_WRITE(V1){ //ควบคุมความชื้น 
  t_slider = param.asInt();
  Blynk.virtualWrite(V7,t_slider); 
  delay(100);
}
BLYNK_WRITE(V3) 
{
   if (param.asInt()==1) { 
        digitalWrite(led, HIGH); 
   }
}

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

  
}

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

1 Likes

เยี่ยมครับ ประมาณนั้น ทดสอบแล้วเป็นไงบ้าง

ยังไม่ได้ทดสอบตอนนี้มาโรงเรียน ไว้ตอนคํ่าตะทดสอบนะคับ

น้องอยู่ระดับชั้นไหนครับ

ช.3 ไฟฟ้าคับ

ทําโปรเจบจบอยู่