İçindekiler:

7 Segment Saat: 4 Adım (Resimli)
7 Segment Saat: 4 Adım (Resimli)

Video: 7 Segment Saat: 4 Adım (Resimli)

Video: 7 Segment Saat: 4 Adım (Resimli)
Video: How to use TM1637 4 digits seven segment display with Arduino 2024, Kasım
Anonim
Image
Image
7 Segment Saat
7 Segment Saat
7 Segment Saat
7 Segment Saat

Birkaç yıl kullandıktan sonra, analog saatim kesinlikle ölüyse.

Bu arada Prusa'mla basmak için bir 3d saat projesi arıyordum, bu yüzden ws2812 ledleri ve Arduino tarafından sürülecek 7 segmentli bir saat buldum.

Bu ledlerin gücünün geniş bir renk yelpazesi göstermek olduğunu düşündüm, o zaman soru şuydu, birden fazla rengi dijital bir saatte nasıl birleştirebilirim?

Ardından saati aşağıdaki özelliklerle kişiselleştirme fikri:

- 7 farklı dakika değişim geçişi

- Zaman dilimleri için önceden ayarlanmış 3 renk

- ortam ışığı yoğunluğu otomatik karartma

- zamanı göstermeye gerek olmadığında otomatik kapanma/başlatma

- otomatik gün ışığından yararlanma saati ayarı

Gereçler

Proje, bir 3D yazıcı kullanılarak veya 7 segmentli saat projeleri için googling kullanılarak yürütülebilir. Biri onları kartondan da yapmış.

Ayrıca şunlara ihtiyaç vardır:

  • Arduino nano
  • fotoğraf kilidi
  • anlık buton
  • açma / kapama düğmesi
  • DC fişi
  • 5V transformatör
  • n°30 WS2812 ledler (model 30 led/metre)
  • pcb
  • DS3231 modülü
  • led bağlantıları için ince kablolar
  • dirençler 10K, 550
  • lehim
  • zamk
  • jumperlar
  • erkek/dişi başlıklar

Adım 1: Yazdırma ve Kablolama…

Baskı ve Kablolama…
Baskı ve Kablolama…
Baskı ve Kablolama…
Baskı ve Kablolama…
Baskı ve Kablolama…
Baskı ve Kablolama…

Thingverse'deki orijinal proje biraz değiştirildi.(Kullanıcı random1101 sayesinde)

İki nokta, bu proje için kullanılan led versiyonuna uyacak şekilde büyütüldü. Üç arka kapaktan biri de pcb'ye uyacak şekilde değiştirildi. Saat tabanı da değiştirildi.

Ana iş, ledleri lehimlemektir. İlk önce 3d baskı basamaklı arka kapağın dışında ledleri lehimlemeye devam ettim, sonra içine yerleştirdim.

İlk hanenin soldan başlayan 7. ledi bir sonraki hanenin ilk ledi ile bağlanacaktır. 4. hanenin sonunda, iki nokta led'i bağlayın, sıra içinde 28 ve 29 olarak numaralandırılacaktır.

Led dizisi, aşağıda açıklandığı gibi bazı parametreleri Arduino kütüphanesine değiştirerek değiştirilebilir.

Bağlandıktan sonra, işin çoğu yapılmıştır.

Adım 2: PCB Montajı

PCB Montajı
PCB Montajı
PCB Montajı
PCB Montajı
PCB Montajı
PCB Montajı
PCB Montajı
PCB Montajı

Şimdi sıra, bazı dirençlerin, başlıkların vb. lehimlendiği bir pcb'yi monte etme zamanı. Arduino'yu bağlayacak bileşenler:

Arduino pin 3 ve GND arasına dahili pull-up direnci ile bağlı buton.

Arduino pin A7 ve GND arasına voltaj bölücü olarak bağlanan ışık sensörü. Ayrıca A7 ve +5V arasına 10K direnç ekleyin ………BÜYÜK HATA

+5V ile A7 pin arasında ışık sensörü ve A/pin ile GND arasında 10K direnç

i2c ve SQW pini ile Arduino interrupt pin 2'ye bağlanan DS3231 modülü

Pim 5'e 550Ohm direncine bağlı ledler.

3. Adım: Eskiz

Kroki içinde yapılabilecek birçok özelleştirme var.

Yaz saati kitaplığının kaydedilmesi TimeChangeRule parametreleri tarafından işlenir, daha fazla bilgi için Github'daki JChristensen kitaplığına bakın.

Döngü içindeki otomatik kapanma, int gotosleep değişkeni tarafından gerçekleştirilir. Benim durumumda 0:00'da Arduino uyku moduna giriyor, sonra saat kapanıyor.

ALARM'ı DS3231 modülünde değişken int gotosleep aracılığıyla ayarlamak, Arduino'nun uyku modundan uyanmasını sağlar. Benim durumumda sabah 7:00'de.

Diğer bir özellik de gün içinde saat rengini değiştirmektir:

void printDateTime(time_t t, const char *tz)

Benim ayarlarımda 0:00 - 12:00 arası saat kırmızı, 12:00 - 17:00 arası yeşil ve 17:00 - 0:00 arası çoğunlukla mavi olarak gösteriliyor. Bu, arkadaki beyaz duvarla iyi bir kontrast için şimdiye kadar bulunan en iyi renk dengesidir.

Geçişler özelliği, dakika değiştiğinde animasyonlu bir renk geçişine izin verir. Anlık tuşa basılarak seçilebilen 6 farklı seçenek vardır, 7. seçenek geçişsizdir. Sevdiğim, önceden ayarlanmış olan newrandom() olarak adlandırılmıştır (int mode = 1;).

Led dizisi ile uyumluluk için kitaplıkta bazı değişiklikler yaptım. segment_display.cpp dosyasının sonunda, (i) anahtarını kullanarak led sıranızı değiştirebilirsiniz. Bir kez bittiğinde içindeki dosyayı değiştirin

/Arduino/kütüphaneler/7segment_NeoPixel-master

Gerekli kütüphaneler:

  • ort.uyku
  • segment_display
  • DS3231
  • Zaman Kitaplığı
  • Tel
  • Adafruit NeoPixel
  • Saat dilimi

Adım 4: Elveda Deme Zamanı

Bu saati beğendim, şimdiki zaman uzaktan açıkça görülüyor ve ihtiyacım olmadığında kapanıyor.

Bir saatten daha fazlasını nasıl isteyebilirsin?

Önerilen: