เซนเซอร์มีอาการส่งข้อมูล ได้บ้างไม่ได้บ้างเป็นเพราะอะไรครับ ตอนส่งไม่ได้ serial monitor จะขึ้น timeout nan nan แต่พอส่งค่าอุณหภูมิได้ แล้วนำ nodemcu v.3 ไปต่ออแด็ปเตอร์ ทำให้ส่งอุณหภูมิไม่ได้อีก แก้ยังไงครับ มีใครรู้บ้าง ขอบคุณครับ
แสดงว่าเซนเซอร์ทำงานถูกต้องแล้วครับ
เซนเซอร์ตระกูล DHT ส่วนมากจะใช้เวลาอ่านประมาณ 2-3 วินาที ถ้าอ่านเร็วกว่านี้จะยังรวมรวมข้อมูลไม่เสร็จ จะให้ค่า nan ออกมา
ลองใช้คำสั่ง delay(3000); ก่อนอ่านครั้งต่อไปครับ
ขอบคุณมากๆเลยครับ เดี๋ยวจะลองเอาไปทำดูครับ
สอบถามอีกอันครับ ถ้าผมใช้ nodemcu ดึงเวลามาจากเน็ต แล้วผมอยากให้รีเลย์ทำงานทุกๆ 2ชั่วโมง พอมีวิธีแนะนำไหมครับ ขอบคุณมากครับ
ทำได้ครับ ดึงเวลามา แล้วเช็ค if ตามช่วงเวลา มีตัวอย่างในคอร์สสอน Arduino ESP8266 เรียนฟรี ที่หน้าเว็บครับ
time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);
int timSec = p_tm->tm_sec;
int timMin = p_tm->tm_min;
int timHour = p_tm->tm_hour;
String timeNow = String(timHour)+":"+String(timMin)+":"+String(timSec);
Serial.println(timeNow);
anto.pub("time_now",timeNow);
delay(1000);
if(timMin = timMin+5) // จะเช็คทุก 5 นาที แบบนี้ได้ไหมครับ
{
Serial.print("123456");
}
}
เวลา นาที จะมี 0-60 ถ้าเกิน 60 จะนับ 0 ใหม่ โคดนี้จะทำงานไม่ถูกต้อง
เขียน if เช็คหลายเงื่อนไขกว่านี้ครับ
ถ้าแบบง่าย ๆ ลองใช้คำสั่ง mod ในการหาว่า หารด้วย 5 ได้เศษ 0 แสดงว่าเวลาจะลงท้ายด้วย 0 หรือ 5
เช่น if((timer%5)==0){}
มีข้อแนะนำไหมครับ อยากตั้งเวลาทุก2ชั่วโมง
ให้รดน้ำ 1 นาที หยุด1นาที รด1นาที หยุด 1 นาที
ในลูป ทุกๆ 2 ชั่วโมงคครับ
ตอนนี้ไปไม่ถูกเลยครับ
ถ้าใช้ Arduino ใช้ timer เช็ค if ธรรมดา
หรือใช้ RTC เช่น โมดูล DS3231 ลองดูโคดตัวอย่าง ในหน้าบทความ ครับ
แต่ถ้ายังไปไม่ถูก ขอแนะนำให้เริ่มจากพื้นฐานก่อน มีตัวอย่างในคอร์สสอน Arduino Starter ครับ
ขอสอบถามอีกนิดหนึ่งครับ ถ้าผมจะรดน้ำทุก2ชั่วโมง
if(timHour%2==0)
{
if (timMin==0||timMin==2)
{
anto.pub("statuspump",1);
}
else if(timMin==1||timMin==3)
{
anto.pub("statuspump",0);
}
แต่ปัญหา คือถ้าเริ่ม 19.00 น. พอครบ 20.00 น. มันจะผ่านไปแค้ 1 ชั่วโมง
มีวิธีแนะนำ ไหมครับ ทุกชั่วโมงเป้นเลขคี่ จะเกิดปัญหานี้รับ