Arduino:
การคำนวณวันที่ในอนาคตหรืออดีต
วิธีการ:
Arduino ไม่มีฟังก์ชันวันที่และเวลาในตัว แต่คุณสามารถใช้ไลบรารี “TimeLib.h” เพื่อจัดการการคำนวณวันที่ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารีก่อนใช้ตัวอย่างด้านล่าง
#include <TimeLib.h>
void setup() {
Serial.begin(9600);
setTime(10, 0, 0, 25, 3, 2023); // ตั้งเวลาเป็นวันที่ 25 มีนาคม 2023, เวลา 10:00:00
}
void loop() {
// คำนวณ 10 วันข้างหน้า
time_t futureTime = now() + 10 * SECS_PER_DAY;
// พิมพ์วันที่ในอนาคต
Serial.print(day(futureTime));
Serial.print("/");
Serial.print(month(futureTime));
Serial.print("/");
Serial.println(year(futureTime));
// คำนวณ 10 วันที่ผ่านมา
time_t pastTime = now() - 10 * SECS_PER_DAY;
// พิมพ์วันที่ในอดีต
Serial.print(day(pastTime));
Serial.print("/");
Serial.print(month(pastTime));
Serial.print("/");
Serial.println(year(pastTime));
// หลีกเลี่ยงการพิมพ์อย่างต่อเนื่อง
delay(10000);
}
ตัวอย่างการแสดงผล:
4/4/2023
15/3/2023
ลึกซึ้งยิ่งขึ้น
ก่อนมีโมดูล RTC (นาฬิกาจริง) และไลบรารีอย่าง TimeLib, การรักษาเวลาบน Arduino เป็นการทำงานในระดับพื้นฐานและมักจะดำเนินการด้วยตนเอง เราสามารถคำนวณวันที่ในอดีตหรืออนาคตได้หลายวิธี แต่การใช้ไลบรารีเฉพาะอย่าง TimeLib ทำให้กระบวนการนี้ง่ายขึ้นมาก
ทางเลือกนอกจาก TimeLib รวมถึง “RTClib.h” ที่ให้ความสมบูรณ์มากขึ้นเมื่อใช้กับฮาร์ดแวร์ RTC, หรือฟังก์ชัน millis()
ในตัวสำหรับช่วงเวลาสั้น ๆ (พร้อมการจัดการวันที่ด้วยตนเอง) TimeLib จัดการกับปีอธิกสุรทินและเขตเวลา และให้ฟังก์ชันประโยชน์สำหรับการจัดการวันที่ได้อย่างง่ายดาย
เมื่อคำนวณวันที่ในอดีตหรืออนาคต ให้ระวังการเปลี่ยนแปลงของเขตเวลาและการปรับเวลาออมแสงหากคุณทำงานกับนาฬิกาจริงหรือแหล่งเวลาภายนอก บน Arduino, หากไม่มี RTC หรือการเชื่อมต่ออินเทอร์เน็ต คุณจะปกติตั้งเวลาด้วยตนเองหรือผ่านสัญญาณภายนอก (เช่น สัญญาณ GPS หรือวิทยุ)
ดูเพิ่มเติม
- เอกสารประกอบไลบรารีเวลา: https://www.arduino.cc/reference/en/libraries/time/
- RTClib, ไลบรารียอดนิยมสำหรับการทำงานกับนาฬิกาจริง: https://github.com/adafruit/RTClib
- ฟังก์ชัน millis() ของ Arduino และการใช้งาน: https://www.arduino.cc/reference/en/language/functions/time/millis/