|
DS3231 Real vaqt soati moduli
|
bet | 9/11 | Sana | 25.07.2024 | Hajmi | 1,44 Mb. | | #268592 |
Bog'liq Reja (2)DS3231 Real vaqt soati moduli.
DS3231-bu arzon va yuqori aniqlikdagi Real vaqt soati bo‘lib, u soatlar, daqiqalar va soniyalarni, shuningdek, kun, oy va yil ma'lumotlarini saqlashi mumkin. Bundan tashqari, 31 kundan kam bo‘lgan sakrash yillari va oylari uchun avtomatik kompensatsiya taqdim etiladi.
DS3231 RTC
Modul 3,3 va 5 V oralig'ida ishlashi mumkin, bu esa uni ko‘plab ishlab chiqish platformalari yoki mikrokontrollerlar uchun mos qiladi. Batareyaning kirish kuchlanishi 3V ni tashkil qiladi va odatdagi CR2032 3V batareyasi modulni quvvatlantirishi va ma'lumotni bir yildan ortiq saqlashi mumkin.
Modul Arduino platasiga ulanishni osonlashtiradigan i2c aloqa protokolidan foydalanadi. Shuningdek, bizning veb-saytimizda Arduino-ning I2C protokoli bilan ishlashi bo‘yicha batafsil qo‘llanmani o‘qishingiz mumkin.
Loyiha sxemasi
Ds3231 Real vaqt soati modulini Arduino platasiga ulash sxemasi quyidagi rasmda keltirilgan.
Shunday qilib, bizga modulni quvvatlantirish uchun 4 ta sim, VCC va GND pinlari va ikkita i2c interfeysi pinlari kerak: SDA va SCL.
Dasturlash.
Modul ulangandan so‘ng, biz Arduino platasini Real vaqtda soat bilan ishlash uchun dasturlashimiz kerak. Biroq, Arduino va i2c moduli o‘rtasidagi aloqani dasturlash haqida gap ketganda, kod unchalik kichik yoki oddiy emas. Yaxshiyamki, Ds3231 RTC uchun allaqachon internetda topish mumkin bo‘lgan bir nechta kutubxonalar mavjud.
Ushbu qo‘llanma uchun men Henning Karlsen kutubxonasidan foydalanishga qaror qildim, uni o‘z saytidan topish va yuklab olish mumkin
Shunday qilib, biz kutubxonani yuklab olib o‘rnatganimizdan so‘ng, dastlab RTC modulining soatini faollashtirish uchun uning birinchi demo misolidan foydalanishimiz mumkin. Demo kod sozlamalari bo‘limida biz haftaning kuni, vaqti va sanasini dastlab belgilash uchun uchta qatorni ajratib ko‘rsatishimiz kerakligini payqashimiz mumkin.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// Code from the Demo Example of the DS3231 Library
void setup()
{
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino
//while (!Serial) {}
// Initialize the rtc object
rtc.begin();
// The following lines can be uncommented to set the date and time
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014); // Set the date to May 5st, 2024
}
|
Birinchi qator haftaning kunini belgilash uchun, ikkinchi qator vaqtni soat, daqiqa va soniyalarda belgilash uchun, uchinchi qator sanani kunlar, oylar va yillarda belgilash uchun.
Ushbu kodni yuklab olganimizdan so‘ng, biz uchta qatorni sharhlashimiz va kodni qayta yuklab olishimiz kerak bo‘ladi.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// Code from the Demo Example of the DS3231 Library
void loop()
{
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");
// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Send time
Serial.println(rtc.getTimeStr());
// Wait one second before repeating
delay (1000);
}
|
Agar biz kodning tsiklga bag'ishlangan qismini ko‘rib chiqsak, endi uchta maxsus funktsiyadan foydalanib, biz Real vaqtda soat modulidan ma'lumot olamiz va uni ketma-ket monitorda chop etamiz. Ular Serial Monitor-da qanday ko‘rinishga ega.
Endi biz Arduino-ni o‘chirib, keyin uni qayta ulab, ketma-ket monitorni qayta ishga tushirsak ham, vaqt qayta tiklanmasdan davom etayotganini sezamiz.
Shunday qilib, endi bizda ishlaydigan Real vaqt soati bor va biz uni har qanday Arduino loyihasida ishlatishimiz mumkin. Ikkinchi misol sifatida men LCD-ni Arduino-ga uladim va unga vaqt va sanani qo‘ydim.
/*
* Arduino DS3231 Real Time Clock Module Tutorial
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
* DS3231 Library */
#include
#include // includes the LiquidCrystal Library
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
rtc.begin(); // Initialize the rtc object
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } }
void loop() {
lcd.setCursor(0,0);
lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());
delay(1000); }
|
| |