Mundarija:

Pensiya soati / hisoblash / Dn soati: 4 qadam (rasmlar bilan)
Pensiya soati / hisoblash / Dn soati: 4 qadam (rasmlar bilan)

Video: Pensiya soati / hisoblash / Dn soati: 4 qadam (rasmlar bilan)

Video: Pensiya soati / hisoblash / Dn soati: 4 qadam (rasmlar bilan)
Video: Скандальная Альбина_Рассказ_Слушать 2024, Iyun
Anonim
Pensiya soati / hisoblash / Dn soati
Pensiya soati / hisoblash / Dn soati

Menda tortmasida 8x8 o'lchamli LED nuqta matritsali displeylar bor edi va ular bilan nima qilish kerakligi haqida o'yladim. Boshqa ko'rsatmalardan ilhomlanib, men kelajakdagi sana/vaqtni sanash uchun orqaga/yuqoriga ko'rsatish ekranini yaratish g'oyasini oldim va agar belgilangan vaqt o'tgan bo'lsa, undan hisoblang. Men buni tokchada o'tirgan pensiya soatim qilib qo'ydim.

Uni shishaga solib qo'yish fikri korpus haqida o'ylash paytida ko'proq tasodif edi. Boshqalar kemalarni shishaga soladilar, nega soat emas?

Men ham soatni yozgi vaqtga bo'ysundirmoqchi edim va, albatta, tarmoqdan uzilgan vaqtni va sozlamalarni eslayman. Men soatni USB orqali quvvatlantiryapman, agar siz boshqa biror narsa qilishni xohlasangiz yoki kodga xususiyatlar qo'shishni xohlasangiz, uni qayta dasturlash mumkin. Kod juda sodda va ko'p optimallashtirishni ham ishlatishi mumkin. Men tan olishim kerak bo'lgan RAM iste'mol qilish haqida yaxshi g'amxo'rlik qilmadim. Agar menda vaqt va motivatsiya bo'lsa, men unga qaytaman.

Ta'minotlar

1. Arduino Nano

2. RTC (men EEPROMga ega bo'lgan umumiy DS3231 dan foydalanardim)

3. 12x 8x8 nuqtali matritsali modul. (Menda to'rtta modul bor edi, ularni navbatga qo'yish osonroq edi)

4. Displey yorqinligini sozlash uchun LDR

5. Rezistor 10 kOm

6. Kondansatkich 5x 100 uF displeydagi chayqalishni bostiradi

7. 8x8 modullarning kontrastini oshirish uchun men qorong'i tusli "Oynali plyonka" dan foydalandim. Agar displey yonmagan bo'lsa, LEDlar oq nuqta sifatida ko'rsatiladi. Deraza plyonkasi uni yaltiroq qora ko'rinishga aylantiradi.

1 -qadam: Komponentlarni ulang

Komponentlarni ulang
Komponentlarni ulang
Komponentlarni ulang
Komponentlarni ulang

Displeyni yig'ish uchun to'rtta to'rtta displeydan foydalandim. Sana va chiziqlar bilan vaqtni ko'rsatish uchun bizga 8 ta belgidan iborat bo'sh joy kerak. Oddiy 5x7 shriftdan foydalanib, har bir satr uchun oltita 8x8 blok kerak bo'ladi. Men to'rtburchaklar bloklardan birini yarmiga kesib tashladim va ularni non paneli sxemasida ko'rsatilgandek, ikki qatorli olti blokga ajratdim.

2 -qadam: 3D bosilgan qismlar

3D bosilgan qismlar
3D bosilgan qismlar
3D bosilgan qismlar
3D bosilgan qismlar
3D bosilgan qismlar
3D bosilgan qismlar

Displeyning ikkita qatorini ushlab turish va ularni shishaga joylashtirish uchun men ekran ramkasi uchun yumaloq masofali halqalarni bosdim. Men quyida ishlatilgan fayllarni qo'shdim. Qo'llab -quvvatlamasdan chop etish uchun ular qismlarga bo'linadi. Skrinshotda displey ramkasiga yopishtirilgan ikkita halqa ko'rsatilgan. Shishaning bo'yni qopqog'i uchta tugmachani o'z ichiga oladi, bu displey rejimlari o'rtasida o'tish va joriy vaqt va maqsadli vaqtni sozlash uchun mo'ljallangan. Men TPU -da bosilgan shisha bo'yin qopqog'i, USB kabelini ulagichlarni uzmasdan qopqog'iga suring va uni bir nechta o'rash simlari bilan bog'lab qo'ying. Men 1,5 L sharob shishasidan foydalanganimni aytishni unutdim. Bosib chiqariladigan barcha qismlar 20x20 sm (8x8 dyuymli) printer to'shagiga o'rnatiladi.

3 -qadam: Kod

Arduino kodi ko'p ishlatiladigan kutubxonalardan foydalanadi.

MD_MAX72xx

SPI

Tel

RTClib

Vaqt zonasi

TimeLib

INO faylida o'zgarishi mumkin bo'lgan bir nechta satrlar mavjud:

38-qator: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- 8x8 modul va uning yo'nalishiga bog'liq

FC16_HW o'rniga quyidagilardan biri bo'lishi mumkin:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Kod AQShning markaziy vaqti sozlamalarini ishlatadi va boshqa vaqt zonalari uchun sozlashni talab qiladi:

53/54 qator:

TimeChangeRule myDST = {"CDT", Ikkinchi, Quyosh, 2 -mart, -300}; // Kunduzgi vaqt UTC -5TimeChangeRule mySTD = {"CST", birinchi, quyosh, noyabr, 2, -360}; // Standart vaqt UTC -6

Bu sozlash oson. CST/CDT nomi faqat ma'lumotga ega. Men uchta harfli qisqartmani ko'rsatmayman, shuning uchun bu muhim emas. Keyingi parametrlar qaysi oyda qaysi kunga o'tishini ko'rsatadi. O'zgartirish bir necha daqiqada, shuning uchun +/- 30 daqiqali sozlamalarni ishlatadigan joylar ham ishlaydi.

RTC ichki ravishda UTC-Time da ishlaydi, vaqt zonasi kutubxonasi maqsadga muvofiq ishlashiga imkon beradi. Siz nima uchun kod men ishlatgan soat chipiga qarama -qarshi bo'lgan eski DS1307 chipiga ishora qilayotganiga hayron bo'lishingiz mumkin, lekin bu muhim emas. Kutubxona har qanday chip bilan ham yaxshi ishlaydi. DS1307 modeli DS3132 ga qaraganda ancha uzoqlashib ketadi. DS3132 afzal qilingan soat. Internet vaqtini qo'shishni istaganlar uchun ESP8266 bu ishni juda oson bajaradi. Bu RTCni eskirishi mumkin. Agar siz ushbu o'zgarishlarni amalga oshirayotgan bo'lsangiz, maqsadli vaqtni saqlash uchun Arduino EEPROM -dan foydalaning, men buni amalga oshirish uchun RTC EEPROM -dan foydalandim.

4 -qadam: Operatsiya va sozlash

Operatsiya va sozlash
Operatsiya va sozlash
Operatsiya va sozlash
Operatsiya va sozlash
Operatsiya va sozlash
Operatsiya va sozlash

Uchta tugma mavjud

1. Menyu / sozlash

2. Yuqoriga

3. Pastga

Menyu tugmasi uchta displey turida velosipedda harakatlanish imkonini beradi: Joriy vaqt, Maqsadli vaqt, Delta vaqti. Delta vaqti joriy vaqt va maqsadli vaqt oralig'idagi kunlar sonini, HH/MM/SS ni ko'rsatadi. Bu maqsad kelajakda bo'lsa, t- va orqaga sanashni ko'rsatadi, yoki nishon o'tmishda bo'lsa- yuqoriga.

Joriy yoki maqsadli vaqtni sozlash uchun joriy vaqtni yoki maqsadli vaqt ko'rsatilishini tanlang. Vaqtni o'zgartirish uchun menyu tugmachasini 2 soniya ushlab turing va qo'yib yuboring, bu sizni sozlash rejimiga olib keladi. Qaysi raqamni to'g'rilayotganingizni ko'rsatish uchun qo'shni "/" yoki ":" "" ga aylanadi. Shax/s/s va mm/gg/yy ni sozlash uchun yuqoriga/pastga tugmalaridan foydalaning. Men mm/dd/yy va dd/mm/yy o'rtasida o'tish uchun sozlamani qo'shmadim, bu kodni o'zgartirishi kerak yoki kimdir bu xususiyatni qo'shishga tayyor bo'lishi mumkin.

Agar siz daqiqalarni 59 dan yuqori yoki 00 dan pastroqqa qo'ysangiz, soat ko'rsatkichi ham o'zgaradi. xuddi shu soniya, soat va kunlar uchun ham amal qiladi, agar bu raqam uchun maksimal 0 dan past yoki undan yuqori bo'lsa, keyingi yuqori qiymat o'zgaradi. Men buni individual oylarning turli chegaralarini dasturlashdan qochish uchun qildim va agar fevralda kabisa yilida 29 kun kerak bo'lsa. Vaqtni to'g'rilash, aslida, 1-1970 yil yanvaridan boshlab, soniyalarda amalga oshiriladi.

Men hisoblashni ko'rsatish uchun oddiy video qo'shdim. Men ularni aylanadigan g'ildirakli displeyga o'xshatmoqchi edim. Agar siz o'zgartirish muddatini o'zgartirishni xohlasangiz, INO 69 -qatorida o'zgarishlarni tezlashtirish yoki sekinlashtirish uchun bir nechta variantlar mavjud. 120ms raqamlar sekin aylanishga olib keladi, chunki bu doimiy ishlaydigan g'ildirak.

Umid qilamanki, sizga bu ko'rsatma yoqdi.

Patrik Geshvindner

Tavsiya: