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 ครั้ง หรอ
ได้เเล้วครับขอบคุณมากครับ
เยี่ยมเลยครับ อัพเดทคำตอบให้หน่อยครับ
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 ออกไม่หลุดเลย ครับ งง มากครับตอนนี้
เดาว่าคงไปเจอ WDT แน่ๆ
มีตอนหลุดไหม
ถ้ามีการกำหนดให้ มีการทำงาน วน ลูปใน while ยังไงก็หลุด เพราะ ระบบมันต้องรีคำสั่ง เชื่่อม WiFi ตลอดเวลา หากมันไปทำงานส่วนไหนนานไป มันก็จะรีเซต เพื่อให้มีการ WiFi ให้ได้