İçindekiler:

Emeklilik Saati / Sayım/Dn Saati: 4 Adım (Resimli)
Emeklilik Saati / Sayım/Dn Saati: 4 Adım (Resimli)

Video: Emeklilik Saati / Sayım/Dn Saati: 4 Adım (Resimli)

Video: Emeklilik Saati / Sayım/Dn Saati: 4 Adım (Resimli)
Video: Askerde Koğuş Kalk Saati Uyanamayanada Yuh Artık #2022 #shorts #asker 2024, Kasım
Anonim
Emeklilik Saati / Sayım/Dn Saati
Emeklilik Saati / Sayım/Dn Saati

Çekmecede bu 8x8 LED nokta vuruşlu ekranlardan birkaçı vardı ve onlarla ne yapacağımı düşünüyordum. Diğer talimatlardan esinlenerek, gelecekteki bir tarih/saat için geri sayım yapmak için bir geri sayım/yukarı sayım ekranı oluşturma fikrini aldım ve eğer hedef zaman geçerse ondan geri sayım. Bunu şimdi rafta duran emeklilik saatim yaptım.

Onu bir şişeye koyma fikri, bir kasayı düşünürken daha çok bir kazaydı. Diğerleri gemileri bir şişeye koyar, neden bir saat olmasın?

Ayrıca saatin gün ışığından yararlanma saatine uymasını ve elbette fişten çekildiğinde ayarları ve saati hatırlamasını istedim. Farklı bir şey yapmak veya sadece koda özellikler eklemek isterseniz saati yeniden programlanabilir kılan USB üzerinden saate güç veriyorum. Kod oldukça basittir ve ayrıca birçok optimizasyon kullanabilir. Kabul etmeliyim ki RAM tüketimine iyi bakmadım. Zamanım ve motivasyonum olursa, buna geri döneceğim.

Gereçler

1. Arduino Nano

2. RTC (EEPROM'u da olan ortak DS3231'i kullandım)

3. 12x 8x8 nokta vuruşlu modül. (Sıralaması daha kolay olan dörtlü modüllerim vardı)

4. Ekran parlaklığını ayarlamak için LDR

5. Direnç 10 kOhm

6. Kapasitör 5x 100 uF ekrandaki ani yükselmeleri bastırıyor

7. 8x8 modüllerin kontrastını arttırmak için koyu renkli "Pencere Filmi" kullandım. Ekran, yanmıyorsa LED'leri beyaz noktalar olarak gösterir. Cam filmi parlak siyah bir görünüm verir.

Adım 1: Bileşenleri Bağlayın

Bileşenleri Bağlayın
Bileşenleri Bağlayın
Bileşenleri Bağlayın
Bileşenleri Bağlayın

Ekranı birleştirmek için dörtlü ekranlardan üçünü kullandım. Eğik çizgili bir tarih ve iki nokta üst üste ile saat göstermek için 8 karakterlik alana ihtiyacımız var. Tipik 5x7 yazı tipini kullanarak, satır başına altı adet 8x8 bloğa ihtiyacımız olacak. Dörtlü bloklardan birini ikiye böldüm ve bunları breadboard şemasında gösterildiği gibi iki sıra altı blok olarak düzenledim.

2. Adım: 3D Basılı Parçalar

3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar
3D Baskılı Parçalar

Ekranın iki sırasını tutmak ve bunları şişeye yerleştirmek için ekran çerçevesi için yuvarlak mesafe halkaları yazdırdım. Kullandığım dosyaları aşağıya ekledim. Bunları desteksiz yazdırabilmek için parçalara ayrılırlar. Ekran görüntüsü, ekran çerçevesine yapıştırılmış iki halkayı gösteriyor. Şişe boynu kapağı, görüntüleme modları arasında geçiş yapmak ve mevcut saati ve hedef saati ayarlamak için üç düğmeyi barındırır. TPU'da yazdırdığım şişe boynu kapağı, USB kablosunu konektörleri kesmeden kapağa kaydırmaya ve birkaç sargı teli ile bağlamaya izin veriyor. En dipten kestiğim 1,5 L'lik şarap şişesi kullandığımı söylemeyi unuttum. Basılacak tüm parçalar 20x20 cm (8x8 inç) yazıcı yatağına oturmaktadır.

Adım 3: Kod

Arduino kodu, yaygın olarak kullanılan birkaç kitaplığı kullanıyor.

MD_MAX72xx

SPI

Tel

RTClib

Saat dilimi

Zaman Kitaplığı

INO dosyasında değiştirilmesi gerekebilecek birkaç satır var:

