ตอนแรกยังไม่สั่งให้รีเลย์ทำงานค่ามันยังแสดงอยู่ แต่พอเพิ่มคำสั่งให้รีเลย์ทำงานด้วยก็ไม่แสดงค่าอีกเลยค่ะ
วางโค้ตก่อนใส่กับหลังใส่มาดูหน่อย
อันนี้เป็นโค้ดที่รันแล้วค่าไม่ออก ที่บลิ้งค์แต่เชื่อมต่อบลิ้งค์ได้ ตัวรีเลย์ทำงานตลอดเวลา ไม่ทำตามคำสั่ง
ไม่เชิงว่าเกี่ยวกับรีเลย์ค่ะ ตัวโค้ดที่มีปัญหาจะเป็นตัว Brynk.vitualWriteกับWidgetLCD ต้องเลือกใส่ตัวใดตัวนึง ถ้าใส่พร้อมกันค่าจไม่ออกค่ะ ไม่รู้เป็นเพราะอะไร
S1[3] คือค่าหรือตัวดำเนินการ อะไร ครับ
เป็นค่าที่ได้รับจาก myserial ค่ะ ค่าจากการทำงานรับส่งของตัวมอเตอร์ ถ้าตามที่เข้าใจนะคะ ไม่ค่อยเข้าใจการทำงานของตัวเซ็นเซอร์เท่าไหร่เหมือนกัน
วางโค้ตนั้น เต็มๆ หน่อยครับ ผมอ่านยากมาก ดูภาพรวมไม่ได้
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLuJkZnfoS"
#define BLYNK_DEVICE_NAME "Autometic pump"
#define BLYNK_AUTH_TOKEN "UPG49bfoFyJP7R35B6mJAdrtnEkV6O9u"
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(D5,D6);
unsigned char S1[4]={};
int i,SensorMM,sum,SensorCM,Inch,Approx,Distance;
const int relay = D7;
char auth[] = "UPG49bfoFyJP7R35B6mJAdrtnEkV6O9u";
char ssid[] = "EEE";
char pass[] = "ern12112542";
WidgetLCD LCD(V0);
WidgetLED PUMP(V1);
void setup()
{
pinMode(relay, OUTPUT);
Serial.begin(57600);
mySerial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void sendsensor()
{
do
{
for(i=0;i<4;i++)
{
S1[i]= mySerial.read();
}
}
while(mySerial.read()==0xff);
mySerial.flush();
if(S1[0]==0xff)
{
sum=(S1[0]+S1[1]+S1[2])&0x00FF;
if(sum==S1[3])
{
SensorMM=(S1[1]<<8)+S1[2];
if(SensorMM>280)
{
SensorCM=SensorMM/10;
Inch=SensorCM/2.54;
Approx = (int)(Inch+0.5);
///Distance = Approx*2.54;
Serial.print("Distance ");
Serial.print( Approx*2.54);
Serial.println(" CM");
//delay(100);
}
else
{
Serial.println("Too Close");
}
}
else Serial.println("ERROR");
}
Blynk.virtualWrite(V2, Distance);
delay(100);
}
void Pump()
{
sendsensor();
if( Approx*2.54 >100)
{
digitalWrite(relay, LOW);
LCD.print(0,0,"Water pump OFF");
PUMP.off();
}
else if( Approx*2.54 <=50)
{
digitalWrite(relay, HIGH);
LCD.print(0,0,"Water pump ON");
PUMP.on();
}
}
void loop()
{
Pump();
Blynk.run();
}
แสดงว่าการต่อมีปัญหาหรือไม่ มันขึ้น ERROR ตลอด มันเชื่อมรับส่งข้อมูลไม่ได้
แถมใช้ while ด้วยมันอ่านไม่ได้มันก็วนอยู่แบบนั้น ไม่ทำอย่างอื่นเลย
while(mySerial.read()==0xff);
ค่าERROR บางทีก็ไม่ขึ้นเลยค่ะ
เบื้องต้นลองตั้งเวลาแยกส่วนการทำงานดูก่อนครับตามตัวอย่างนี้ เนื่องจากเวลาโค้ตยาวและนานเกิน ถ้าเรียงการทำงานไปเรื่อยๆ แต่การทำแบบนี้มันทำให้ไม่ต้องรอกัน
ขอบคุณค่ะ เดี๋ยวจะลองดูค่ะ