Esp8266 อ่านค่าเเรงดันจาก

sensor ตัวนี้ ถ้าใช้กับตัวesp8266 เพื่ออ่านค่าลมว่ามีในท่อหรือป่าว เเละเเสดงOUTPUT ออกมาให้รีเลย์ทำงานผมต้องเริ่มเขียนโค้ดอย่างไรครับ

อันนี้ผม ว่าใช้ AnalogRead อ่านมาก็น่าจะออกแล้วนะครับ แล้วเอามาเทียบกับ datasheet อีกที

มีตัวอย่าง code ไหมครับ อ่านเเล้วสั่ง output ทำงาน

มีตัวเซนเซอร์ หรือยังครับ

ผมใช้ ตัวVR จำลอง อยู่ครับตอนนี้

ภาพ

const float OffSet = 0.483 ;

float V, P;

void setup()
{
Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
Serial.println("/** Water pressure sensor demo **/");
}
void loop()
{
//Connect sensor to Analog 0
V = analogRead(0) * 5.00 / 1024; //Sensor output voltage
P = (V - OffSet) * 400; //Calculate water pressure

Serial.print("Voltage:");
Serial.print(V, 3);
Serial.println("V");

Serial.print(" Pressure:");
Serial.print(P, 1);
Serial.println(" KPa");
Serial.println();

delay(500);
}
const int LED = D0;
const int LED2 = D4;

void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
   digitalWrite(LED, HIGH);
  digitalWrite(LED2, HIGH);
Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
Serial.println("/** Water pressure sensor demo **/");
}
void loop()
{
int V= analogRead(A0);


if (V>100)

 for (int k=0;k<5;k++)
{
  digitalWrite(LED2,LOW);
   delay(200);
  digitalWrite(LED2, HIGH);
    delay(250);
  
}
else

{
  
   digitalWrite(LED2,HIGH);
   
}

delay(500);
}

คอนนี้LED กระพริบรัวเลยครับถ้าผมต้องการให้กระพริบเเค่ 5 ครั้งต้องทำอย่างไรครับ

คือถ้าค่าเกิน 100 ให้กระพริบแค่ 5 ครั้ง หรอ

ได้เเล้วครับขอบคุณมากครับ :rofl:

เยี่ยมเลยครับ อัพเดทคำตอบให้หน่อยครับ

const int LED = D0;
const int LED2 = D4;
#define BLYNK_PRINT Serial
#include <TridentTD_LineNotify.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define SSID        "TFELECTRONIC 1"      // บรรทัดที่ 11 ให้ใส่ ชื่อ Wifi ที่จะเชื่อมต่อ
#define PASSWORD    "091238tunyok"     // บรรทัดที่ 12 ใส่ รหัส Wifi
#define LINE_TOKEN  "H7mP2d1TStobjCWNAZZet10IXMgadhycs1uFNESo3sB"   // บรรทัดที่ 13 ใส่ รหัส TOKEN ที่ได้มาจากข้างบน
WidgetBridge bridge1(V11);
// token ,wifi user ,wifi password
char auth[] = "SBfhHWVBZ-YpKBsyQTZFVV3kw8ch9L3X";
char ssid[] = "TFELECTRONIC 1";
char pass[] = "091238tunyok";
char server[] = "oasiskit.com";
int port = 8080;
WidgetLED Ga(V6);
WidgetLED led1(V7);
WidgetLED led2(V8);

BlynkTimer timer;

BLYNK_CONNECTED() {
  delay(1000);
   bridge1.setAuthToken("ERt7aqnhXZ3asuMYkqDVZ-XGdiNJxd2J"); // token rx ตัวรับ
  Blynk.syncAll();
}
 
void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
   digitalWrite(LED, HIGH);
  digitalWrite(LED2,HIGH);
Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
Serial.println("/** Water pressure sensor demo **/");
Serial.println();
  Serial.println(LINE.getVersion());
  /////BLYNK
 Blynk.begin(auth, ssid, pass, "oasiskit.com", 8080);
 
 
  /////LINE NOFITY
  WiFi.begin(SSID, PASSWORD);
  Serial.printf("WiFi connecting to %s\n",  SSID);
  while (WiFi.status() != WL_CONNECTED) 
  {
    Serial.print(".");
    delay(400);
  }
  Serial.printf("\nWiFi connected\nIP : ");
  Serial.println(WiFi.localIP());

  // กำหนด Line Token
  LINE.setToken(LINE_TOKEN);

}
void loop()
{
  

 delay(100);
   
int V= analogRead(A0);
Blynk.virtualWrite(V1, V);
 Serial.println(V);
 delay(500);
 if(V<199)
 {
  led2.on();  // LED เเสองผลในเเอป
  led1.on();  // LED เเสองผลในเเอป
    digitalWrite(LED2,HIGH);
     digitalWrite(LED,HIGH);
    

     
 }


if(V>200&&V<499) ///ค่าอยู่ระหว่าง
 {
  led2.on();  // LED เเสองผลในเเอป
  led1.off();  // LED เเสองผลในเเอป
   delay(100);
   Serial.println("ออกซิเจนน้อย");
   digitalWrite(LED,HIGH);
   for (int k=0;k<1;k++)

 {
    LINE.notify("เออกซิเจนน้อย");
        delay(500);
 }
 do
        
        {
         
     
       
        digitalWrite(LED2,LOW);
        delay(100);
        Serial.println("ออกซิเจนน้อย2");
        Serial.println(V);
        delay(100);

        }while(analogRead(0)<499);  ///ถ้าค่ามากกว่า 
           delay(100);
 }


 if(V>500) ///ค่าอยู่ระหว่าง
 { 
    delay(100);
    led2.off();  // LED เเสองผลในเเอป
    led1.on();  // LED เเสองผลในเเอป
   Serial.println("ระดับออกซิเจนปกติ");
   digitalWrite(LED2,HIGH);
   for (int k=0;k<1;k++)

 {
  LINE.notify("เครื่องปั้มทำงานปกติ"); 
      delay(500);
 }
 do
        
        {
         
     
        digitalWrite(LED,LOW);
        delay(100);
        
        Serial.println("ระดับออกซิเจนปกติ");
        Serial.println(V);
        delay(100);

        }while(analogRead(0)>500);  ///ถ้าค่ามากกว่า 
           delay(100);
 }
 else 
{
 digitalWrite(LED2,HIGH);
     digitalWrite(LED,HIGH); 
}
 timer.run();
 Blynk.run();
}

ปัญหาตอนนี้คือ nodemcu กับ blynk ต่อซักพักเเล้วหลุดครับ

จังหวะที่หลุด ดูใน serial มันขึ้นอะไรไหม

ถ้า ผมเอา do while ออกไม่หลุดเลย ครับ งง มากครับตอนนี้

ใน serial monitor ไม่ขึ้นอะไรเลยครับ

เดาว่าคงไปเจอ WDT แน่ๆ

งงมากๆๆ ครับ

มีตอนหลุดไหม

ถ้ามีการกำหนดให้ มีการทำงาน วน ลูปใน while ยังไงก็หลุด เพราะ ระบบมันต้องรีคำสั่ง เชื่่อม WiFi ตลอดเวลา หากมันไปทำงานส่วนไหนนานไป มันก็จะรีเซต เพื่อให้มีการ WiFi ให้ได้