Satır 38: #define HARDWARE_TYPE MD_MAX72XX::FC16_HW <-- 8x8 modülüne ve yönüne bağlıdır

FC16_HW yerine şunlardan biri olabilir:

- MD_MAX72XX::PAROLA_HW

- MD_MAX72XX::GENERIC_HW

- MD_MAX72XX::ICSTATION_HW

- MD_MAX72XX::FC16_HW

Kod, ABD Merkezi saati ayarlarını kullanıyor ve diğer saat dilimleri için ayarlanması gerekiyor:

53/54 satırı:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Yaz Saati UTC-5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Standart saat UTC -6

Bunu ayarlamak kolaydır. CST/CDT adı sadece bir referansa sahip olmak içindir. Üç harfli kısaltmayı göstermiyorum, bu yüzden önemli değil. Sonraki parametreler, geçişin ayın hangi gününde gerçekleştiğini gösterir. Ayarlama dakika cinsindendir, bu nedenle +/- 30 dakikalık ayarlamaları kullanan konumlar da işe yarayacaktır.

RTC, dahili olarak UTC-Time üzerinde çalışır ve saat dilimi kitaplığının istendiği gibi çalışmasına izin verir. Kodun neden benim kullandığım saat çipinin aksine eski DS1307 çipine atıfta bulunduğunu merak edebilirsiniz, ancak bu önemli değil. Kütüphane her iki çiple de iyi çalışıyor. DS1307, DS3132'den daha fazla kayma eğilimine sahiptir. DS3132 tercih edilen saattir. İnternet saati eklemek isteyenler için bir ESP8266 işi oldukça kolay yapacaktır. Bu, RTC'yi geçersiz kılabilir. Bu değişiklikleri yapıyorsanız, hedef zamanı saklamak için Arduino EEPROM'u kullanın, bunu yapmak için RTC EEPROM'u kullandım.

Adım 4: Çalıştırma ve Ayarlar

Çalıştırma ve Ayarlar
Çalıştırma ve Ayarlar
Çalıştırma ve Ayarlar
Çalıştırma ve Ayarlar
Çalıştırma ve Ayarlar
Çalıştırma ve Ayarlar

Üç düğme var

1. Menü / ayarlar

2. Yukarı

3. Aşağı

Menü düğmesi, üç ekran türü arasında geçişe izin verir: Geçerli saat, Hedef saat, Delta Saati. Delta zamanı, mevcut saat ile hedef saat arasındaki gün sayısını, SS/MM/SS'yi gösterir. Hedef gelecekteyse t- ve geri sayım, hedef geçmişte ise t+ ve geri sayım gösterecektir.

Mevcut veya hedef zamanı ayarlamak için mevcut zamanı veya hedef zaman görüntüsünü seçin. Saati değiştirmek için menü düğmesini 2 saniye basılı tutun ve sizi ayar moduna getirecek olan serbest bırakın. Komşu "/" veya ":", hangi basamağı ayarladığınızı belirtmek için "" e dönüşecektir. Bireysel ss/aa/ss ve aa/gg/yy'yi ayarlamak için yukarı/aşağı düğmelerini kullanın. Aa/gg/yy ve gg/aa/yy arasında geçiş yapmak için bir ayar eklemedim, bunun kodda değiştirilmesi gerekiyor veya belki birileri bu özelliği eklemek istiyor.

Dakikaları 59'un üzerine veya 00'ın altına inerseniz saat göstergesinin de ayarlanacağını fark edeceksiniz. aynısı, bu basamak için 0'ın altında veya maksimumun üstünde geçilirse bir sonraki yüksek değeri değiştiren saniyeler, saatler ve günler için de geçerlidir. Bunu, bireysel ayların çeşitli sınırlarını programlamaktan kaçınmak için ve Şubat ayının artık yılda 29 güne ihtiyacı varsa yaptım. Zamanın ayarlanması aslında epoch-time, yani Ocak-1-1970'den bu yana saniyeler cinsinden yapılır.

Saymayı göstermek için basit bir video ekledim. Bunları dönen bir tekerlek göstergesi gibi yapmak istedim. Değişikliğin süresini ayarlamak isterseniz, INO'daki 69. satır, değişikliği hızlandırmak veya yavaşlatmak için size birkaç seçenek sunar. 120ms, sürekli çalışan bir tekerlek olacağı için rakamların yeterince yavaş kaymasını sağlar.

Umarım bu öğreticiyi beğenmişsinizdir.

Patrick Geschwindner

Önerilen: