Module Real Time Clock
Real Time Clock(RTC) อุปกรณ์ไฟฟ้าทุกตัวถ้าจะตัองการใช้ค่าเวลา ต้องมีนาฬิกาอยู่ใน ถ้าถอดปลักออกอุปกรณ์หยุดทำงาน แต่นาฬิกาต้องเดินต่อไป ดังนั้นต้องมีแบตเตอรี่เป็นไฟเลี้ยง(เฉพาะนาฬิกา) เมื่อเปิดเครื่องขึ้นมาใหม่ก็ยังเห็นเวลาที่ถูกต้อง คอมพิวเตอร์และโน้ตบุ๊กที่ใช้่เป็นเวลานานหลายปีเวลาจะไม่ถูกต้อง ก็ต้องเปลี่ยนแบ็ตเตอรี่ซึ่งจะเป็นถ่านกระดุม สำหรับไมโครคอนโทรลเลอร์ก็เช่นกัน ถ้าต่ออินเตอร์เน็ตตลอดเวลาอาจใช้เวลาจากเน็ตเวิร์กก็ได้ แต่ถ้าไม่ได้ต่อเน็ตเวิร์กอาจจำเป็นต้องใช้ โมดูล RTC มีหลายรุ่นให้เลือกใช้งานโมดูล DS3231 for Pi
ใช้การเชื่อมต่อแบบ I2C เป็นรุ่นสำหรับ Raspberry Pi แต่ก็ใช้กับบอร์ดรุ่นอื่นๆที่สนับสนุน I2C ได้ แค่ต่อขาให้ถูก![]() |
RTC สำหรับ Raspberry PI |
+ ต่อไฟ 3.3โวลต์
D SDA (ใช้ขา 21)
C SCL (ใช้ขา 22)
NC ไม่ได้ใช้- ต่อ Ground
ให้ติดตั้ง RTClib ด้วย Library Manager เลือกที่เป็น by Adafruit จะมี Library เพิ่มเติมให้ตอบตกลงไปโปรแกรมจะอ่านค่าเวลาจาก RTC ถ้าไม่ได้ตั้งเวลาไว้เพราะเอาแบตเตอรี่ออก ก็จะตั้งเวลาใหม่โดยใช้ วันเวลาตอนคอมไพล์โค้ด RTC รุ่นนี้จะตั้งเวลามาเรียบร้อยแล้ว แต่อาจจะไม่ตรงนักต้องตั้งใหม่
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include <Wire.h> #include "RTClib.h" // by Adafruit RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { Serial.begin(9600); delay(3000); // wait for console opening if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (rtc.lostPower()) { //เวลาที่เก็บใน RTC ใช้ไม่ได้ต้องตั้งใหม่ Serial.println("RTC lost power, lets set the time!"); // January 21, 2014 at 3am ให้ใช้ rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //เซ็ตวันและเวลา ให้เป็นเวลาของโค้ด } } void loop () { DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); // UNIX time เริ่มจาาก 1/1/1970 Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // คำนวณเวลา ไปข้างหน้า 7 วันกับ 30 วินาที DateTime future (now + TimeSpan(7,12,30,6)); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(3000); } |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น