PIC16F628A ต้องการเขียนคำสั่งนับเวลาถอยหลัง

พอดีงานวิชาไมโครคอนโทรลเลอร์ที่อาจารย์ให้ทำคือ ทำเครื่องรดน้ำพืชอัตโนมัติ โดยใช้ PIC ซึ่งผมใช้ 16F628A ในการควบคุม

โดยโจทย์คือ ให้รดน้ำทุก 8ชั่วโมง โดยการรดน้ำแต่ละรอบการรดน้ำ ให้รด1นาที หยุด1นาที จำนวน4ครั้งแล้วจึงนับถอยหลังไปอีก 8โมงโมง วนแบบนี้เรื่อยๆ ซึ่งเป็นมินิโปรเจคประจำวิชา

ตอนนี้ที่ผมเขียนคือใช้คำสั่ง Delay และใช้ For วนลูป Delay เอา แต่ปรากฏว่า มันกลับรดทุก 2ชั่วโมง ผมเลยงงว่าเกิดจากอะไรอะ
แล้วถ้าใช้เป็นคำสั่ง Timer ที่อยู่ใน PIC นับเวลาเอาจะแม่นกว่ารึเปล่าครับ?


นี่คือส่วนของคำสั่งที่นับถอยหลัง8ชั่วโมง ที่ผมใช้ครับ ในส่วน start(1) stop(1) เป็นฟังก์ชั่นควบคุม LED กระพริบ

void delay_8hr(void)
{
   for(min=0;min<72;min++)
   {
      for(n=0;n<100;n++)
      {
         start(1);
         delay_ms(2000);
         stop(1);
         delay_ms(2000);
      }
   }
}

รบกวนด้วยครับ ผมไม่เก่งทางด้านการเขียนไมโครคอนโทรลเลอร์เลย ส่งได้ถึงแค่ซัมเมอร์เท่านั้น ร้องไห้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่