Fan: O’rnatilgan tizimlar Mustaqil ishi Mavzu: ds3231 modulini Arduino uno platasiga ulash. Displey ekranida vaqtni ko'rsatish Bajardi


Download 0.81 Mb.
bet6/7
Sana17.01.2023
Hajmi0.81 Mb.
#1098035
1   2   3   4   5   6   7
Bog'liq
Mustqil ish Rustamov Anvar

Ikkinchi komponent - apparat-dasturiy qism - Arduino. 2 bor navlari ushbu loyiha uchun apparat: ekranli va tugmali "to'liq" versiya va "o'chirilgan" versiya tez o'rnatish modul vaqti, "shit va tayoq" dan yig'ilgan. Ularning farqlari uchun pastga qarang. "To'liq" versiya Arduino Nano, "adapter" ni himoya qilish uchun I2C bilan 1602 qalqon, ixtiyoriy Arduino tiklash tugmasi va soat modulini ulash uchun pin sarlavhasidan (ayol) iborat. Bundan tashqari, ixtiyoriy ravishda, "yoqimli" stiker bilan qurilma tanasidan. "O'chirilgan" versiya Arduino (Uno, Nano, Pro Mini + DTR bilan USB ga "to'g'ri" adapter) va soat modulini ulash uchun 4 ta simdan iborat.


Diagrammalardan ko'rinib turibdiki, "to'liq" versiya "kesilgan" ga qo'shimcha ravishda qayta o'rnatish tugmasi va "adapter" bilan 1602 ekranni o'z ichiga oladi.Ikkala versiya ham asosiy funksionallik jihatidan mutlaqo bir xil - Ekran faqat jarayonning bosqichlarini ko'rsatish uchun kerak bo'ladi va vaqtni belgilash jarayoni oxirida yangi belgilangan vaqt, sana va haftaning kunini ko'rsatish uchun kerak bo'ladi. soat modulining o'zidan o'qing."Kesilgan" versiyada Arduino platasiga o'rnatilgan LED ekran vazifasini bajaradi: yangi vaqtni belgilash jarayoni oxirida u porlay boshlaydi.Bu butun ko'rsatkich.
Qayta tiklash tugmasi nima uchun? Nima uchun to'liq versiya Vaqtni belgilagandan so'ng, Arduino kiradi cheksiz tsikl yangi o'rnatilgan vaqtni ko'rsatish orqali, ya'ni aslida u soatga aylanadi. Bundan tashqari, soat shoshilinch ravishda yaratilgan va shuning uchun ular bir necha sabablarga ko'ra oddiy soatni almashtira olmaydilar (sekundlarni tanlash kechikish orqali amalga oshiriladi, quvvat o'chirilganda vaqt ko'rsatkichi yo'qoladi). Axir, maqsad vaqtning to'g'ri sinxronlanganligiga ishonch hosil qilishdir, boshqa hech narsa emas. Shuning uchun, keyingi soat modulini sinxronlashtirish uchun siz qayta o'rnatmasdan qilolmaysiz (aniqrog'i, agar siz "buzib" qilsangiz, buni qilishingiz mumkin. USB kabeli). Boshqacha qilib aytganda, tugmaning maqsadi sof utilitardir. Agar xohlasangiz, usiz ham qila olasiz.
Arduino-ni qanday o'chirish kerak, chunki ikkita uskuna va bitta eskiz bormi? Mikrodasturning "to'g'ri" versiyasini kompilyatsiya qilish uchun siz eskiz sarlavhasida kerakli parametr qiymatini o'rnatishingiz kerak. to'liq versiya: rost "to'liq" versiya uchun yoki yolg'on - "kesilgan" uchun. Shunday qilib, kompilyator apparatning qaysi versiyasi uchun proshivkani kompilyatsiya qilishni aniqlaydi.
Shunday qilib, ulanish sxemasi mavjud, sizga eskiz kodi kerak. E'tibor bering, eskiz "to'liq" versiya bilan to'g'ri ishlashi uchun sizga kutubxona kerak LiquidCrystal I2C Frank de Brabander tomonidan(Kutubxona menejeri yordamida ombordan o'rnatilgan). Bundan tashqari, har qanday emas, balki soat modulini qo'llab-quvvatlash uchun kutubxona kerak :). Bu yerdan yuklab oling: . Biz kutubxonalar bilan ishladik.
Mana eskiz kodi:
//======================================== O'zgartirish mumkin bo'lgan sozlama === = ===================================== #define fullVersion true //true = ekranli "to'liq" versiya ; false = o'rnatilgan LED bilan "o'chirilgan" versiyasi //================================== Ishlatilgan kutubxonalar va o'zgaruvchi deklaratsiyalar = ================================== #include #o'z ichiga oladi #if (to'liq versiya) #include #endif unsigned long t1 = 0; //qabul qilingan vaqt uchun o'zgaruvchi unsigned long t2 = 0; //qabul qilingan vaqt bayti uchun o'zgaruvchi b; // ma'lumotlarni qabul qilish uchun bufer COM porti#if (fullVersion) bayt kuni = 0; #endif DS3231 soati; RTCDateTime date1; #if (fullVersion) LiquidCrystal_I2C lcd(0x3F,16,2); //Xitoylar sevib qolishdi yangi manzil i2c dan #endif ekraniga "adapterlar" uchun //===================================== = ==================================================== ========================== void setup()( #if (!fullVersion) //faqat "o'chirilgan" versiya uchun tegishli - boshlash kodi bo'lim pinMode(13, OUTPUT); digitalWrite(13,LOW); #endif //faqat "kesilgan" versiya uchun tegishli - kod bo'limining oxiri clock.begin(); Serial.begin(9600); #if ( fullVersion) / /faqat "to'liq" versiya uchun tegishli - kod bo'limining boshlanishi lcd.init(); lcd.backlight(); lcd.setCursor(0,0); lcd.print("COMport 9600 8N1") ; //maslahat, qanday parametrlar bilan dasturda COM portini tanlang lcd.setCursor(0,1); lcd.print("Sinxronlash uchun tayyor"); //holat xabari - sinxronlash uchun kechikish (1000); #endif / /faqat "to'liq" versiya uchun tegishli - kod bo'limining oxiri ) void loop()( if (Serial.available())( //agar MAQOMOTI portining "kolbalarda porox" bo'lsa Serial.readBytes(b, 4); //barcha 4 baytni hisoblang (boshqasini kutmaymiz) t1=b; t2=(t1)<<24); //поместить значение байта в 4-байтную переменную и передвинуть его на 3 байта влево t1=b; t2+=(t1<<16); //поместить значение байта в 4-байтную переменную и передвинуть его на 2 байта влево t1=b; t2+=(t1<<8); //поместить значение байта в 4-байтную переменную и передвинуть его на 1 байт влево t2+=b; //поместить значение байта в 4-байтную переменную clock.setDateTime(t2); //установить полученное время на DS3231 #if (fullVersion) //актуально только для "полной" версии - начало участка кода lcd.clear(); lcd.setCursor(0,0); lcd.print("Done:) : :"); while (true){ //начало бесконечного цикла по отображению свежеустановленных времени и даты dat1 = clock.getDateTime(); if (dat1.day != day){ day = dat1.day; lcd.setCursor(0,1); if (dat1.day < 10) lcd.print("0"); lcd.print(day); lcd.print("-"); switch (dat1.month){ //выбираем буквенное соответствие месяца по цифре case 1:{ lcd.print("Jan"); break; } case 2:{ lcd.print("Feb"); break; } case 3:{ lcd.print("Mar"); break; } case 4:{ lcd.print("Apr"); break; } case 5:{ lcd.print("May"); break; } case 6:{ lcd.print("Jun"); break; } case 7:{ lcd.print("Jul"); break; } case 8:{ lcd.print("Aug"); break; } case 9:{ lcd.print("Sep"); break; } case 10:{ lcd.print("Oct"); break; } case 11:{ lcd.print("Nov"); break; } case 12:{ lcd.print("Dec"); break; } default:{ lcd.print("???"); break; } }//switch month lcd.print("-"); lcd.print(dat1.year); lcd.print(" "); switch(dat1.dayOfWeek){ //выбираем буквенное соответствие дня недели по цифре case 1:{ lcd.print("Mon"); break; } case 2:{ lcd.print("Tue"); break; } case 3:{ lcd.print("Wed"); break; } case 4:{ lcd.print("Thu"); break; } case 5:{ lcd.print("Fri"); break; } case 6:{ lcd.print("Sat"); break; } case 7:{ lcd.print("Sun"); break; } default:{ lcd.print("???"); break; } }//switch dayOfWeek }//if date changed lcd.setCursor(8,0); if (dat1.hour < 10) lcd.print("0"); lcd.print(dat1.hour); lcd.setCursor(11,0); if (dat1.minute < 10) lcd.print("0"); lcd.print(dat1.minute); lcd.setCursor(14,0); if (dat1.second < 10) lcd.print("0"); lcd.print(dat1.second); delay(995); }//while #else //актуально только для "урезанной" версии - начало участка кода digitalWrite(13, HIGH); delay(3000); digitalWrite(13, LOW); #endif //актуально только для "полной" версии - конец участка кода }//if Serial }//loop

Tayyor qurilmaning "to'liq" versiyasining bir nechta fotosuratlari.




Va nihoyat, qurilmaning ishlayotgan videosi:

Download 0.81 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling