Mundarija:

Yozgi tejamkor soat: 7 qadam
Yozgi tejamkor soat: 7 qadam

Video: Yozgi tejamkor soat: 7 qadam

Video: Yozgi tejamkor soat: 7 qadam
Video: BİR O'ZİNGİZ KO'RİNG / DUNYODAGİ ENG G'ALATİ ER-XOTİNLAR / Buni Bilasizmi? 2024, Iyul
Anonim
Yozgi tejamkor soat
Yozgi tejamkor soat
Yozgi tejamkor soat
Yozgi tejamkor soat

Hikoya

Bu loyiha men uchun Arduino Uno va bitta 1602A LCD displeyi yordamida dasturlashni (kodlashni) o'rganish qiyinligidan boshlandi, men birinchi navbatda Arduino -ni aniqligi uchun chegaraga surmoqchi edim. Bu RTC modulini (Real Time Clock moduli) ishlatmasdan soatni qurish loyihasi va bundan keyin hech qanday kechikishni ishlatmaslik (); buyruqlar, chunki kechikish (); buyruq ma'lum vaqt davomida kodni to'xtatadi. Vaqtni saqlash bo'yicha asosiy vaqtni ishlayotganda, menimcha, bu oddiy narsa bo'lishi mumkin, shuning uchun men yozgi vaqtni tejash xususiyatini yangi narsalarni qo'shishga qaror qildim va bu loyihaga qiziqish uyg'otdim. Avvaliga bu g'oya mutlaqo yangi edi, lekin men u bilan ishlaganda va stolimda ishlayotgan jismoniy soatni ko'rsam, bu g'oya shunchalik amaliy bo'ladi. RTC modulini qo'shish va kodni sozlash orqali, bu soat yillar davomida aniq bo'ladi va bunday soatni sotib oladigan ishlab chiqaruvchilar va jamoatchilik uchun juda arzon bo'ladi.

Yozgi vaqt yoki (DST) 100+ yildan beri mavjud (Google, u juda rang -barang tarixga ega). Men siyosatga kirishni xohlamayman, lekin bu oddiy va og'riqli mashg'ulot bo'lib, oddiy odamlarning (siz va men) hayotini osonlashtirmaydi. Ko'pincha biz kunduzgi qo'shimcha soatni yoqtiramiz, lekin uni qo'llash usuli shafqatsiz. Qadimgi g'oyani tubdan yangilash vaqti keldi.

Bu misol raqamli asrda va texnologiya yutuqlarida raqamli soatlarning barcha turlariga osonlikcha qo'llanilishi mumkin, lekin analog soatning yo'q qilinishiga yordam berishi mumkin. Oddiy vaqtdan DST vaqtiga 1 soatlik sakrash o'rniga, DST vaqtidan standart vaqtga o'tish, bu vaqt qishning to'xtashidan yozgi quyoshgacha, so'ngra har yili keyingi qishki kunduzda standart vaqtga asta -sekin o'tishiga asoslangan. Bu o'tish har 6 oylik davrda 180 kun davomida amalga oshiriladi, sozlash har kuni 360 soniya uchun 20 soniyani tashkil qiladi, qolgan 5 yoki 6 kun esa kunning cho'ziluvchanligiga qo'shiladi. Mening misolim 180 kunlik tsikl ichida uch kunda bir marta 1 daqiqaga ko'payadi. Har yili taxminan 21 -iyun kuni soat to'liq 1 soat oldinda va har yilning 21 -dekabrida soat odatdagi vaqtga qaytadi. Ayniqsa, agar RTC ishlatilsa, kabisa yili osonlikcha hisobga olinadi. Janubiy yarim shar bu soatga ham osonlik bilan moslashgan, slayd shkalasi shimoliy yarim shardan fazadan atigi 6 oy oldin.

Dunyoda DST juda ekvatorial mintaqa va qutblar bo'lmasa, juda ko'p joylar bor. O'ylaymanki, kunduzgi yorug'lik ekvatorda deyarli o'zgarmaydi, bilmaymanmi, tropik hududlarning birortasi ham DSTdan foydalanadimi va qutblar yana boshqacha hikoya, baribir qutblarda "NIMA" vaqti?

1 -qadam: Soat haqida

Soat haqida
Soat haqida
Soat haqida
Soat haqida

