3กค65
ผมเห็นแบบนี้ตลอด เมื่อเทียบของจริง
ส่วนถูกบคือถังบนและไก่โร้ดส์
ที่ผิดคือ ถังไก่บ้าน
มันโชว์ว่ามีอีก จริงๆแล้วอาหารมันหมดแล้ว แต่อาจเป็นจากโค้ดจับความถี่ว่าเซ็นเซอร์ทำงานถี่เกิน มันเลยให้แสดงว่าเต็มจะได้ไม่ให้มอเตอร์ทำงาน และledblynkควรเป็นสีแดง หรือon แต่นี้ยังoff และค่าความถี่ต้องมากกว่า0
แสดงว่าโค้ดนี้ทำงานยังไม่สมบูรณ์
1.ผมได้สร้างlogการทำงานของโค้ดนี้ ดูผ่านblynkได้ ว่ามันทำงานอย่างไร
2.ผมอยากลองทำโค้ดจับความถี่อีกแบบหนึ่งว่ามันให้ผลเหมือนกันไหม เช่น จากนี้
ถ้าเพื่อนมีไอเดียดีๆ เอามาฝากด้วยนะ
4กค65
ตอนแรกเวลาไม่ยอมแสดงในนี้ ทั้งที่ ในv5 แสดงได้
แต่ทำไม (log)v14ไม่ยอมแสดง
แต่กว่าจะได้จุดนี้เสียเวลา5ชั่วโมง😢
สาเหตุการประกาศ string ของเวลาซ้ำซ้อน คือ ประกาศที่global และอีกที่ประกาศในvoid voidนี้มีคำสั่ง blynk.virtualwrite.v5 เลยแสดงได้
คำสั่ง blynk.virtualwrite.v14มันอยู่คนละฟังก์ชั่นกับ v5 จะไม่โชว์เวลา
วิธีแก้ผมลบ คำประกาศ “String” (ในvoid)ที่นำหน้าตัวแปรออก
แสดงได้แล้ว
4กค65
เมื่อวานกับวันนี้ ยุ่งกับ String ทั้งวัน 555.
log
ช่วยได้เยอะ ว่ามันช้าจุดไหนครับ
++++++
เซ็นเซอร์ทำงานถี่แต่โค้ดไม่ยอมให้เซ็นเซอร์หยุด(คลิป)
โค้ดที่เกี่ยวข้องคือ
switch_sensor_upper_tank
timer.setInterval(1000L, check_sensortask);//
void check_sensortask()
{
//D4(upper_tank_sensor ถังบนD4 = GPIO 2,upper_tank_sensor_val),D3(rhodes_tank_sensor"ถังอาหารไก่โร้ดส์"D3 = GPIO 0,rhodes_tank_sensor_val),D6(local_tank_sensor ไก่บ้านD6 = GPIO 12,local_tank_sensor_val),
// digitalWrite(switch_sensor_upper_tank, 0);//active low 24 มิย. 65
delay(100);
upper_tank_sensor_duration = pulseIn(upper_tank_sensor, HIGH,2000);
Serial.println(upper_tank_sensor_duration);
// Blynk.virtualWrite(V18, upper_tank_sensor_duration);
if(upper_tank_sensor_duration!=0)
{
digitalWrite(switch_sensor_upper_tank, 1);//active low 24 มิย. 65
upper_tank_sensor_val_high_blynkled_v15.on();
string_close_open_v4="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_close+","+string_close_open_v4;
Blynk.virtualWrite(V4, string_close_open_v4);
}
else
{
upper_tank_sensor_val_high_blynkled_v15.off();
string_close_open_v4="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_open+","+string_close_open_v4;
Blynk.virtualWrite(V4, string_close_open_v4);
digitalWrite(switch_sensor_upper_tank, 0);//active low 24 มิย. 65
}
delay(100);
rhodes_tank_sensor_duration = pulseIn(rhodes_tank_sensor, HIGH,2000);
Serial.println(rhodes_tank_sensor_duration);
Blynk.virtualWrite(V19, rhodes_tank_sensor_duration);
if(rhodes_tank_sensor_duration!=0)
{
digitalWrite(switch_sensor_rhodes_tank, 1);//active low 24 มิย. 65
rhodes_tank_sensor_val = 0; //0 คิอ อาหารยังเต็ม , ไฟเซ็นเซอร์สว่าง. แจ้งให้เต็มก่อนมิฉะนั้นมอเตอร์จะหมุน
string_close_open_v5="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_close+","+string_close_open_v5;
Blynk.virtualWrite(V5, string_close_open_v5);
}
else
{
rhodes_tank_sensor_val_high_blynkled_v16.off();
digitalWrite(switch_sensor_rhodes_tank, 0);//active low 24 มิย. 65
string_close_open_v5="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_open+","+string_close_open_v5;
Blynk.virtualWrite(V5, string_close_open_v5);
}
delay(100);
local_tank_sensor_duration = pulseIn(local_tank_sensor, HIGH,2000);
Serial.println(local_tank_sensor_duration);
Blynk.virtualWrite(V20, local_tank_sensor_duration);
if(local_tank_sensor_duration!=0 )
{
digitalWrite(switch_sensor_local_tank, 1);//active low 24 มิย. 65
local_tank_sensor_val = 0; //0 คิอ อาหารยังเต็ม , ไฟเซ็นเซอร์สว่าง. แจ้งให้เต็มก่อนมิฉะนั้นมอเตอร์จะหมุน
local_tank_sensor_val_high_blynkled_v17.on();
string_close_open_v9="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_close+","+string_close_open_v9;
Blynk.virtualWrite(V9, string_close_open_v9);
}
else
{
local_tank_sensor_val_high_blynkled_v17.off();
digitalWrite(switch_sensor_local_tank, 0);//active low 24 มิย. 65
string_close_open_v9="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_open+","+string_close_open_v9;
Blynk.virtualWrite(V9, string_close_open_v9);
}
Blynk.syncAll();
}
4กค65
หาวิธีหาความถี่ ในกระทู้นี้ ยิ่งไม่เข้าใจเพราะความรู้เราไปไม่ถึง 555 แต่สุดท้ายในคอมเม้นต์ ไม่ต่างจาก ใช้ pulsein()ครับ เลยใช้แบบนี้ไปก่อน
7กค.65
เย้ pulsein โชว์ผลงานแล้วครับ
ใช้โค้ดนี้ครับ
local_tank_sensor_duration = pulseIn(local_tank_sensor, LOW,10000);
Serial.println(local_tank_sensor_duration);
Blynk.virtualWrite(V20, local_tank_sensor_duration);
if(local_tank_sensor_duration!=0 )
{
digitalWrite(switch_sensor_local_tank, 1);//active low 24 มิย. 65
local_tank_sensor_val = 0; //0 คิอ อาหารยังเต็ม , ไฟเซ็นเซอร์สว่าง. แจ้งให้เต็มก่อนมิฉะนั้นมอเตอร์จะหมุน
local_tank_sensor_val_high_blynkled_v17.on();
string_close_open_v9="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_close+","+string_close_open_v9;
Blynk.virtualWrite(V9, string_close_open_v9);
}
else
{
local_tank_sensor_val_high_blynkled_v17.off();
digitalWrite(switch_sensor_local_tank, 0);//active low 24 มิย. 65
string_close_open_v9="ค่าความถี่="+String(upper_tank_sensor_duration)+","+string_open+","+string_close_open_v9;
Blynk.virtualWrite(V9, string_close_open_v9);
}