» elektronik » Arduino »Arduino Uno'da alarmlı ve zamanlayıcılı ikili saat

Arduino Uno alarm ve zamanlayıcı ile ikili saat


Birkaç tahta aldım Arduinove mikrodenetleyicilerle tanışmak için çeşitli radyo bileşenleri, yazar ilginç ve aynı zamanda yararlı bir şey yapmaya karar verdi. Stokta çok sayıda LED bulunan fikir, ikili bir saat oluşturmak için ortaya çıktı.

Elektronik tarafta, ikili bir saat özellikle karmaşık değildir, ancak yazar görevi karmaşıklaştırdı ve düğmeler ve LED'leri kaydetmemeye karar verdi. Başlangıçta proje 22 LED, 6 düğme ve bir tweeter kullanacaktı. Daha fazla sayıda pim nedeniyle Arduino Mega'da bir saat monte etmek de bir fikirdi, ancak 74HC595 vardiya kayıtları bir kurtuluş oldu.

malzemeler:
- Arduino Uno
- 2 tam boyutlu breadboard
- LED'ler kırmızı 7 adet
- Yeşil LED'ler 7 adet
- Mavi LED'ler 6 adet
- 2 sarı ve beyaz LED
- Dirençler 220 ohm 25 adet
- Piezo buzzer 1 adet
- 6 düğme inceliğini düğmeleri
- Vites çıkışı 74HC595 DIP-16 paketinde 3 adet kaydeder
- Bağlantı telleri 90 adet
- DS1307 RTC çipine dayalı gerçek zamanlı saat modülü

Her şey nasıl çalışır.
Yaklaşık 10 çeşit ikili saat vardır. Bazıları zamanı ikili ondalık (BCD) biçiminde, diğerleri ise ikili sayı olarak gösterir. Yazar özellikle BCD-saatini sevmediğinden, saf ikilisini yapmaya karar verdi. Bazı insanlar okumayı zorlaştırır, ancak fark büyük değildir, çünkü sayıları ikili sayıdan ondalığa çevirmek kolaydır. Ayrıca saatin yaratıcısı için bir ön koşul, saatteki saniyelerin bir göstergesiydi.

Ayrıca, saatin 6 düğmesi vardır:
Set - saat / alarm ayar modundan ve parametrenin ayar moduna kaydedilmesinden sorumludur.
Mod - saat, alarm ve zamanlayıcı modları arasında geçiş yapmaktan sorumludur.
Yukarı - saat / alarm / zamanlayıcı ayarında parametreyi bir arttırır. Çalar saat ve zamanlayıcıda, seçilen modu etkinleştirmek ve devre dışı bırakmaktan sorumludur. Bir sinyal tetiklendiğinde alarm / zamanlayıcı sinyalini kapatır.
Aşağı - saat / alarm / zamanlayıcı ayarında, parametreyi bir azaltacaktır. Zamanlayıcı geri sayımı sıfırlamadan duraklatır. Alarm çaldığında, sinyali 5 dakika boyunca aktarır.
24/12 - saat biçimini değiştirin.
Dim - LED'leri açıp kapatmaktan sorumludur (LED'ler kapalı olduğunda kalan düğmeler çalışmayı durdurur).
LED konumlandırma şeması:
Arduino Uno alarm ve zamanlayıcı ile ikili saat


Bileşen Bağlantısı
Yazar, tüm LED'leri seri ve bir dirençle bağlayacaktır. Direnç, LED'lerin terminallerinden birine lehimlenir, hangisinin olduğu önemli değildir. LED'ler vardiya kayıtları ile bağlanacak, bu çipte 16 kontak var.Bu pim sayısı, Arduino'da sadece 3 pim alarak çok sayıda pim kullanmanıza izin verir.

Shift Register Pinout 74HC595:
Q0-Q7, LED'lerin bağlanacağı kayıt bulgularıdır.
Vcc - 5V güç kaynağı pimi uygulanacaktır.
GND - Arduino'da GND'ye bağlı toprak.
OE - pim, terminallerin ters aktivasyonundan sorumludur, ancak kullanılmayacaktır, basitçe toprağa kısa devre yapar.
MR, tersine çevrilmiş bir kayıt temizliğidir, kontrol edilmesi gerekmez, bu nedenle 5V güç kaynağına bağlanacaktır.
ST_CP - pin, kaydın durumunu güncellemekten sorumludur. Durumu kaydederken, kayıtların ardından - YÜKSEK, çıkışların durumunu güncellemek için DÜŞÜK uygulanmalıdır. Arduino'daki bir pime bağlı olması gerekir. Bu pimi paralel olarak üç yazmaçla bağlayabilirsiniz.
SH_CP - pim, kaydın 1 bit kaymasından sorumludur. Arduino'daki bir pime bağlı olması gerekir. Mikro devrelere paralel olarak da bağlanırlar.
DS - veriler bu pime gönderiliyor, Arduino'daki pime bağlı.
Q7 '- bu pim diğer kayıtlar 74HC595 ile kademeli bağlantı için kullanılır.

Bağlantı şeması:


Piezo zili, dirençle seri olarak üçüncü Arduino pinine bağlanacaktır. Tweeter'ı devreye dahil etmeden önce, yazar hangi pimlerin PWM'yi desteklediğine baktı, çünkü bu onun için zorunludur. Arduino Uno'da PWM 3, 5, 6, 9, 10 ve 11 pimleri destekler.


Düğmeler, bir tarafı zemine bağlı, diğeri Arduino pinlerine bağlı olarak Arduino'da yerleşik dirençler kullanılarak bağlanır.


Son tasarım şöyle görünüyor:


Breadboard üzerinde oluştur
Ek ayrıntılar edindikten sonra, yazar projeyi planlara göre bir breadboard üzerinde toplamaya başladı. Görünüm beklenmek üzereydi, çünkü Breadboard bileşenlerin yerleştirilmesindeki özgürlüğü sınırlar ve çıkıntı yapan teller estetik bir zevk yaratmaz. Ancak sonuçta breadboard, breadboard modelleri için tasarlanmıştır, ancak bitmiş cihazlar için değildir.


Program kodu.
Programlama konusunda bilgili olan yazar, başkalarının gelişmelerini kullanmadan kendi başına kod yazmaya karar verdi. İlk adım bir altyordam yazmaktı, tüm diyotların yanıp sönmesinden ve açıldığında piezo sinyalinin verilmesinden sorumluydu. Bu işlev, birçok cihazda uygulanan devreye benzer şekilde devrenin bütünlüğünü doğrulamaya yardımcı olur.

Kroki oldukça büyük çıktı, o zaman ana özelliklerini düşünebilirsiniz.

LED çalışması.
LED'lere vardiya yazmacından erişildiğinden, her şeyden önce LED'ler için daha fazla rutin uygulamak gerekiyordu. Diyotlarla daha kolay çalışma için bir dizi ek fonksiyon uygulanmıştır. Diyotların animasyonunun çeşitli etkileri uygulanır. Saat ayarlanmadığında, saat ve dakikalardan sorumlu diyotlar yanıp sönmeye başlar (normal bir saat ayarlanmadığında yanıp söner). Saniyeden sorumlu LED'lerin de kendi animasyonları vardır, diyot alarm modunda veya saat ayarı modunda sola ve sağa çalışabilir.

Ana döngü.
Program aşağıdaki gibi çalışacak şekilde yapılandırılmıştır: saat, mevcut duruma bağlı olarak bilgileri görüntüler ve düğmelerin ve olayların kullanımına bağlı olarak durumunu değiştirir. Her şey önemli miktarda iç içe geçmiş koşullara benziyor. Diyotların durumu, zamanlayıcıların ve düğmelerin durumunu, işleyicilerine bir çağrı ile kontrol ettikten sonra her seferinde güncellenir.

Ayrıca, yazar giriş düğmelerinin ve zamanlayıcıların doğru çalışması için harika bir iş çıkardı. Çizimin kaynak kodu makalenin altından indirilebilir.


Başlat düzeni
Projeyi açtıktan sonra, ilk bakışta cihaz doğru ve istikrarlı bir şekilde çalıştı. Ancak yazar bir kusur buldu, saat saatte bir saniye geride kaldı, uzun bir süre büyük bir hata olurdu.


Bu sorunu inceledikten sonra, orijinal Arduino Uno'nun bir seramik rezonatör kullandığı ve uzun dönemlerde zamanı ölçmek için doğruluktan yoksun olduğu bulunmuştur. En rasyonel çözüm, gerçek zamanlı bir saat satın almaktı, ayrıca bu modül nedeniyle, saatteki zaman kapatıldığında sapmayacak. Yazar, Grove RTC modülünü Seeed Studio'dan satın aldı. Saat çipli bitmiş bir levhadır. Yazar, SDA ve SCL modülünün pimlerini A4 ve A5, GND pimleri üzerindeki Arduino'ya toprağa bağladı. 5V güç saat kartı tarafından işgal edildiğinden, modülü bağlamak için hiçbir yer yoktu. Yazar, modülü sürekli olarak enerjilenecek olan dijital pinlerden birinden çalıştırmaya karar verdi.Ayrıca, yazarın kaynak kodunu değiştirmesi ve gerçek zamanlı saatlerden oluşan bir kütüphane eklemesi gerekiyordu.


Saat montajı
Kod üzerinde uzun bir çalışma yaptıktan sonra, cihaza tam bir görünüm vermenin ve bunu breadboard'dan baskılı devre kartına aktarmanın zamanı geldi. Her şeyden önce, tahta için kablolama yapmak gerekiyordu. Bunun için fritzing kullanıldı, çünkü yazar zaten saatin görünümü hakkında bir fikre sahipti ve bir cihaz diyagramı oluşturdu. Yazar ayrıca yönetim kurulunu el ile izledi, çok zaman aldı.
Baskılı devre kartlarının üretimi için proje:


Çin'de PCB üretimi sipariş edildi. Seeed Studio'nun Fusion PCB kartı hizmeti vardır. Fritzing aracılığıyla, dosya Genişletilmiş Gerber formatına ihraç edildi, birçok tahta üreticisi onunla çalışıyor. İki hafta sonra, yazar postada uzun zamandır beklenen ücreti aldı.


Sadece biraz tozlu parçaları tahtaya lehimlemeye devam etti. Lehimlemeden sonra biten sonuç Breadboard'daki düzenden çok daha iyi görünüyordu.


Projenin yazarı uzun süre çok çalıştı ve istediğini aldı - bir zamanlayıcı ve çalar saat ile benzersiz bir ikili saat. Pil bölmesini kullanarak, saat herhangi bir yere yerleştirilebilir. Arduino beklentileri karşıladı ve görevle tamamen başa çıktı.

binclock-master.zip [23.53 Kb] (indirmeler: 175)
10
10
10

Yorum ekle

    • gülümsegülümsemelerxaxatamamdontknowyahoonea
      patronçizikaptalevetevet-evetagresifgizli
      üzgünümdansdance2dance3pardonyardımiçecekler
      Durarkadaşlariyigoodgooddüdükbaygınlıkdil
      dumanzırıltıcraybeyanalaycıDon-t_mentionindir
      ısıöfkelilaugh1mdatoplantımoskingnegatif
      Not_ipatlamış mısırcezalandırmakokumakkorkutmakkorkutuyorarama
      alaythank_youbuto_clueumnikakutanlaşmak
      kötübeeeblack_eyeblum3kızarmakövünçcan sıkıntısı
      sansürlüşakasecret2tehdit etmekzaferyusun_bespectacled
      shokrespektlolPrevedkarşılamaKrutoyya_za
      ya_dobryiyardımcıne_huliganne_othodiFludyasakyakın

Okumanızı tavsiye ederiz:

Akıllı telefon için verin ...