อุปกรณ์ที่ใช้มี Arduino uno R3 , RTC DS3231,จอ LCD 16x2
พอดีต้องการสร้างนาฬิกาปลุกตั้งเวลาอะครับ การทำงานคือ
1.เปิดหน้ามาเป็นหน้า Menu ให้เลือก -set time (เอาไว้ตั้งเวลา)
-alarm(เอาไว้ตั้งนาฬิกาปลุก)
2.พอตั้งค่าเวลา set time เสร็จ กดปุ่ม # จะกลับมาที่หน้า menu
แล้วกดตั้งเวลา alarm ต่อ พอกดปุ่ม # ก็จะแสดงเวลาที่ตั้งไว้ออกมา เช่น 11:30:01 จนกว่าจะถึงเวลาที่ตั้ง alarm ไว้ถึงปลุก
ที่นี้ปัญหาคือ เวลาแสดงเวลา 11:30:01 โปรแกรมมันจะรันรับค่าเวลาจาก Real time Clock(RTC) วินาทีต่อวินาทีอะครับ เป็น
11:30:01 >>>11:30:02>>>11:30:03 ..... ไปเรื่อยๆในลูปของมัน
ปัญหาคือ : ต้องการกดปุ่ม # แล้วให้หลุดออกจากลูปการแสดงค่าเวลา แล้วกลับมาที่หน้า menu อะครับ พอใช้คำสั่ง getkey();
แล้วตรวจสอบว่า รับค่าเป็น # เมื่อไรให้หลุดจากลูปไปที่หน้าเมนู มันไม่ได้อะครับ เนื่องจากมันเป็นการตรวจสอบที่
คำสั่งเงื่อนไขบรรทัดนั้น แต่ในลูปมีหลายบรรทัด ถ้าเรากดปุ่ม # ไม่ตรงกับที่โปรแกรมกำลังอ่าน Code getkey(); ก็จะ
ทำให้ไม่สามารถตรวจสอบได้ว่ากดปุ่ม # นั้นหรือยัง เลยอยากทราบว่าควรแก้ไขปัญหายังไงดีครับ
พอทราบคร่าวๆมาว่าต้องใช้คำสั่ง interrupt แต่ลองศึกษาดูแล้ว มีแต่ ใช้ ปุ่ม swith เพียวๆ ต่อแยกอะครับ แต่อยากใช้ปุ่มจาก Keypad ในการinterrupt ให้หลุดออกจากลูปการรับค่า ปุ่มที่ต้องการใช้คือ # ต้องทำยังไงอะครับ
มีใครพอจะช่วยชี้แนะให้หน่อยได้ไหมครับ
ใครมีความรู้ด้าน ARduino ขอคำปรึกษาหน่อยครับ เกี่ยวกับ KEYPAD4x4 และ RTC
พอดีต้องการสร้างนาฬิกาปลุกตั้งเวลาอะครับ การทำงานคือ
1.เปิดหน้ามาเป็นหน้า Menu ให้เลือก -set time (เอาไว้ตั้งเวลา)
-alarm(เอาไว้ตั้งนาฬิกาปลุก)
2.พอตั้งค่าเวลา set time เสร็จ กดปุ่ม # จะกลับมาที่หน้า menu
แล้วกดตั้งเวลา alarm ต่อ พอกดปุ่ม # ก็จะแสดงเวลาที่ตั้งไว้ออกมา เช่น 11:30:01 จนกว่าจะถึงเวลาที่ตั้ง alarm ไว้ถึงปลุก
ที่นี้ปัญหาคือ เวลาแสดงเวลา 11:30:01 โปรแกรมมันจะรันรับค่าเวลาจาก Real time Clock(RTC) วินาทีต่อวินาทีอะครับ เป็น
11:30:01 >>>11:30:02>>>11:30:03 ..... ไปเรื่อยๆในลูปของมัน
ปัญหาคือ : ต้องการกดปุ่ม # แล้วให้หลุดออกจากลูปการแสดงค่าเวลา แล้วกลับมาที่หน้า menu อะครับ พอใช้คำสั่ง getkey();
แล้วตรวจสอบว่า รับค่าเป็น # เมื่อไรให้หลุดจากลูปไปที่หน้าเมนู มันไม่ได้อะครับ เนื่องจากมันเป็นการตรวจสอบที่
คำสั่งเงื่อนไขบรรทัดนั้น แต่ในลูปมีหลายบรรทัด ถ้าเรากดปุ่ม # ไม่ตรงกับที่โปรแกรมกำลังอ่าน Code getkey(); ก็จะ
ทำให้ไม่สามารถตรวจสอบได้ว่ากดปุ่ม # นั้นหรือยัง เลยอยากทราบว่าควรแก้ไขปัญหายังไงดีครับ
พอทราบคร่าวๆมาว่าต้องใช้คำสั่ง interrupt แต่ลองศึกษาดูแล้ว มีแต่ ใช้ ปุ่ม swith เพียวๆ ต่อแยกอะครับ แต่อยากใช้ปุ่มจาก Keypad ในการinterrupt ให้หลุดออกจากลูปการรับค่า ปุ่มที่ต้องการใช้คือ # ต้องทำยังไงอะครับ
มีใครพอจะช่วยชี้แนะให้หน่อยได้ไหมครับ