Mündəricat:

Təqaüd Saatı / Sayma / Dn Saatı: 4 Adım (Şəkillərlə)
Təqaüd Saatı / Sayma / Dn Saatı: 4 Adım (Şəkillərlə)

Video: Təqaüd Saatı / Sayma / Dn Saatı: 4 Adım (Şəkillərlə)

Video: Təqaüd Saatı / Sayma / Dn Saatı: 4 Adım (Şəkillərlə)
Video: Know Your Rights: Social Security Disability Insurance and Supplemental Security Income 2024, Dekabr
Anonim
Təqaüd Saatı / Sayma / Dn Saatı
Təqaüd Saatı / Sayma / Dn Saatı

Çekmecede bu 8x8 LED nöqtə matrisli ekranlardan bir neçəsi vardı və onlarla nə edəcəyimi düşünürdüm. Digər təlimatlardan ilhamlanaraq, gələcək tarixə/saata qədər saymaq üçün geri sayma/yuxarı göstərici qurmaq və hədəf vaxt keçərsə, ondan saymaq fikrinə sahib oldum. Bunu indi rəfdə oturan pensiya saatım etdim.

Bir şüşəyə qoymaq fikri, bir korpus haqqında düşünərkən daha çox qəza idi. Digərləri gəmiləri şüşəyə qoyur, niyə bir saat olmasın?

Saatı yaz vaxtına tabe etmək və əlbəttə ki, şəbəkədən çıxarıldıqda parametrləri və vaxtı xatırlamaq istədim. Fərqli bir şey etmək və ya sadəcə koda xüsusiyyətlər əlavə etmək istəsəniz saatı USB vasitəsi ilə gücləndirirəm ki, bu da onu yenidən proqramlaşdırıla bilər. Kod olduqca sadədir və bir çox optimallaşdırma da istifadə edə bilər. Etiraf etməli olduğum RAM istehlakına yaxşı baxmadım. Vaxtım və motivasiyam varsa, ona qayıdacağam.

Təchizat

1. Arduino Nano

2. RTC (EEPROM da olan ümumi DS3231 istifadə etdim)

3. 12x 8x8 nöqtəli matris modulu. (Sıralamaq daha asan olan dörd modullarım vardı)

4. Ekranın parlaqlığını tənzimləmək üçün LDR

5. Rezistor 10 kOhm

6. Kondansatör 5x 100 uF ekrandan sıçrayışları bastırır

7. 8x8 modullarının kontrastını artırmaq üçün qaranlıq rəngli "Pəncərə Filmi" ndən istifadə etdim. Ekranda LEDlər yanmırsa ağ nöqtələr kimi göstərilir. Pəncərə filmi onu parlaq qara bir görünüşə çevirir.

Addım 1: Komponentləri birləşdirin

Komponentləri birləşdirin
Komponentləri birləşdirin
Komponentləri birləşdirin
Komponentləri birləşdirin

Ekranı yığmaq üçün dörd displeydən üçünü istifadə etdim. Çizgi ilə bir tarixi və iki nöqtə ilə vaxt göstərmək üçün 8 simvol üçün boş yerə ehtiyacımız var. Tipik 5x7 şriftdən istifadə edərək, hər satırda altı ədəd 8x8 bloka ehtiyacımız var. Dörd blokdan birini yarıya böldüm və çörək taxtasının sxemində göstərildiyi kimi bunları altı blokla iki sıra təşkil etdim.

Addım 2: 3D çaplı hissələr

3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr
3D çaplı hissələr

Ekranın iki cərgəsini tutmaq və bunları şüşəyə yerləşdirmək üçün ekran çərçivəsi üçün yuvarlaq məsafəli üzüklər çap etdim. Aşağıda istifadə etdiyim faylları əlavə etdim. Bunları dəstək olmadan çap edə bilmək üçün hissələrə bölünürlər. Ekran görüntüsü, ekran çərçivəsinə yapışdırılmış iki üzüyü göstərir. Şüşə boyun qapağı, ekran rejimləri arasında keçmək və cari vaxt və hədəf vaxtını təyin etmək üçün üç düyməni yerləşdirir. TPU -da çap etdiyim şüşə boyun qapağı, USB kabelini bağlayıcıları kəsmədən qapağa sürüşdürməyə və bir neçə tel sarımla bağlamağa imkan verdi. Dibində kəsdiyim 1.5 L şərab şüşəsindən istifadə etdiyimi qeyd etməyi unutmuşam. Çap ediləcək bütün hissələr 20x20 sm (8x8 düym) ölçülü bir printer yatağına yerləşdirilmişdir.

Addım 3: Kod

Arduino kodu çox istifadə olunan bir neçə kitabxanadan istifadə edir.

MD_MAX72xx

SPI

Tel

RTClib

Saat qurşağı

TimeLib

INO faylında dəyişdirilməsi lazım ola biləcək bir neçə sətir var:

Satır 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- 8x8 moduldan və istiqamətindən asılıdır

FC16_HW əvəzinə bunları edə bilər:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Kod ABŞ Mərkəzi vaxtı üçün parametrlərdən istifadə edir və digər vaxt zonaları üçün düzəlişlərə ehtiyac duyur:

Satır 53/54:

TimeChangeRule myDST = {"CDT", İkincisi, Günəş, Mart, 2, -300}; // Gündüz Saatı UTC -5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Standart vaxt UTC -6

Bu tənzimləmək asandır. CST/CDT adı yalnız bir istinad üçündür. Üç hərfli qısaltmanı göstərmirəm, buna görə fərq etməz. Növbəti parametrlər, keçidin hansı ayda baş verdiyini göstərir. Düzəliş dəqiqələrlə aparılır, buna görə +/- 30 dəqiqəlik düzəlişlərdən istifadə edən yerlər də işləyəcək.

RTC daxili olaraq UTC-Time-da işləyir, saat qurşağı kitabxanasının istədiyi kimi işləməsinə imkan verir. Kodun istifadə etdiyim saat çipinin əksinə olan köhnə DS1307 çipinə niyə istinad etdiyini düşünə bilərsiniz, amma bunun əhəmiyyəti yoxdur. Kitabxana hər hansı bir çip ilə yaxşı işləyir. DS1307, DS3132 -dən daha çox sürüşmə meylinə malikdir. DS3132 üstünlük verilən saatdır. İnternet vaxtı əlavə etmək istəyənlər üçün bir ESP8266 işi olduqca asanlıqla yerinə yetirəcək. Bu, RTC -ni köhnəltməyə səbəb ola bilər. Bu dəyişiklikləri edirsinizsə, hədəf vaxtını saxlamaq üçün Arduino EEPROM -dan istifadə edin, bunu etmək üçün RTC EEPROM -dan istifadə etdim.

Addım 4: Əməliyyat və Ayarlar

Əməliyyat və Ayarlar
Əməliyyat və Ayarlar
Əməliyyat və Ayarlar
Əməliyyat və Ayarlar
Əməliyyat və Ayarlar
Əməliyyat və Ayarlar

Üç düymə var

1. Menyu / parametrlər

2. Yuxarı

3. Aşağı

Menyu düyməsi üç ekran tipində velosiped sürməyə imkan verir: Cari vaxt, Hədəf vaxtı, Delta vaxtı. Delta vaxtı, cari vaxt və hədəf vaxt arasındakı HH/MM/SS günlərinin sayını göstərir. Hədəfin gələcəkdə olduğunu və ya t+ olduğunu və hədəfin keçmişdə olduğunu hesablayarkən t və geri sayma göstərəcək.

Cari və ya hədəf vaxtını tənzimləmək üçün cari vaxtı və ya hədəf vaxtı göstərməsini seçin. Vaxtı dəyişdirmək üçün menyu düyməsini 2 saniyə basıb saxlayın və sizi buraxma rejiminə gətirəcək. Hansı rəqəmi düzəltdiyinizi göstərmək üçün qonşu "/" və ya ":" "" -ə çevriləcək. Yuxarı/aşağı düymələrindən istifadə edərək fərdi hh/mm/ss və aa/gg/yy ayarlar. Aa/gg/yy ilə gg/aa/yy arasında keçid etmək üçün bir parametr əlavə etmədim, bunun kodda dəyişdirilməsi lazımdır və ya bəlkə də kimsə bu xüsusiyyəti əlavə etmək istəyir.

Dəqiqələri 59 -dan yuxarı və ya 00 -dan aşağı atsanız, saat ekranının da tənzimlənəcəyini görəcəksiniz. Eyni rəqəm, bu rəqəm üçün maksimumun 0 -dan aşağı və ya yuxarıdan keçməsi halında növbəti yüksək dəyəri dəyişən saniyələr, saatlar və günlər üçün də keçərlidir. Fərdi ayların müxtəlif məhdudiyyətlərini proqramlaşdırmamaq üçün və fevral ayının bir sıçrayış ilində 29 günə ehtiyacı olduğu halda bunu etdim. Vaxtı düzəltmək əslində 1-1970-ci illərdən bəri saniyə ərzində aparılır.

Hesablamanı göstərmək üçün sadə bir video əlavə etdim. Bunları dönər təkərli ekran kimi etmək istəyirdim. Dəyişiklik müddətini tənzimləmək istəsəniz, INO -dakı 69 -cu satır, dəyişikliyi sürətləndirmək və ya yavaşlatmaq üçün bir neçə variant verir. 120ms rəqəmlərin kifayət qədər yavaş sürüşməsini təmin edərdi, çünki bu daimi olaraq işləyən təkərdir.

Ümid edirəm bu dərsdən zövq aldınız.

Patrick Geschwindner

Tövsiyə: