Blynk slider bridge ไม่ทำงาน

soi senser วัดค่าความชึ้นแล้ว ถ้าค่าตำกว่าที่ตั้งไว้ slider ให้ esp8266 ที่เป็น relay ทำงาน ที่ขา 4
หมายเหตุ bridge สามารถส่งค่าไป control relay ผ่าน blynk bridge ได้ แต่ถ้าใช้เงื่อนไข บน silder ไม่สามารถทำงานได้

#include <BlynkSimpleEsp8266.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>

char auth1[] ="xxxxx";  //token soi to main
char remote[] ="xx";  //relay

char ssid[] = "zz";  //ชื่อ wifi
char pass[] = "zzzz";  //รหัส wifi
char server[] = "zzzzz";

WidgetBridge bridge1(0); 


const int  analogInPin = A0;
int sensorValue = 0;
int outputValue = 0;
int soi_auto = 0;

//ส่งค่าขึ้น soi ขั้น blynk 
void moisture(){
  int value = analogRead(A0);
  value = map(value, 1023, 0, 0, 100);
  Blynk.virtualWrite(V0, value);
  Serial.print(value);
  }

// silder เป็น V5
BLYNK_WRITE(V5)
{
    soi_auto = param.asInt();
  }
void setup() {
  Serial.begin (9600);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }
  sensorValue = analogRead(analogInPin);
  Serial.print("sensorValue = ");
  Serial.println(sensorValue);
  outputValue = map(sensorValue, 0, 1023, 100, 0);
  Serial.print("Soil Moisture = ");
  Serial.print(outputValue);
  Serial.print(" %");
// กำหนดเงืิอนไข 
  if (outputValue > soi_auto){
      bridge1.digitalWrite(4, LOW);
    }

  else {
      bridge1.digitalWrite(4, HIGH);
    }
}

// test กดปุ่มส่งค่าไปยัง esp relay 
BLYNK_WRITE(V6) {
  int a = param.asInt();
  if (a == 0) {
    bridge1.digitalWrite(4, LOW);
  } else {
    bridge1.digitalWrite(4, HIGH);
  }
}
void loop() {
  Blynk.run();
  moisture();
}

แก้ไขได้แล้วครับ เอา code ไปไว้ในส่วนของ void loop

sensorValue = analogRead(analogInPin);
Serial.print("sensorValue = ");
Serial.println(sensorValue);
outputValue = map(sensorValue, 0, 1023, 100, 0);
Serial.print(“Soil Moisture = “);
Serial.print(outputValue);
Serial.print(” %”);
// กำหนดเงืิอนไข
if (outputValue > soi_auto){
bridge1.digitalWrite(4, LOW);
}

else {
bridge1.digitalWrite(4, HIGH);
}
1 Likes

มีอีกคำถาม ถ้าจะสั่งให้ led.on led.off ในแอฟ blynk ของตัว relay ทำงานด้วยต้องใช้คำสั่งอะไร

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

WidgetLED led1(V1);


void loop() {


    if(digitalRead(Button1) == false){
    led1.off();
   digitalWrite(Relay1, LOW);
  }else{
    led1.on();
    digitalWrite(Relay1, HIGH);
  }

}

ต้องมี bridge1 ด้วยหรือเปล่าครับ

    if(digitalRead(Button1) == false){
    bridge1.led1.off();
   digitalWrite(Relay1, LOW);
  }else{
    bridge1.led1.on();
    digitalWrite(Relay1, HIGH);

ถ้าต้องการสั่งข้ามกันก็ต้องมีครับ แต่ถ้าสั่งในตัวเองก็ไม่ต้อง