İçindekiler:
- 1. Adım: Saat Hakkında
- 2. Adım: Neye İhtiyacınız Olacak?
- Adım 3: Kablolama
- 4. Adım: Ekranın Gösterdiği
- Adım 5: Eskiz Kurulumu
- 6. Adım: Son Notlar
- 7. Adım: Diğer Bağlantılar
Video: Kolay Yaz Saati Uygulaması: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Hikaye
Bu proje, Arduino Uno ve tek bir 1602A LCD ekran ile programlama (kodlama) öğrenmem için bir meydan okuma olarak başladı, önce Arduino'yu doğruluk için sınırlarını zorlamak istedim. Bu, RTC modülü (Gerçek Zamanlı Saat modülü) kullanmadan bir saat oluşturma ve ayrıca herhangi bir delay() kullanmama projesidir; komutlar, çünkü delay(); komutu, kodu belirli bir süre boyunca durdurur. Temel zaman tutma kodu üzerinde çalışırken, bunun biraz sıradan olabileceğini düşündüm, bu yüzden işleri renklendirmek ve muhtemelen bu projeye biraz daha fazla ilgi yaratmak için yeni bir ek olarak bir yaz saati özelliği eklemeye karar verdim. İlk başta fikir tamamen yeniydi ama onunla ne kadar çok çalışırsam ve masamda çalıştırdığım fiziksel saati izlersem fikir o kadar pratik hale geliyor. Bir RTC modülü ekleyerek ve kodu ayarlayarak bu saat, gelecek yıllar için doğru olacaktır ve böyle bir saati satın alan üreticiler ve halk için çok düşük maliyetle olacaktır.
Yaz Saati Uygulaması veya (DST) 100 yılı aşkın bir süredir var (Google, oldukça renkli bir geçmişi var). Bunun siyasetine girmek istemiyorum ama sıradan insanlar (siz ve ben) için hayatı kolaylaştırmayan, kaba ve acı verici bir alıştırma. Çoğunlukla, fazladan gün ışığının tadını çıkarırız, ancak uygulanma şekli acımasızdır. Çok eski bir fikre büyük bir yükseltme yapmanın zamanı geldi.
Bu örnek, dijital çağla ve dijital saatlerin tüm biçimlerine kolayca uygulanan teknolojideki gelişmelerle birlikte yaşamak kolaydır, ancak analog saatin yok olmasına yardımcı olabilir. Standart zamandan DST zamanına, ardından DST zamanından standart zamana 1 saatlik bir atlamadan ziyade, bu saat, kış gündönümünden yaz gündönümüne ve her yıl bir sonraki kış gündönümünde standart zamana geri dönen zamanın kademeli olarak ilerlemesine dayanır. Bu geçiş her 6 ayda bir 180 gün boyunca gerçekleşir, ayarlama 360 gün için günde 20 saniyedir ve kalan 5 veya 6 gün gündönümlerinin uzunluğuna eklenir. Buradaki örneğim, 180 günlük döngü içinde her üç günde bir 1 dakika artırıyor. Her yıl 21 Haziran'da veya yaklaşık olarak saat 1 saat ileridedir ve her yılın 21 Aralık'ta veya yaklaşık olarak saat standart zamana geri döndü. Artık yıl, özellikle bir RTC kullanılıyorsa kolayca hesaplanır. Güney Yarımküre de bu saate kolayca uyarlanır, slayt ölçeği kuzey yarımküreden sadece 6 ay ötededir.
Ekvator bölgesi ve kutuplar hariç, dünyada DST'nin hemen hemen olacağı üç yer var. Ekvatorda gün ışığının pek değiştiğini sanmıyorum, tropik bölgelerden herhangi birinin DST kullanıp kullanmadığını bilmiyorum ve kutuplar yine farklı bir hikaye, sadece kutuplarda 'KAÇ' saat zaten?
1. Adım: Saat Hakkında
Oluşturduğum saat, uluslararası kabul görmüş dünya saatinden asla farklı olmayan standart zamana dayanmaktadır, bu 1602 LCD'nin ilk satırında görüntülenmektedir. İkinci satır aynı zaman ölçeğidir, ancak bir gündönümünden diğerine dakikaların kaymasını gösterir. Kış gündönümünden yaz gündönümüne kadar sapma, her üç günde bir, maksimum altmış dakikaya kadar bir dakika artar. Yaz gündönümünden kış gündönümüne kadar sapma, standart saat ve DST saati aynı olana kadar her üç günde bir bir dakika azalır.
Bu örnek için, 24 saatlik zaman ölçeğine aşina olmayan insanlara yardımcı olmak için askeri zamanı (24 saatlik) ve standart zamanı (12 saatlik) AM ve PM kullandım, ayrıca odama DST'nin gün numarasını görüntülemesini sağladı. itibaren ayarlayın. Kod, 12 saatlik biçimi gösterecek şekilde değiştirilebilir. Zamanı ayarlamak için 2, 3 ve 4 numaralı dijital pinlere bağlı üç buton ekledim. Bu düğmeler yalnızca saniyeleri, dakikaları veya saatleri artıracaktır. Düğmeler isteğe bağlıdır, düğmeleri bağlamazsanız ve kodu değiştirmenize gerek kalmazsa saat yine de iyi çalışır. Saniyeleri ayarlamak için en azından bir düğme kullanmanızı tavsiye ederim ve tam doğruluk elde edilemezse saati yavaş tutun, düğme zamanı saniyede 1 saniye ilerletir.
Saati Arduino IDE'den başlatırsanız, çizimin yüklenmesi ve önyüklenmesi yaklaşık 5,5 ila 6 saniye sürer, eğer Arduino'ya yüklenmiş bir çiziminiz varsa, onu bir duvar siğiline veya güç kaynağına takın, yaklaşık 2,5 ila 6 saniye sürer. Önyükleme ve çalıştırma için 3 saniye.
Saati nihayet çalışmaya hazır hale getirdiğinizde bazı manuel kurulumlar gerekiyor.
Bu saat bir RTC modülü kullanmaz ve "delay();" kullanmaz. komutlar.
RTC'yi Arduino ile kullanmayı seviyorsanız, bu konsept yine de kullanılabilir. RTC, EDSC zamanını eklemek için ihtiyacınız olan tüm bilgileri size verecektir. Kod, bir RTC modülünde oldukça farklı olabilir, onu incelemedim. Bunu yaparsanız hemen hemen kendi başınızasınız ama bu beyninizi çalıştırmanın harika bir yolu.
2. Adım: Neye İhtiyacınız Olacak?
ALIŞVERİŞ LİSTESİ
1 Arduino Uno veya Mega2569 (I2C pinleri UNO'da A4 ve A5 ve 2560 Mega'da 20 ve 21'dir)
Hemen hemen diğer Arduino'ların çalışması gerekir, kullanılan pinler farklı olabilir. Bu konuda, herhangi bir denetleyici kartı çalışacaktır. Bu pano veya üretici için kodu yeniden yazmanız gerekecek.
1 1602 LCD ekran (seçtiğiniz renk)
LCD ile bir I2C sırt çantası kullanıyorum, kurulumu daha kolay ve daha hızlı buluyorum.
Atlama telleri
OPSİYONEL MALZEMELER
1 orta boy ekmek tahtası
1-3 anlık kontak butonları
1-3 10 K ohm dirençler
Bu talimat uzun, bu yüzden saati görüntülemek için kullandığım montaj veya kabine girmeyeceğim. Bu projeyi beğendiyseniz ve kalıcı bir versiyon yapmak istiyorsanız, beğeninize göre tasarlayın. Bu tasarım benim için mükemmel çünkü ihtiyacım olan her şey çöp kutumda vardı ve görünüşünü beğendim.
NOTLAR:
Elektrik kesintilerinin çukur düşmelerini önlemek için son saatim dışarıda sahip olduğum bir güneş paneli tarafından destekleniyor. Güneş paneli, aşırı şarjı önlemek için üzerinde bir regülatör bulunan 12 voltluk bir pili şarj eder. Bu pil, USB bağlantı noktasının yanındaki güç jakı aracılığıyla Arduino'ya bağlanır. Pilin çekişini azaltmak için USB bağlantı noktasını şebekeye bağlı tutuyorum. Her iki güç kaynağı da Arduino'ya zarar vermeden aynı anda kullanılabilir. 12 voltluk bir pil maksimum 14.5 volta şarj edilebilir, bu Arduino için çok yüksektir, bu yüzden pilden gelen besleme voltajını 9 ila 12 volt aralığına düşürmek için bir dönüştürücü kullanıyorum. Şarjlı tuttuğum 12 voltluk pil, günler bulutluysa 3 veya 4 gün dayanır. Kullandığım regülatör, pil voltajı 11 volta düşerse Arduino'ya giden gücü kesecek. Sahip olduğum pil, ticari binalar için acil durum ışık sisteminden geliyor, küçük bir araba aküsünün yaklaşık dörtte biri büyüklüğünde. Bir araba aküsü kullanmayı düşünüyorsanız, onu iyi havalandırılan bir alanda (dışarıda) tuttuğunuzdan emin olun, araba aküleri şarj olurken ve boşalırken hidrojen ve oksijen gazı verir, bu patlayıcı bir kombinasyondur.
UYARI
PİLİ BİR KUYUDA TUTUN
HAVALANDIRILMIŞ ALAN, DIŞTAN
Adım 3: Kablolama
Bu projedeki tüm bağlantılar için bir şema verdim, bir breadboard kullanıyorsanız orta büyüklükte bir tahtaya ihtiyacınız olacak, devrenin kafa karıştırıcı olmaması için anahtarların yayılması için alana ihtiyacı olacak.
1602 LCD ekran, basitlik için bir I2C sırt çantasına sahiptir, SPI bağlantılarını kullanıyorsanız, nasıl kullanılacağına bakmanız ve çizimin başlangıcına yakın bir yerde kodu değiştirmeniz gerekecektir. SPI bağlantılarını hiç kullanmadım, bu nedenle 2, 3 ve 4 numaralı pinler üç basma düğmesi için kullanılamayabilir.
Saatteki zamanı ayarlamak için üç basma düğmesi kullanılır. Sadece zamanı ilerletirler (AHEAD). Son ayarlamalarda saati yavaş tarafta kodda tutun (günde yaklaşık 1 ila 2 saniye veya birkaç gün), bu şekilde gerekirse zamanı ilerletebilirsiniz. Her düğme, zamanı saniyede bir artışla, alt düğme saniyede 2 saniye, orta düğme saniyede 1 dakika ve üst düğme saniyede 1 saat ilerletir. Oldukça yüksek bir doğruluk derecesi yapılabilir, böylece çok sık ayarlamanıza gerek kalmaz.
Saniye, dakika veya saati ayarlıyorsanız (örneğin dakikalar 58, 59, 00 ileri alınmışsa) saat bir sonraki saate ilerleyecektir.
Bu üç düğme saate eklenen son dakikalardır, iyi çalışırlar ancak daha iyi bir yol olabilir. Kodun bu kısmıyla uğraşırsanız, "delay();" komutu kullanılamaz. Bu yöntemi kullandım çünkü zaman ilerlemelerinde anahtar sıçraması ve garip sıçramalar hakkında endişelenmeme gerek yok.
4. Adım: Ekranın Gösterdiği
1602 LCD ekrana biraz açıklama gerektiren birçok bilgi koydum:
Satır 1 veya satır sıfır '0' kodlu konuşurken standart zamanı gösterir. Solda 'STD' var, bu 'STandarD' zamanı anlamına geliyor.
Ortadaki ilk satırda sonraki yerel standart saatiniz. Yaz saati ile başlamayın, saat bunu ikinci satırda gösterecektir.
Bu zaman ölçeği 12 saatlik bir saattir, bu nedenle sağ tarafta sabah veya öğleden sonrayı belirtmek için 'AM veya 'PM' dir.
2. satır veya kodlu konuşurken 1. satır, yılın gününe göre değişen gün ışığından yararlanma saatini gösterir. Soldaki 'DST', 'Yaz Saati Uygulaması' anlamına gelir
İkinci satırın ortasında, 24 saatlik yerel askeri saatiniz var. Örneğin 'oh altı yüz saat' olarak anıldığını duyacaksınız.
Sağ tarafta kış gündönümünden referans olarak yılın günü, Kuzey Yarımküre'de 21 Aralık (yaklaşık olarak) sıfırıncı gün '0' ve Güney Yarımküre'de 21 Haziran (yaklaşık olarak) sıfırıncı gün '0'.
Saati ilk kurarken referans olması için iki.pdf dosyası sağladım. Yaşadığınız yarıküreye atıfta bulunan dosyayı seçin.
Sağdaki üç düğme saniye, dakika ve saati aşağıdan yukarıya doğru artırır.
Adım 5: Eskiz Kurulumu
İlk başlatma için ayarlanması gereken birkaç kod satırı vardır. Saatin bağlantısını her kestiğinizde ve çizimdeki değişkenlerin değerlerini değiştirdiğinizde bu çizgilerden bazılarının değişmesi gerekir. IDE için saati başlatırsanız, yüklenmesi ve başlaması yaklaşık 6 saniye sürer. Çizimi IDE'den yüklerseniz, saati çıkarın ve bir duvar siğilinden veya güç kaynağından yeniden başlatın, çizim yaklaşık 2,5 saniye içinde açılacaktır.
Satır 11 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
Bu satır, LCD ekranı adresler ve I2C sırt çantasının uygun adresini ayarlar. 0x27, satın aldığım sırt paketlerinin herhangi birinin adresi. Saati açarsanız, ancak görüntülenen veri yoksa ancak yanarsa, adres muhtemelen LCD'nizde farklıdır. LCD sırt çantanızın adresini nasıl değiştireceğiniz veya adresi nasıl bulacağınız ile ilgili bir açıklama için aşağıya bir bağlantı koyacağım.
Satır 24 int dakikaSt = 35;
Standart saat için başlangıç dakikasını ayarlayın, genellikle kurulum süresine izin vermek için saati başlatmadan 5 dakika önce ayarlayın.
Satır 25 int saatSt = 18;
Saati STD zamanına (24 saatlik saat) ayarlayın. 18.00, 18. saat olacaktır.
26. satır int DSTdays = 339;
Yaşadığınız "Kolay DST Saat Zaman Ölçeği" pdf dosyasını (Kuzey veya Güney Yarımküre) indirin ve bakın, tarihe bakın ve Gün #'yi bu satıra ekleyin. (Sol sütun). Örnek (24 Kasım, Kuzey Yarımküre'de 339. gün ve Güney Yarımküre'de 156. gündür)
Satır 27 int DSTyıl = 2019;
Geçerli yılı girin.
Satır 92 if ((masterTime - öncekiMasterTimeSt >=1000) && (microTime - öncekiMicroTimeSt >= 500)){
"ÖncekiMasterTimeSt" milisaniye sayısıyla karşılaştırılmalıdır, bu nedenle bu '1000' Arduino kartının dahili saatine bağlı olarak 999'a değişmesi ve ardından saati ince ayar yapmak için öncekiMicroTime'ı ayarlaması gerekebilir. Dahili saat, 16MH'nin bir karttan diğerine farklılıklar göstermesine rağmen.
"ÖncekiMicroTimeSt", 1 saniyeyi doğru bir şekilde saymaya yardımcı olmak için dahili saati ince ayarlar. Saat çok hızlıysa mikrosaniyeyi artırın ve saat çok yavaşsa mikrosaniyeyi azaltın ve gerekirse milisaniyeyi 999'a düşürün ve ardından mikrosaniyeyi yaklaşık 999,990'da başlatın veya saati artırın.
Her Arduino kartının biraz farklı bir hızı vardır, bu nedenle bu sayılar kullandığınız her kartta değişecektir. Kodun bir kısmı henüz test edilmedi, bu, her artık yılı hesaba katan 248 satırıdır. Önümüzdeki birkaç hafta içinde test edeceğim ve gerekirse değişiklikleri yayınlayacağım.
6. Adım: Son Notlar
Bu projeyi inşa etmek kolaydır ancak koddaki konsept ve gerekli ayarlamalar bir görev olabilir, zaman ayırın ve düşünün, saat 2037'nin sonuna kadar sona ermez. sorular için e-posta e-posta gönder, eminim bazıları olacaktır, edebi bir deha değilim, bu yüzden bazı açıklamalarım biraz çamurlu olabilir.
İçinde iki adet.pdf dosyası var, yaşadığınız yarımkürenin dosyasını indirin, bu dosya saati doğru başlatmanız için size gerekli bilgileri verecektir.
Taslakta manipüle edilen bilgilerle, 2004A LCD'de sadece standart saat ve DST saatini değil, aynı zamanda gün ve tarihi de görüntülemek kolay olacaktır. Bu projenin sağladığı zorlukları seviyorsanız, 2004A LCD ekran bağlamayı deneyin, ardından ek bilgileri görüntülemek için kod ekleyin veya yeterli ilgi gösterilirse, bu ek bilgileri içeren bu projenin başka bir varyasyonunu yapacağım.
Bu projede her şeyi kapsayıcı olmaya çalıştım ama dünyada söz konusu üç alan buldum. Kuzey Kutbu, Güney Kutbu ve Ekvator.
Kuzey veya Güney Kutuplarında DST gerekli mi, hatta mümkün mü?
Kuzey veya Güney Kutbu'nda saat kaç?
Kuzey Kutbu'ndan veya Güney Kutbu'ndan ayrılmak için hangi yöne gidersiniz?
Güney Kutbu'ndan Avustralya'ya, Kuzey Amerika'ya, Avrupa'ya veya Asya'ya ulaşmak için hangi yöne gidersiniz?
Noel Baba hangi saat diliminde yaşıyor?
DST'ye ihtiyacı var mı?
Zaten Kuzey Kutbu'nda saat kaç?
Noel Baba tüm hediyelerini teslim etmek için hangi yöne gidiyor?
DST hangi enlemde etkilidir?
Şimdi Ekvator için;
Bu saat Ekvator'da kullanılabilir mi?
Kuzey Yarımküre ölçeğini mi yoksa Güney Yarımküre ölçeğini mi kullanırlar?
Kış gündönümü ve yaz gündönümü tarihleri nelerdir?
DST hangi enlemde etkilidir?
Penguenlerin DST'ye ihtiyacı var mı?
Bu soruları düşündüğüm için garip olduğumu mu düşünüyorsun?
Herkese mutlu bina!
ceviz
7. Adım: Diğer Bağlantılar
Bu, I2C sırt çantasındaki adresi belirlemek veya değiştirmek için bir bağlantıdır:
www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/
PiotrS, I2C donanım adresleri için mükemmel bir talimat yazmıştır.
playground.arduino.cc/Main/I2cScanner
Bu bağlantı I2C cihazınızı tarayacak ve adresi döndürecektir.
Önerilen:
ESP8266'yı Kullanan Ağ Saati Dijital Saati: 4 Adım (Resimlerle)
ESP8266'yı Kullanarak Ağ Saati Dijital Saati: NTP sunucuları ile iletişim kuran ve ağ veya internet saatini gösteren küçük şirin bir dijital saatin nasıl oluşturulacağını öğreniyoruz. WeMos D1 mini'yi bir WiFi ağına bağlanmak, NTP zamanını almak ve bir OLED modülünde görüntülemek için kullanıyoruz.Yukarıdaki video t
Emeklilik Saati / Sayım/Dn Saati: 4 Adım (Resimli)
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 tarihe/saate geri sayım yapmak için bir geri sayım/yukarı geri sayım ekranı oluşturma fikrini aldım ve eğer hedef zaman p
Uygulaması Kolay Kullanıcı Arayüzü -- Joystick ve Düğmeli OLED Ekran: 6 Adım
Uygulaması Kolay Kullanıcı Arayüzü || Joystick ve Düğmeli OLED Ekran: Bu modül, iki düğmeli, 5 yönlü joystick'li ve 3 eksenli ivmeölçerli bir OLED ekrana sahiptir. Bu, bir proje için kullanıcı arayüzü kurarken kullanışlıdır. Hey, naber beyler? Akarsh burada CETech'ten. Bugün hepsi bir arada bir modüle göz atacağız
Evinizde WiFI Kontrolü Uygulaması Kolay: 5 Adım
Evinizde WiFI Kontrolünü Uygulaması Kolay: ESP-01S, ucuz ve kullanımı kolay bir kablosuz çözümdür. Diğer sensörler ve aktüatör ile birleştirilerek uzaktan izleme ve kontrol rahatlıkla gerçekleştirilebilir. Bu projede ESP-01S Rela ile Fanı kontrol etmek için akıllı bir anahtar yapacağım
DIY MusiLED, Tek Tıkla Windows ve Linux Uygulaması ile Müzik Senkronize LED'ler (32-bit ve 64-bit). Yeniden Oluşturması Kolay, Kullanımı Kolay, Taşıması Kolay.: 3 Adım
DIY MusiLED, Tek Tıkla Windows ve Linux Uygulaması ile Müzik Senkronize LED'ler (32-bit ve 64-bit). Yeniden Oluşturması Kolay, Kullanımı Kolay, Portu Kolay.: Bu proje, Arduino Board'unuza 18 LED (6 Kırmızı + 6 Mavi + 6 Sarı) bağlamanıza ve bilgisayarınızın Ses Kartının gerçek zamanlı sinyallerini analiz etmenize ve bunları aktarmanıza yardımcı olacaktır. Vuruş efektlerine göre onları aydınlatmak için LED'ler (Snare, High Hat, Kick)