İçindekiler:

Shift Register Kullanan LED Matrisi: 7 Adım (Resimlerle)
Shift Register Kullanan LED Matrisi: 7 Adım (Resimlerle)

Video: Shift Register Kullanan LED Matrisi: 7 Adım (Resimlerle)

Video: Shift Register Kullanan LED Matrisi: 7 Adım (Resimlerle)
Video: Led Animasyon (ARDUİNO) 2024, Kasım
Anonim
Shift Register'ları Kullanan LED Matrisi
Shift Register'ları Kullanan LED Matrisi
Shift Register'ları Kullanan LED Matrisi
Shift Register'ları Kullanan LED Matrisi
Shift Register'ları Kullanan LED Matrisi
Shift Register'ları Kullanan LED Matrisi

Bu talimat, çevrimiçi olarak mevcut olanlardan daha eksiksiz bir açıklama anlamına gelir. Özellikle, bu, led555 tarafından öğretilebilen LED Seçim Çerçevesinde mevcut olandan daha fazla donanım açıklaması sağlayacaktır.

Hedefler

Bu talimat, vardiya kayıtları ve yüksek taraf sürücüleri ile ilgili kavramları sunar. Bu kavramları 8x8 LED matrisi ile göstererek, projenizin gerektirdiği boyut ve yerleşime uyum sağlamak ve genişletmek için gereken araçları size sunmayı umuyorum.

Deneyim ve Beceriler

Bu projeyi orta zorlukta olarak değerlendiririm:

  • Zaten mikro denetleyicileri programlama ve LED'lerle çalışma deneyiminiz varsa, bu projeyi tamamlamanız ve daha büyük ışık dizilerine ölçeklendirmeniz oldukça kolay olacaktır.
  • Mikrodenetleyicilerle yeni başlıyorsanız ve bir veya iki LED'i yaktıysanız, bu projeyi arkadaşımız google'dan biraz yardım alarak tamamlayabilmelisiniz.
  • Mikrodenetleyiciler veya programlama konusunda çok az deneyiminiz varsa veya hiç deneyiminiz yoksa, bu muhtemelen kendinizi içine almanız gereken şeyin ötesindedir. Birkaç başlangıç projesi daha deneyin ve mikrodenetleyiciler için program yazma konusunda biraz daha deneyiminiz olduğunda geri gelin.

Sorumluluk Reddi ve Kredi

Öncelikle ben elektrik mühendisi değilim. Yanlış olan veya en iyi uygulama olmayan bir şey görürseniz lütfen bana bildirin, düzeltmeyi yapayım. Bunu riski size ait olmak üzere yapın! Ne yaptığınızı bilmelisiniz yoksa bilgisayarınıza, mikrodenetleyicinize ve hatta kendinize zarar verebilirsiniz. İnternetten, özellikle şu adresteki forumlardan çok şey öğrendim: https://www.avrfreaks.net Kullanıyorum ks0108 evrensel C kitaplığı ile birlikte gelen bir yazı tipi seti. Şuna bakın:

Adım 1: Parçalar

Parça listesi

Genel Parçalar

8x8'lik bir LED ızgarası yapmak ve bunları kontrol etmek için ihtiyacınız olacak:

  • Seçtiğiniz 64 LED
  • LED'ler için 8 Direnç
  • 1 Sütunlar için vardiya kaydı
  • 1 satırlar için sürücü dizisi
  • Sürücü dizisini değiştirmek için 8 direnç
  • 1 mikrodenetleyici
  • Mikrodenetleyici için 1 saat kaynağı
  • 1 prototipleme panosu
  • 1 güç kaynağı
  • Bağlantı teli

Burada Kullanılan Belirli Parçalar

Bu talimat için aşağıdakileri kullandım:

  • 64 yeşil LED (Mouser parçası #604-WP7113GD)
  • LED'ler için 8 220ohm 1/4 watt direnç (Mouser parçası #660-CFS1/4CT52R221J)
  • 1 HEF4794 LED sürücü, kaydırma yazmaçlı (Mouser parçası #771-HEF4794BPN)
  • 1 mic2981 Yüksek Voltajlı Yüksek Akım Kaynak Sürücü Dizisi (Digikey parça #576-1158-ND)
  • Sürücü dizisini değiştirmek için 8 3.3kohm 1/4 watt direnç (Radio Shack parça #271-1328)
  • 1 Atmel ATmega8 mikrodenetleyici (Mouser parçası #556-ATMEGA8-16PU)
  • Mikrodenetleyici saat kaynağı için 1 12MHz kristal (Mouser parçası #815-AB-12-B2)
  • 1 2200 delikli prototipleme panosu (Radio Shack parça #276-147)
  • Dönüştürülen ATX güç kaynağı: Bu Talimata Bakın
  • Katı çekirdekli 22-awg bağlantı teli (Radio Shack parça #278-1221)
  • Lehimsiz devre tahtası (Radio Shack parça #276-169 (artık mevcut değil, deneyin: 276-002)
  • AVR Dragon (Mouser parçası #556-ATAVRDRAGON)
  • Dragon Rider 500, Ecros Technologies'den: Bu Eğitilebilir Tabloya Bakın

Parçalarla İlgili Notlar

Satır ve Sütun Sürücüleri: Muhtemelen bu projenin en zor kısmı satır ve sütun sürücülerini seçmektir. Öncelikle, standart bir 74HC595 kaydırma yazmacının burada iyi bir fikir olduğunu düşünmüyorum çünkü LED'ler aracılığıyla göndermek istediğimiz akım türünü kaldıramıyorlar. Bu yüzden HEF4794 sürücüsünü tek sıradaki 8 ledin hepsi yandığında mevcut akımı kolayca yutabileceği için seçtim. Birden çok sütunu bir araya getirmek için yeterli akımı sağlayabilecek bir satır sürücüsüne ihtiyacımız olacak. mic2981, 500mA'ya kadar güç sağlayabilir. Bu görevi gerçekleştiren diğer tek parça, farklı bir üreticinin aynı parçası olan UDN2981'dir (digikey parçası #620-1120-ND). Bu uygulamada iyi çalışacak diğer yüksek taraf sürücüleri biliyorsanız lütfen bana bir mesaj gönderin. LED Matrisi: Bu matris 8x8'dir çünkü satır ve sütun sürücülerinin her birinin 8 pini vardır. Birden fazla matrisi bir araya getirerek daha büyük bir LED dizisi oluşturulabilir ve "modüler kavramlar" adımında tartışılacaktır. Geniş bir dizi istiyorsanız, gerekli tüm parçaları tek seferde sipariş edin. 8x8, 5x7 ve 5x8 LED matrisleri tek bir kullanışlı pakette mevcuttur. Bunların bir diy matrisinin yerini alması kolay olmalıdır. Ebay bunlar için iyi bir kaynak. Mouser, parça #604-TA12-11GWA gibi bazı 5x7 ünitelere sahiptir. Ucuz yeşil LED'ler kullandım çünkü sadece oynuyorum ve eğleniyorum. Yüksek parlaklıkta, yüksek verimliliğe sahip LED'lere daha fazla harcama yapmak, çok daha muhteşem görünümlü bir ekran üretmenize izin verebilir… bu benim için yeterli olsa da! Kontrol Donanımı: Matris, bir Atmel AVR mikro denetleyicisi tarafından kontrol edilir. Bunun için bir programcıya ihtiyacınız olacak. Prototip yaptığım için hem montaj hem de kullanım talimatlarını yazdığım Dragon Rider 500 kullanıyorum. Bu, prototipleme için kolay bir araçtır ve kesinlikle tavsiye ederim.

2. Adım: Matris

matris
matris
matris
matris
matris
matris

Bu proje için 5mm led'ler ve Radio Shack'ten bir prototipleme panosu kullanarak kendi LED matrisimi oluşturacağım. 8x8 nokta vuruşlu led modülleri ebay dahil çeşitli kaynaklardan satın alabileceğinizi belirtmek gerekir. Bu talimatla gayet iyi çalışmalılar.

İnşaat Hususları

HizalamaLED'lerin aynı açıda aynı yöne bakacak şekilde hizalanması gerekir. Benim için en kolay seçeneğin LED'in gövdesini panoya aynı hizada koymak ve küçük bir pleksiglas parçası ve bir kelepçe ile orada tutmak olduğunu buldum. Pleksiglasın prototipleme panosuna paralel olduğundan emin olmak için üzerinde çalıştığım sıradan birkaç inç uzağa birkaç LED yerleştirdim. Satırlar ve Sütunlar Her sütunun yanı sıra her satır için ortak bir bağlantıya ihtiyacımız var. Sıra ve sütun sürücü seçimimiz nedeniyle, anotun (LED'in pozitif ucu) sıra ile ve katodun (LED'in negatif ucu) kolonla bağlanması gerekir. Kontrol TelleriBu prototip için tek damarlı (tek iletkenli) bağlantı teli kullanıyorum. Bu, lehimsiz bir devre tahtası ile arayüz oluşturmak çok kolay olacaktır. Projenize uygun farklı bir konektör tipi kullanmaktan çekinmeyin.

Matrix'i Oluşturmak

1. LED'lerin ilk sütununu prototipleme panosuna yerleştirin.2. Her bir LED için polaritenizin doğru olduğunu iki kez kontrol edin, daha sonra fark ederseniz bunu düzeltmek çok zor olacaktır.3. LED'in her iki ucunu da panoya lehimleyin. Doğru hizalandıklarından emin olmak için kontrol edin (garip açılarda değil) ve katot uçlarını klipsleyin. Anot ucunu klipslemediğinizden emin olun, buna daha sonra ihtiyacımız olacak, bu yüzden yukarıyı göstermesini sağlayın.4. Yalıtımı bir parça katı damarlı telden çıkarın. Bu tel parçasını her katoda tahta seviyesinde lehimleyin.

  • Bunu her iki ucundan tutturdum, sonra geri döndüm ve her kavşakta biraz lehim ekledim.
  • Kontrol kabloları eklediğimizde kolay bir arayüz sağlamak için bu kablo son LED'inizi geçmelidir.

5. Tüm LED'ler yerine oturana ve tüm sütun baraları lehimlenene kadar 1-4 kısımlarını tekrarlayın. Bir sıra veriyolu oluşturmak için, anot uçlarından birkaçını aynı sıradaki diğer anot uçlarına değecek şekilde 90 derecelik bir açıyla bükün.

  • Aşağıda bununla ilgili detaylı resimler var.
  • Bunların kolon baralarına temas etmemesine ve kısa devre oluşturmamasına özen gösteriniz.

7. Uçları her bağlantı noktasında lehimleyin ve fazla anot uçlarını klipsleyin.

Son LED'i geçen son anodu bırakın. Bu, sıra sürücü kontrol kablolarını bağlamak için kullanılacaktır

8. Tüm sıra otobüsleri lehimlenene kadar 6. ve 7. bölümleri tekrarlayın. Kontrol kablolarını takın.

  • Sıralar için kırmızı, sütunlar için siyah tek damarlı tel kullandım.
  • Her sütun için bir kablo ve her satır için bir kablo bağlayın. Bu, her otobüsün sonunda kolayca yapılabilir.

Önemli

Bu LED matrisinde herhangi bir akım sınırlayıcı direnç yoktur. Bunu dirençler olmadan test ederseniz, muhtemelen LED'lerinizi yakarsınız ve tüm bu işler boşuna olacaktır.

Adım 3: Kontrol Donanımı

Kontrol Donanımı
Kontrol Donanımı
Kontrol Donanımı
Kontrol Donanımı

LED matrisimizin sütunlarını ve satırlarını kontrol etmemiz gerekiyor. Matris, Anotlar (LED'in voltaj tarafı) sıraları oluşturacak ve Katotlar (LED'in toprak tarafı) sütunları oluşturacak şekilde yapılmıştır. Bu, satır sürücümüzün akımı beslemesi gerektiği ve sütun sürücümüzün onu batırması gerektiği anlamına gelir. Pinlerden tasarruf etmek için sütunları kontrol etmek için bir kaydırma yazmacı kullanıyorum. Bu şekilde, sadece dört mikrodenetleyici pimi ile neredeyse sınırsız sayıda sütunu kontrol edebilirim. Çıkışı Etkinleştir pini doğrudan voltaja bağlıysa yalnızca üç tane kullanmak mümkündür. HEF4794 LED sürücüsünü shift register ile seçtim. Bu, standart bir 74HC595'ten daha iyi bir seçenektir, çünkü aynı anda 8 LED'in tümü açıkken mevcut akımı kolayca emebilir. Yüksek tarafta (sıralar için akım kaynağı) bir mic2981 kullanıyorum. Şematik bir UDN2981'i gösteriyor, bu ikisinin değiştirilebilir olduğuna inanıyorum. Bu sürücü 500mA'ya kadar akım sağlayabilir. Bir seferde yalnızca 1 satır sürdüğümüz için bu, bu çip için 33 sütuna kadar genişleme için çok fazla fırsat sağlar ("modüler konseptler" adımında daha fazlası).

Kontrol Donanımını Oluşturma

Bu talimat için bu devreyi henüz devre dışı bıraktım. Daha kalıcı bir çözüm için ya kendi devre kartınızı kazımak ya da prototipleme kartı kullanmak isteyeceksiniz.1. Satır Sürücüsü

  • mic2981'i (veya UDN2981) devre tahtasına yerleştirin
  • Pin 9'u Voltaja Bağlayın (Bu şematikte kafa karıştırıcıdır)
  • Pin 10'u Toprağa Bağlayın (Bu şematikte kafa karıştırıcıdır)
  • 1-8 pinlerine bağlanan 3k3 dirençleri takın
  • ATmega8'in (PD0-PD8) Port D'sinden 8 dirence bağlayın
  • LED matrisinin 8 sıralı kontrol tellerini 11-18 pinlerine bağlayın (en düşük LED sırasını Pin 18'e ve en yüksek sırayı Pin 11'e bağladığımı unutmayın).

2. Sütun Sürücüsü

  • hef4794'ü devre tahtasına yerleştirin
  • Pin 16'yı voltaja bağlayın
  • Pin 8'i toprağa bağlayın
  • 220 ohm dirençleri 4-7 ve 11-14 Pinlerine bağlayın.
  • LED matrisinden gelen 8 sütunlu kontrol kablosunu az önce bağladığınız 8 dirence bağlayın.
  • Pin1'i (Mandal) ATmega8'in PC0'ına bağlayın
  • Pin2'yi (Veri) ATmega8'in PC1'ine bağlayın
  • Pin3'ü (Saat) ATmega8'in PC2'sine bağlayın
  • Pin15'i (Çıkışı Etkinleştir) ATmega8'in PC3'üne bağlayın

3. Saat Kristali

12 MHz kristal bağlayın ve kapasitörleri şematikte gösterildiği gibi yükleyin

4. ISS

Programlama başlığını şematikte gösterildiği gibi bağlayın

5. Filtreleme Kondansatörü ve Pull-up direnci

  • ATmega8'e sağlanan voltajı filtrelemek en iyisidir. ATmega8'in Pin 7 ve 8'i arasında 0.1uf kapasitör kullanın
  • Rastgele sıfırlamalara neden olabileceğinden, sıfırlama pimi yüzer halde bırakılmamalıdır. Voltaja bağlamak için bir direnç kullanın, 1k ile ilgili herhangi bir şey iyi olmalıdır. Şematikte 10k direnç kullandım.

6. +5v ayarlı güç kullandığınızdan emin olun. Regülatörü tasarlamak size kalmış.

4. Adım: Yazılım

Numara

Evet, her şey gibi, bir hile var. İşin püf noktası, bir seferde asla 8'den fazla LED'in aydınlatılmamasıdır. Bunun iyi çalışması için biraz kurnaz programlama gereklidir. Seçtiğim konsept bir zamanlayıcı kesmesi kullanmaktır. Ekran kesmesi sade ingilizce olarak şu şekilde çalışır:

  • Zamanlayıcı belirli bir noktaya kadar sayar, ulaşıldığında kesme servis rutini çalıştırılır.
  • Bu rutin, bir sonraki hangi satırın görüntüleneceğine karar verir.
  • Bir sonraki satırın bilgileri bir arabellekten aranır ve sütun sürücüsüne kaydırılır (bu bilgi "kilitlenmez", dolayısıyla henüz görüntülenmez).
  • Sıra sürücüsü kapalı, şu anda hiçbir LED yanmıyor.
  • Sütun sürücüsü "mandallı" yapmak için iki adım önce kaydırdığımız bilgileri mevcut bilgileri görüntülemek için.
  • Satır sürücüsü daha sonra görüntülemekte olduğumuz yeni satıra akım sağlar.
  • Kesinti hizmeti rutini sona erer ve program bir sonraki kesintiye kadar normal akışına döner.

Bu çok çok hızlı bir şekilde gerçekleşir. Kesinti her 1 mSn'de bir atılır. Bu, tüm ekranı yaklaşık her 8 mSn'de bir yenilediğimiz anlamına gelir. Bu, 125Hz civarında bir görüntüleme hızı anlamına gelir. Parlaklıkla ilgili bazı endişeler var çünkü LED'leri esasen 1/8 görev döngüsünde çalıştırıyoruz (zamanın 7/8'inde kapalılar). Benim durumumda, görünür bir yanıp sönme olmadan yeterince parlak bir ekran elde ediyorum. Tam LED ekran bir dizide eşleniyor. Kesintiler arasında dizi değiştirilebilir (atomikliğe dikkat edin) ve bir sonraki kesinti sırasında ekranda görünecektir. AVR mikrodenetleyicisi için kod yazmanın ve kaydırma yazmaçlarıyla konuşmak için kodun nasıl yazılacağına ilişkin ayrıntılar kapsamın dışındadır. bu öğretilebilir. Doğrudan programlamak için kaynak kodunu (C ile yazılmış ve AVR-GCC ile derlenmiş) ve hex dosyasını ekledim. Tüm kodu yorumladım, bu nedenle, verileri vardiya kaydına nasıl alacağınız ve satır yenilemenin nasıl çalıştığıyla ilgili sorularınızı temizlemek için bunu kullanabilmeniz gerekir. ks0108 evrensel C kitaplığı. Bu kütüphane burada bulunabilir:

Vardiya Kayıtları: Nasıl Yapılır

Vardiyalı yazmaçlarla nasıl programlanacağı hakkında biraz eklemeye karar verdim. Umarım bu, daha önce onlarla çalışmamış olanlar için işleri aydınlatır. Ne yaparlar? Kaydırma Kayıtları bir kablodan bir sinyal alır ve bu bilgiyi birçok farklı pime gönderir. Bu durumda, verileri alan bir adet veri kablosu ve hangi verilerin alındığına bağlı olarak kontrol edilen 8 pin bulunmaktadır. İşleri daha iyi hale getirmek için, her kaydırma yazmacı için başka bir kaydırma yazmacının giriş pinine bağlanabilen bir outpin vardır. Buna basamaklama denir ve genişleme potansiyelini neredeyse sınırsız bir olasılık haline getirir. Kontrol PinsShift kayıtlarında 4 kontrol pini bulunur:

  • Mandal - Bu pin, vardiya kaydına yeni girilen verilere geçme zamanının geldiğini söyler
  • Veri - Vardiya kaydına hangi pinlerin etkinleştirileceğini söyleyen 1'ler ve 0'lar bu pin üzerinde alınır.
  • Saat - Bu, vardiya yazmacına bir veri okuması yapmasını ve iletişim sürecinde bir sonraki adıma geçmesini söyleyen mikro denetleyiciden gönderilen bir darbedir.
  • Çıkışı Etkinleştir - Bu bir açma/kapama anahtarıdır, Yüksek=Açık, Düşük=Kapalı

Teklifinizi yerine getirmesini sağlama: İşte yukarıdaki kontrol pinlerinin çalışmasıyla ilgili bir hızlandırılmış kurs: Adım 1: Mandal, Veri ve Saati Düşük Ayarlayın

Mandalı düşük olarak ayarlamak, kaydırma yazmacına yazmak üzere olduğumuzu söyler

Adım 2: Veri pinini Shift Register'a göndermek istediğiniz mantık değerine ayarlayın Adım 3: Shift Register'a mevcut Data pin değerini okumasını söyleyerek Clock pinini yüksek ayarlayın

Şu anda Shift Register'da bulunan diğer tüm değerler, Data pininin mevcut mantık değerine yer açarak 1 basamak ilerleyecektir

Adım 4: Saat pimini Düşük olarak ayarlayın ve tüm veriler kaydırma kaydına gönderilene kadar 2. ve 3. adımları tekrarlayın.

Bir sonraki Veri değerine geçmeden önce saat pimi düşük ayarlanmalıdır. Bu pimi yüksek ve düşük arasında değiştirmek, kaydırma yazmacının süreçte bir sonraki adıma ne zaman geçeceğini bilmesi gereken "saat darbesini" yaratan şeydir

Adım 5: Mandalı yükseğe ayarlayın

Bu, kaydırma yazmacına kaydırılan tüm verileri almasını ve çıkış pinlerini etkinleştirmek için kullanmasını söyler. Bu, verileri yer değiştirirken görmeyeceğiniz anlamına gelir; Mandal yükseğe ayarlanana kadar çıkış pinlerinde herhangi bir değişiklik olmayacaktır

Adım 6: Çıkışı Etkinleştir'i yüksek olarak ayarlayın

  • Diğer üç kontrol pininde ne olursa olsun, Çıkışı Etkinleştir yüksek olarak ayarlanana kadar pin çıkışı olmayacaktır.
  • Bu pin dilerseniz her zaman yüksekte bırakılabilir.

Basamaklama Basamaklama için kullanabileceğiniz iki pin vardır, Os ve Os1. Os hızlı yükselen saatler içindir ve Os1 yavaş yükselen saatler içindir. Bu pimi bir sonraki kaydırma yazmacının veri pimine bağlayın ve bu çipten gelen taşma bir sonrakine girilecektir. Güncellemenin sonu

Ekranın adreslenmesi

Örnek programda row_buffer adında 8 baytlık bir dizi oluşturdum. Her bayt, 8x8 ekranın bir satırına karşılık gelir, 0. satır alt ve 7. satır üsttedir. Her satırın en az anlamlı biti sağda, en önemli biti soldadır. Görüntüyü değiştirmek, o veri dizisine yeni bir değer yazmak kadar kolaydır, kesme hizmeti rutini, ekranı yenilemekle ilgilenir.

Programlama

Programlama burada ayrıntılı olarak tartışılmayacaktır. 12MHz'de çalışırken çipi programlayamayacağınıza inandığım için DAPA programlama kablosu kullanmamanız konusunda sizi uyarırım. Diğer tüm standart programcılar çalışmalıdır (STK500, MKII, Dragon, Paralel/Seri programcılar, vb.). Sigortalar: Sigortaları 12MHz kristal sigortayı kullanacak şekilde programladığınızdan emin olun: 0xC9lfuse: 0xEF

Eylemde

Çipi programladığınızda, ekran bir "Merhaba Dünya!" yazmalıdır. İşte eylemlerdeki LED matrisinin bir videosu. Bunu uygun bir video veya web kamerası değil, dijital kameramın video özelliği ile yaptığım için video kalitesi oldukça düşük.

Adım 5: Modüler Konseptler

Modüler Konseptler
Modüler Konseptler
Modüler Konseptler
Modüler Konseptler
Modüler Konseptler
Modüler Konseptler
Modüler Konseptler
Modüler Konseptler

Bu proje ölçeklenebilir. Tek gerçek sınırlayıcı faktör, güç kaynağınızın ne kadar akım sağlayabileceği olacaktır. (Diğer gerçek, kaç tane LED'iniz ve kayıt değiştiriciniz olduğudur).

Matematik

LED'leri yaklaşık 15mA (5V-1.8vDrop/220ohms=14.5mA) ile sürüyorum. Bu, mic2981 sürücüsüyle (500mA/15mA=33,3) 33 sütuna kadar sürebileceğim anlamına geliyor. 8'e bölünerek bunun 4 vardiya kaydını bir araya getirmemize izin verdiğini görebiliriz. Ayrıca 32 sütunun tümünün soldan sağa doğru gerilmesine gerek olmadığını da göz önünde bulundurun. Bunun yerine, 8x32 diziyle aynı şekilde bağlanmış bir 16x16 dizi oluşturabilirsiniz. Bu, 4 bayt kaydırılarak ele alınacaktır…. ilk ikisi 9. sıra için ledlere kadar, ikinci iki bayt ise ilk sıraya kayacaktı. Her iki satır da, satır sürücüsündeki bir pimden kaynaklanacaktır.

Basamaklı Vardiya Kayıtları

Kullanılan kaydırma yazmaçları, basamaklı kaydırma yazmaçlarıdır. Bu, verilerde geçiş yaptığınızda, Os pininde taşmanın göründüğü anlamına gelir. Bir dizi kaydırma yazmacı birbirine bağlanabildiğinden, Os pininden Data pinine bağlanabildiğinden, her yeni yonga ile 8 sütun eklendiğinden çok kullanışlı hale gelir. mikrodenetleyici. "Kademeli" etki, birinci kaydırma yazmacının Os'si ikincinin Veri pinine bağlandığında yaratılır. Artan sütun sayısını yansıtmak için programlamanın değiştirilmesi gerekecektir. Hem bilgileri depolayan arabellek hem de her sütun için bilgileri kaydıran işlevin, gerçek sütun sayısını yansıtacak şekilde güncellenmesi gerekir. Bunun bir şeması aşağıda örnek olarak verilmiştir.

Çoklu Sıra Sürücüleri

Satır sürücüsü (mic2981), 32 sütunu sürmek için yeterli akımı sağlayabilir. 32'den fazla sütun istiyorsanız ne olur? Daha fazla mikrodenetleyici pini kullanmadan çoklu sıra sürücüleri kullanmak mümkün olmalıdır. LED'leri yakmak için yeterli akımı sağlamak için sıra sürücülerine ihtiyacımız var. Tek seferde aydınlatmak mümkün olandan daha fazla sütun kullanıyorsanız, ilave sıra sürücüleri gerekli akımı sağlayabilir. Mikrodenetleyiciden gelen aynı giriş pinleri kullanılır, bu nedenle satırların taranmasını değiştirmeye gerek yoktur. Başka bir deyişle, her sürücü 8x32'lik bir blok için satırları kontrol eder. 64 sütun aynı FİZİKSEL satır yerleşimine sahip olsa da, ilk 32 sütunun 8 satırı için bir sürücü ve ikinci 32 sütunun 8 satırı için ikinci bir sürücü vb. kullanarak satır otobüslerini ikiye böleriz. Aşağıda bunun bir şeması örnek olarak verilmiştir. Olası Yanlış Adımlar:1. Aynı sayıda sütuna sahip birden çok satır sürücüsü kullanmayın. Bunu yapmak, her kaydırma yazmacı piminin aynı anda birden fazla LED'i sürmesi anlamına gelir.2. Her sıra sürücü için 8 rezistör setiniz (3k3) olmalıdır, çok sıralı sürücüler için bir set, kapıları değiştirmek için gerekli akımı sağlayamayacağından çalışmayacaktır.

Örneğin

Daha önce oluşturduğum matrisi genişletmeye karar verdim. Bu protokole sığdırabildiğim tek şey bu olduğu için toplam 15 olmak üzere 7 satır daha ekledim. Ayrıca Instructables'ın yaptığı "Let it Glow" adlı bir yarışmayı da yeni öğrendim. İşte bununla ilgili aldığım bir video. Bir kez daha, videoyu çekmek için kullandığım dijital kamera adaletini yerine getirmiyor. Bu, özellikle tüm LED'lerin yanıp söndüğü yerlerde insan gözü için harika görünüyor, ancak videoda neredeyse o kadar iyi görünmüyor. Keyfini çıkarın: Bu daha büyük ekran için kaynak kodu aşağıda yer almaktadır.

6. Adım: Sonuç

Olası Eklemeler

I2CI, bu tasarımda kullanılmayan İki Telli Arayüz (I2C) pinlerini bırakmıştır. Bu iki pimi kullanabilecek birkaç ilginç olasılık var. Bir I2C EEPROM'un eklenmesi, çok daha büyük mesajların depolanmasına izin verecektir. Mega8'i I2C uyumlu bir ekran sürücüsüne dönüştürmek için programlama tasarlama olasılığı da var. Bu, LED dizinizdeki verileri I2C veri yolu üzerinden geçirerek görüntülemek için bir USB etkinleştirme aygıtına sahip olma olasılığını açar. GirişDüğmeler veya bir IR alıcısı için kullanılabilecek pek çok pin vardır. Bu, mesajların bir menü sistemi aracılığıyla programlanmasına izin verir. Ekran Bu talimat için sadece birkaç ekran işlevi uyguladım. Biri ekrana sadece karakterler yazar, diğeri karakterleri ekrana kaydırır. Hatırlanması gereken önemli şey, ışıklarda gördüğünüzün bir veri dizisinde temsil edilmesidir. Veri dizisini değiştirmek için daha açık yollar bulursanız, ışıklar da aynı şekilde değişecektir. Bazı heyecan verici fırsatlar, sütunlardan bir grafik ölçer oluşturmayı içerir. Bu, stereolu bir sinyal analizörü olarak kullanılabilir. Kaydırma yukarıdan aşağıya veya aşağıdan yukarıya, hatta soldan sağa uygulanabilir. İyi şanslar, iyi eğlenceler!

7. Adım: Takip

Takip et
Takip et
Takip et
Takip et
Takip et
Takip et
Takip et
Takip et

Kontrol devresinin devre tahtasında aylarca oturmasına izin verdikten sonra nihayet bu prototipi bir araya getirmek için birkaç devre kartı tasarladım ve kazıdım. Her şey harika gitti, farklı bir şekilde yapabileceğimi sanmıyorum.

Devre Kartı Özellikleri

  • Kaydırma yazmaçları, ekranın boyutunu artırmak için birbirine zincirleme bağlanabilen ayrı panolardadır.
  • Denetleyici kartının kendi güç regülatörü vardır, bu nedenle bu, 7v-30v (9v pil veya 12v tezgah kaynağı, ikisi de benim için gayet iyi çalışıyor) sağlayan herhangi bir güç kaynağı tarafından çalıştırılabilir.
  • Mikrodenetleyicinin karttan çıkarılmadan yeniden programlanabilmesi için 6 pinli ISP başlığı dahildir.
  • I2C veri yolunun gelecekteki kullanımı için 4 pinli başlık mevcuttur. Bu, bir eeprom'un daha fazla mesaj depolaması için veya hatta bunu başka bir mikro denetleyici tarafından kontrol edilen bir bağımlı cihaz yapmak için kullanılabilir (RSS ticker kimse?)
  • Tasarıma 3 adet anlık buton dahildir. Bu düğmelerin kullanımını dahil etmek için gelecekte bellenimi değiştirebilirim.

toplantı

Bana pleksiglas, köşeli ayraçlar, 6x32 makine vidaları, somunlar ve pulların yanı sıra diş delikleri için bir musluk seti verin ve her şeyi yapabilirim.

Let It Glow'da İkincilik Ödülü!

Önerilen: