İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
İster dünya koşuyor olsun, ister gece geç saatlerde arama yapmadan önce saatin kaç olduğunu bilmekle ilgileniyor olsun, 5 bölgeli bir dünya saati tasarıya uyuyor. Son gönderimde fazladan TM1637 7 haneli ekranlar olduğundan, her durum için bir saat oluşturmaya karar verdim. Proje için 5 saat için yeterli GPIO, 5 AM göstergeleri (LED'ler) ve dokunmatik sensörle etkinleştirilen bir tepe lambası sağlayan bir Arduino Uno kullanmaya karar verdim. Kullanmadığım tek pin, sadece belaya yol açabilecek seri Tx için olan D1 idi. Bu nedenle, ilgileniyorsanız, okumaya devam edin!
Adım 1: Parçalar
Kullandığım saati yapmak için: - Bir Arduino Uno (ancak bir Nano veya Mega da işe yarar)
- (5) TM1637 ekranları
- (5) LED'ler (AM/PM göstergeleri olarak kullanmak için)
- (5) 220 Ohm dirençler
-RTC3231 Saat
- AdaFruit NeoPixel çubuk veya diğer aydınlatma
- Işığı etkinleştirmek için sensöre dokunun
- Güç çekişine uyum sağlamak için Buck dönüştürücü
- Çerçeve veya kasa (Bir kasayı 3D yazdırdım, ancak yaratıcı olun)
- Namlu prizli 12V güç (beslemelerin bölünmesine izin vermek için)
- isteğe bağlı - Arduino Uno kalkanı (sadece biraz daha basit hale getirmek için)
2. Adım: Başlarken
TM1637'de henüz yeniyim, bu yüzden ne yapabileceğimi görmek için önce bir tane programladım. İlk başta hiçbir şey yapmadı, ancak Arduino topluluğu harika ve kısa sürede beni çalıştırdı. TM1637'mde, çalışmasını sağlamak için arkadaki 2 kapağı kesmek zorunda kaldım ve oradan sadece bazı deneme yanılma. Sonunda saat için hala iki nokta üst üste işareti alamadım - 1 konumundaki saat basamağını "yerini alıyor", ama şimdilik bununla bir sorunum yok.
Ardından, tüm bağlantılarınızın ve programlamanızın eşleştiğinden emin olmak için önce her şeyi içeren bir devre tahtası bağlayın - evet, ben hala adım adım bir adamım. Ardından istediğiniz lokasyonlara karar verin ve GMT ile saat farklarını bularak hedef lokasyonlarınızı ayarlayın. Şimdi lehimleme ve konumlandırmaya geçelim.
Adım 3: Kablolama
12v girişi için bir varil güç konektörü kullanarak, gücü ve topraklamayı 1) buck dönüştürücüye ve 2) Arduino'daki Vin'e ayırın.
Bağlantıları çalıştırmak için kalkan üzerinde 5v güç ve topraklama sıraları yapmak için kova dönüştürücüyü kullanın, bu herhangi bir güç sorununu dengeleyecektir.
Her TM1637'nin 4 bağlantısı (5v, Grd, Data ve Clock), DIO ve CLK ayrı GPIO pinlerine (2-11 kullandım) ve satırlarıma giden güç var.
Meridyen göstergeleri (5 LED) için lehim (5) 220 Ohm toprağa ve Anot bağlantıları A0-A3 ve D12'ye.
RTC, SDA ve SCL (A4 ve A5) ile birlikte bir 5v ve Grd'ye ihtiyaç duyar.
Işık çubuğunun bir kez sıraya ve bir kez Uno'ya olmak üzere iki kez topraklanması gerekir. 5v'yi satıra ve verileri bir GPIO'ya (D13) çalıştırın. Dokunmatik sensör 5v ve Grd'ye ve GPIO D0'a çalışır.
Adım 4: Programlama
Programlama oldukça yalındır. Ekranlar için TM1637display.h kitaplığını kullandım ve her ekrana tahmin edilebileceği gibi şehir adıyla benzersiz bir ad atadım. Her biri için DIO ve CLK pinlerini değiştirmeniz yeterlidir.
İlk konumunuzu saat farkıyla kodlayın ve LED'in saate göre açık/kapalı olması için AM/PM çevrelerini ayarlayın. Her konum için çoğaltmak için kullanın.
Saati 0 konumuna atadım, 2 basamak, baştaki sıfır yok. Dakikalar için 'dakika' kullandım ve basamak 1 için 10'a (konum 2, 1 basamak) ve basamak 2 için modulo (%)'ya (konum 3, 1 basamak) böldüm.
NeoPixel'i sensörle aydınlatmak, Adafruit_NeoPixel kitaplığını kullanan diğer tüm düğme/LED kombinasyonları gibiydi.
Kolay.
Adım 5: Montaj
Ekranlara ve anakart, güç girişi ve dönüştürücü için biraz arkaya uyan uygun bir kasa oluşturun. Takın, kabloları takın, açın ve hazır. Tamam, bundan daha fazlası olabilir, ancak tasarımdan bağımsız olarak bunlar temel bilgiler.
Keyfini çıkarın ve Mutlu Tinkering!