Men yaratgan soat standart vaqtga asoslangan bo'lib, u xalqaro miqyosda qabul qilingan jahon soatlaridan farq qilmaydi, bu 1602 LCD displeyining birinchi qatorida aks etadi. Ikkinchi satr bir xil vaqt o'lchovidir, lekin u bir to'xtashdan ikkinchisiga to'g'ri kelmagan daqiqalarni ko'rsatadi. Qishki kunduzdan yozgi tunga qadar har uch kunda bir daqiqa, maksimal oltmish daqiqagacha ko'payadi. Yozgi kunduzdan to qishki kunduzgacha, har uch kunda standart vaqt va DST vaqti bir xil bo'lgunga qadar ofset har bir kunda bir daqiqaga kamayadi.

Bu misol uchun men 24 soatlik vaqt o'lchovi bilan tanish bo'lmagan odamlarga yordam berish uchun harbiy vaqtni (24 soatlik soat) va standart vaqtni (12 soatlik) ertalab va kechqurun ishlatardim, shuningdek xonamga DST kun raqamini ko'rsatishga ruxsat berdi. dan o'rnatish. Kodni 12 soatlik soatni ko'rsatish uchun o'zgartirish mumkin. Vaqtni sozlash uchun 2, 3 va 4 raqamli pinlarga ulangan uchta tugmachani qo'shdim. Bu tugmalar soniya, daqiqa yoki soatni ko'paytiradi. Tugmalar ixtiyoriy, agar siz tugmalarga sim kirmasangiz va kodni o'zgartirishga hojat qolmasa, soat yaxshi ishlaydi. Men hech bo'lmaganda soniyani sozlash uchun tugmachani ishlatishni maslahat berardim va agar to'liq aniqlikka erishish mumkin bo'lmasa, soatni sekin tomonda ushlab turing, tugma sekundiga 1 soniya oldinga siljiydi.

Agar siz soatni Arduino IDE -dan boshlasangiz, eskizni yuklash va yuklash uchun 5,5 dan 6 sekundgacha vaqt ketadi, agar sizda eskiz Arduino -ga yuklangan bo'lsa, uni devorga ulang yoki quvvat manbaiga ulang - taxminan 2,5 Yuklash va ishga tushirish uchun 3 soniya.

Nihoyat, soatni ishga tayyorlash uchun qo'lda sozlash kerak bo'ladi.

Bu soat RTC modulidan foydalanmaydi va dozani "delay ();" dan foydalanmaydi. buyruqlar.

Agar siz RTC -ni Arduino bilan ishlatishni yoqtirsangiz, bu kontseptsiyadan hali ham foydalanish mumkin. RTC sizga EDSC vaqtini qo'shish uchun kerak bo'lgan barcha ma'lumotlarni beradi. Kod RTC moduli bilan juda boshqacha bo'lishi mumkin, men buni ko'rib chiqmaganman. Agar shunday qilsangiz, siz deyarli yolg'izsiz, lekin bu miyangizni mashq qilishning ajoyib usuli.

2 -qadam: Sizga nima kerak

Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi
Sizga nima kerak bo'ladi

Xarid qilish ro'yxati

1 Arduino Uno yoki Mega2569 (I2C pinlari A4 va A5, UNOda 20 va 21, 2560 megada)

Deyarli har qanday boshqa Arduino ishlashi kerak, ishlatilgan pinlar boshqacha bo'lishi mumkin. Buning uchun har qanday boshqaruv paneli ishlaydi. Siz ushbu karta yoki ishlab chiqaruvchining kodini qayta yozishingiz kerak bo'ladi.

1 1602 LCD displey (siz tanlagan rang)

Men LCD bilan I2C orqa to'plamini ishlataman, menimcha, sozlash osonroq va tezroq.

Jumper simlari

Ixtiyoriy ta'minot

1 o'rta kattalikdagi non paneli

1-3 daqiqali aloqa tugmachalari

1-3 10 K ohmli rezistorlar

Bu ko'rsatma uzoq, shuning uchun men soatni ko'rsatish uchun ishlatilgan o'rnatish yoki shkafga kirmayman. Agar siz ushbu loyihani yoqtirsangiz va doimiy versiyasini yaratmoqchi bo'lsangiz, uni o'zingiz xohlagan tarzda yarating. Bu dizayn men uchun juda mos keladi, chunki menda hamma narsa keraksiz qutimda bor edi va menga uning ko'rinishi yoqadi.

QAYDLAR:

Chiqib ketishining oldini olish uchun, mening oxirgi soatim tashqarida joylashgan quyosh batareyasi bilan ishlaydi. Quyosh paneli haddan tashqari zaryadlanishining oldini olish uchun regulyator bilan zaryadlangan 12 voltli batareyani ushlab turadi. Bu batareya Arduino -ga USB port yonidagi quvvat ulagichi orqali ulangan. Batareya quvvatini kamaytirish uchun USB portini tarmoqqa ulangan holda saqlayman. Ikkala quvvat manbai ham bir vaqtning o'zida Arduino -ga zarar bermasdan ishlatilishi mumkin. 12 voltli batareyani maksimal 14,5 voltgacha zaryadlash mumkin, bu Arduino uchun juda yuqori, shuning uchun men batareyadan 9-12 voltgacha bo'lgan kuchlanish voltajini pasaytirish uchun konvertorni ishlataman. Men zaryad olayotgan 12 voltli batareya, agar kunlar bulutli bo'lsa, 3 yoki 4 kun davom etadi. Men foydalanadigan regulyator, agar batareya quvvati 11 voltgacha tushsa, Arduino quvvatini uzadi. Menda mavjud bo'lgan batareya tijorat binolari uchun favqulodda yorug'lik tizimidan keladi, uning kattaligi kichik avtomobil akkumulyatorining to'rtdan bir qismiga teng. Agar siz avtomobil akkumulyatoridan foydalanmoqchi bo'lsangiz, uni yaxshi shamollatiladigan joyda (tashqarida) saqlang, avtomobil akkumulyatorlari zaryad olayotganida va chiqarganda vodorod va kislorod gazini chiqaradi, bu portlovchi birikma.

OGOHLANTIRISH

BATEREYANI YAXSHI QILING

Ventilyatsiya qilingan maydon, Tashqarida

3 -qadam: simlarni ulash

Ulanish
Ulanish

Men ushbu loyihadagi barcha ulanishlar uchun sxemani taqdim qildim, agar siz non taxtasidan foydalansangiz, sizga o'rta kattalikdagi taxta kerak bo'ladi, kalitlarni tarqatish uchun joy kerak bo'ladi, shuning uchun sxemani chalkashtirib yubormang.

1602 LCD displeyda soddalik uchun I2C orqa to'plami mavjud, agar siz SPI ulanishlaridan foydalansangiz, uni qanday ishlatishni qidirishingiz va eskiz boshiga yaqin kodni o'zgartirishingiz kerak bo'ladi. Men hech qachon SPI ulanishlarini ishlatmaganman, shuning uchun ikkita tugmachada 2, 3 va 4 -pinlar bo'lmasligi mumkin.

Uch tugmachadan foydalanib, soatning vaqtini sozlash mumkin. Ular faqat vaqtni oldinga suradilar (AHEAD). Oxirgi sozlashlarda, soatni sekin tomonda saqlang (kuniga 1-2 soniya yoki bir necha kun), agar kerak bo'lsa, vaqtni oldinga siljitish mumkin. Har bir tugma vaqtni sekundiga bir marta, pastki tugmani sekundiga 2 soniya, o'rta tugmani soniyasiga 1 daqiqa va yuqori tugmani soniyasiga 1 soat oldinga siljitadi. Aniqlik darajasi juda yuqori bo'lishi kerak, shuning uchun uni tez -tez sozlashning hojati yo'q.

Agar siz soniyalar, daqiqalar yoki soatlarni sozlayotgan bo'lsangiz (masalan, 58, 59, 00 daqiqalari oldinga siljigan bo'lsa), soat keyingi soatga o'tadi.

Bu uchta tugma soatga so'nggi daqiqali qo'shimcha, ular yaxshi ishlaydi, lekin yaxshiroq yo'l bo'lishi mumkin. Shuni esda tutingki, agar siz kodning bu qismi bilan aralashsangiz, "delay ();" buyruqni ishlatib bo'lmaydi. Men bu usuldan foydalandim, chunki vaqt o'tishi bilan o'tish va g'alati sakrashlar haqida qayg'urishga hojat yo'q.

4 -qadam: Displey nimani ko'rsatadi

Displey nimani ko'rsatadi
Displey nimani ko'rsatadi

Men 1602 LCD displeyiga ba'zi tushuntirishlarni talab qiladigan juda ko'p ma'lumotlarni joylashtirdim:

1 -qator yoki kod bilan gaplashganda nolinchi "0" qatori standart vaqtni ko'rsatadi. Chapda "STD", bu "STandarD" vaqtini bildiradi.

O'rtadagi birinchi qatorda sizning mahalliy vaqtingiz ko'rsatilgan. Yozgi vaqtdan boshlamang, soat buni ikkinchi qatorda ko'rsatadi.

Bu vaqt shkalasi - 12 soatlik soat, shuning uchun o'ng tomonda ertalab yoki peshindan keyin "AM" yoki "PM".

2 -qator yoki kod bilan gaplashayotganda '1' qatori yilning vaqtiga qarab o'zgarib turadigan yozgi vaqtni ko'rsatadi. Chapdagi 'DST' yozgi vaqtni bildiradi

Ikkinchi qatorning o'rtasida sizning mahalliy harbiy vaqtingiz - bu 24 soatlik soat. Siz "oh olti yuz soat" deb nomlanganini eshitasiz.

Yilning o'ng tomonida, qishki kunduzdan kelib chiqqan holda, Shimoliy yarim sharda 21 dekabr (taxminan) nolinchi kun '0', janubiy yarimsharda esa 21 iyun (taxminan) nol '0' kun.

Men soatni birinchi o'rnatishda mos yozuvlar uchun ikkita.pdf faylni taqdim qildim. Siz yashaydigan yarim sharga tegishli faylni tanlang.

O'ngdagi uchta tugmacha pastdan yuqoriga soniya, daqiqa va soatni oshiradi.

5 -qadam: Sketchni sozlash

Eskizni sozlash
Eskizni sozlash

Dastlabki ishga tushirish uchun bir nechta kod satrlari o'rnatilishi kerak. Har safar soatni uzib, eskizdagi o'zgaruvchilar qiymatlarini o'zgartirganda, bu satrlarning ba'zilari o'zgarishi kerak. Agar siz IDE uchun soatni boshlasangiz, uni yuklash va ishga tushirish uchun taxminan 6 soniya kerak bo'ladi. Agar siz eskizni IDE -dan yuklasangiz, soatni ajratib oling va uni devor sig'imi yoki quvvat manbaidan qayta ishga tushiring, eskiz taxminan 2,5 soniyada ishga tushadi.

11 -qator LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Bu chiziq LCD displeyga murojaat qiladi va I2C orqa paketining to'g'ri manzilini o'rnatadi. 0x27 - bu men sotib olgan orqa paketlarning istalgan manzili. Agar siz soatni yoqsangiz, lekin hech qanday ma'lumot ko'rsatilmasa, lekin manzili yonib tursa, LCD displeyda boshqacha bo'lishi mumkin. Men sizning LCD orqa paketingizning manzilini qanday o'zgartirish yoki manzilni topishni ta'riflash uchun quyida havola qo'yaman.

Chiziqlar 24 int daqiqaSt = 35;

Standart soatning boshlanish vaqtini belgilang, odatda uni sozlashdan oldin 5 minut oldin belgilang.

Chiziqlar 25 int soatSt = 18;

Vaqtni STD vaqtiga o'rnating (24 soatlik soat) boshlanadi. 18:00 soat 18 da bo'ladi.

26 -satr int DSTdays = 339;

Siz yashaydigan "DST soatining oson shkalasi" pdf faylini (Shimoliy yoki Janubiy yarim sharda) yuklab oling va unga murojaat qiling, sanani qidiring va # -chi kunni shu qatorga kiriting. (Chap ustun). Misol (24 -noyabr - Shimoliy yarim sharda 339 -kun, janubiy yarim sharda 156 -kun)

27 -satr int DSTyear = 2019;

Joriy yilni kiriting.

92 -qator, agar ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

"OldingiMasterTimeSt" ni millisekundlar bilan taqqoslash kerak, shuning uchun Arduino platasining ichki soatiga qarab bu "1000" 999 ga o'zgarishi mumkin, keyin soatni sozlash uchun avvalgi MicroTime -ni sozlang. Ichki soat, lekin 16MH bir taxtadan boshqasiga farq qiladi.

"AvvalgiMicroTimeSt" ichki soatni aniq 1 soniya sanashga yordam beradi. Agar soat juda tez bo'lsa, mikrosaniyalarni ko'paytiring va agar soat juda sekin bo'lsa, mikrosaniyalarni kamaytiring va agar kerak bo'lsa, millisekundlarni 999 ga tushiring, so'ngra mikrosaniyalarni taxminan 999, 990 da boshlang yoki soat tezligini oshiring.

Har bir Arduino taxtasi biroz boshqacha tezlikka ega, shuning uchun siz ishlatadigan har bir taxtada bu raqamlar o'zgaradi. Kodning bir qismi hali sinovdan o'tkazilmagan, bu har bir sakrash yili uchun 248 -qator. Keyingi bir necha hafta ichida men uni sinab ko'raman va agar kerak bo'lsa, o'zgarishlarni e'lon qilaman.

6 -qadam: Yakuniy eslatmalar

Yakuniy eslatmalar
Yakuniy eslatmalar

Bu loyihani tuzish oson, lekin koddagi kontseptsiya va kerakli o'zgartirishlar vazifa bo'lishi mumkin, shoshmang va o'ylab ko'ring, soat 2037 yil oxirigacha tugamaydi. Men o'z ishimni diqqat bilan kuzatib boraman. Ishonchim komilki, ba'zi savollar bo'ladi, men adabiy daho emasman, shuning uchun ba'zi ta'riflar biroz loyqa bo'lishi mumkin.

Ikkita.pdf fayllar mavjud, siz yashaydigan yarim shar uchun faylni yuklab oling, bu fayl sizga soatni aniq boshlash uchun kerakli ma'lumotlarni beradi.

Eskizda ishlatilgan ma'lumotlar yordamida 2004A LCD displeyida nafaqat standart vaqt va DST vaqtini, balki kun va sanani ko'rsatish oson bo'lardi. Agar sizga ushbu loyiha taqdim etgan qiyinchiliklar yoqsa, 2004A LCD displeyini ulashga harakat qiling, so'ngra qo'shimcha ma'lumotni ko'rsatish uchun kod qo'shing yoki agar qiziqish etarli bo'lsa, men ushbu loyihaning boshqa variantini, shu jumladan, qo'shimcha ma'lumotni ham bajaraman.

Men bu loyihada har tomonlama ishtirok etishga harakat qildim, lekin men dunyodagi uchta sohani topdim. Shimoliy qutb, Janubiy qutb va Ekvator.

Shimoliy yoki Janubiy qutblarda DST kerakmi yoki hatto mumkinmi?

Shimoliy yoki Janubiy qutbda soat nechi?

Shimoliy qutb yoki janubiy qutbni tark etish uchun qaysi yo'nalishda sayohat qilardingiz?

Janubiy qutbdan Avstraliyaga, Shimoliy Amerikaga, Evropaga yoki Osiyoga qanday yo'nalishda sayohat qilardingiz?

Santa qaysi soat mintaqasida yashaydi?

Unga DST kerakmi?

Shimoliy qutbda soat nechada?

Santa barcha sovg'alarini topshirish uchun qaysi yo'nalishda sayohat qiladi?

DST qaysi kenglikda samarali?

Endi Ekvator uchun;

Bu soatni Ekvatorda ishlatish mumkinmi?

Ular Shimoliy yoki Janubiy yarimshar shkalasidan foydalanadimi?

Qishki va yozgi kunduzgi sanalar qanday?

DST qaysi kenglikda samarali?

Pingvinlarga DST kerakmi?

Sizningcha, men bu savollar haqida o'ylayotganda g'alati bo'ldimmi?

Hammaga baxtli qurilish!

yong'oq

7 -qadam: Boshqa havolalar

Bu I2C orqa paketidagi manzilni aniqlash yoki o'zgartirish uchun havola:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS I2C apparat manzillari uchun ajoyib ko'rsatma yozgan

playground.arduino.cc/Main/I2cScanner

Bu havola I2C qurilmangizni skanerlaydi va manzilni qaytaradi

Tavsiya: