MAX7219 Dot Matrix Led Ekran ve Arduino
Er ya da geç, Arduino meraklıları her zaman nokta matris ekranla karşılaşırlar. Karakterleri, sembolleri ve görüntüleri temsil etmek için kullanılan iki boyutlu, desenli bir LED dizisidir. Hemen hemen tüm modern dış mekan LED ekranları nokta matrisleri kullanır.
Ve onları kontrol etmek için MAX7219 IC'den daha iyi bir seçenek yok. Bu, tek bir matrisi kontrol etmenin basit ve biraz pahalı olmayan bir yoludur. Ek olarak, daha büyük projeler için iki veya daha fazla nokta matrisini kontrol etmek için birbirine zincirlenebilirler.
Genel olarak hem çok eğlenceli hem de oldukça kullanışlıdırlar.
MAX7219 Modülüne Genel Bakış
İki tanesi daha popüler olan birkaç MAX7219 ara kartı mevcuttur - biri genel modül ve diğeri FC-16 modülüdür.
Tipik bir MAX7219 modülü, 8 × 8 nokta vuruşlu bir ekran ve bir MAX7219 LED ekran sürücüsü içerir. Onları tek tek tanıyalım.
Dot Matrix Ekranı
Tipik bir tek renkli 8 × 8 nokta vuruşlu birim, her satır için 8 ve her sütun için 8 olmak üzere 16 pime sahiptir. Tüm sıraların ve sütunların birbirine bağlanmasının nedeni, gerekli pim sayısını azaltmaktır. Durum böyle olmasaydı, 8 × 8 nokta vuruşlu bir birim, her LED için bir tane ve ortak bir anot veya katot konektörü için bir tane olmak üzere 65 pime ihtiyaç duyar. Sıraları ve sütunları birbirine bağlayarak yalnızca 16 pim gerekir. Daha az pimle çok sayıda LED'i kontrol eden bu tekniğe Multiplexing denir .
Bu teknikte, her bir sütun çok kısa bir süre için aktif hale getirilir ve aynı zamanda o sütundaki LED'ler ilgili satıra adreslenerek yanar. Sütunlar o kadar hızlı (saniyede yüzlerce veya binlerce kez) değiştirilir ki, insan gözünün ısrarı ekranın tamamen aydınlatılmış olduğunu algılar. Bu nedenle bir seferde en fazla sekiz LED yanar.
MAX7219 Çip
Çoklama ile ilgili can sıkıcı şey, 8 güç transistörü kullanmanız ve görüntüyü sabit tutmak için ekranı sürekli yenilemeniz gerektiğidir.
Tüm kontrolü ve yenilemeyi sizin için yapan güçlü MAX7219 Çipi girin. Tek yapmanız gereken 4 pinli SPI arayüzü üzerinden seri komutlar göndermek ve gerisini otomatik olarak halledecektir.
Aynı parlaklığı korumak ve LED'lerin parlaklığını donanım veya yazılım (veya her ikisi) ile ayarlamanıza izin vermek dahil olmak üzere 64 ayrı LED'i tam olarak kontrol edebilir. Ekran, mikro denetleyici tarafından güncellendiğinde, MAX7219, ekranı 800 Hz'de yenileme işinin tamamını halleder. Böylece mikrodenetleyiciden ek yük kaldırılır, bu da diğer önemli şeyleri yapmayabilir.
Hatta güç tasarrufu modu için ekranı kapatabilir ve yine de kapalıyken veri gönderebilirsiniz. Ve bir başka iyi şey de, çalıştırıldığında LED'leri kapalı tutmasıdır, bu nedenle ilk çalıştırma saniyelerinde tuhaf ekranlar görünmez.
MAX7219 yongası, SPI arabirimi aracılığıyla iletişim kurar, bu nedenle bir mikro denetleyiciye bağlanmak için yalnızca 3 veri pini gerektirir ve dahası, aynı 3 kabloyu kullanarak daha büyük ekran için birkaç modülü birbirine zincirleme bağlayabiliriz.
Maksimum Akımı ve Parlaklığı Ayarlama
MAX7219 yongası, ekranın parlaklığını donanım veya yazılım (veya her ikisi) ile ayarlamanıza olanak tanır. Parlaklığı donanım düzeyinde ayarlamak için MAX7219 koparma kartı bir dirençle (RSet) birlikte gelir.
Bu direnç, LED'lere beslenen akımın üst sınırını ve dolayısıyla ekranın genel parlaklığını ayarlamaktan sorumludur.
Aşağıdaki tablo, LED matrisiniz için voltaj ve ileri akımına göre kullanmanız gereken direnç değerlerini göstermektedir. Örneğin, 2V 20 mA LED'iniz varsa, direnç değeriniz 28kΩ olacaktır (değerler kΩ cinsindendir).
Yazılım aracılığıyla parlaklığın ayarlanması bu öğreticide daha sonra ele alınacaktır.
MAX7219 Modül Pinout
Modülün hangi çeşidini seçerseniz seçin, o modülde iki konektör olacaktır.
Giriş Konnektörü
Modülün bir ucundaki koparma pimleri, mikrodenetleyici ile iletişim için kullanılır.
VCC5V'ye bağlanır. Ekranın yüksek akım çekişi nedeniyle (parlaklık sonuna kadar yükseltilirse 1A'ya kadar), Arduino'dan gelen 5V besleme yerine doğrudan harici güç kaynağından çalıştırılması önerilir. Aksi takdirde, Arduino'nun voltaj regülatörünün aşırı ısınmaması için parlaklığı% 50'nin altında tuttuğunuzdan emin olun.
GND ortak zemine bağlanır.
DINVeri Girişidir. Mikrodenetleyicinin herhangi bir dijital pinine bağlayın.
CS / YÜKChip Select (bazen LOAD olarak etiketlenir). Mikrodenetleyicinin herhangi bir dijital pinine bağlayın.
CLKSaat pimi. Mikrodenetleyicinin herhangi bir dijital pinine bağlayın.
Çıkış Konektörü
Modülün diğer ucundaki koparma pimleri, ekranları papatya zinciri yapmak istediğinizde kullanılır.
VCC Bir sonraki modülde 5V'a bağlanır.
GND Bir sonraki modülde GND'ye bağlanır.
YAP Veri Çıkışıdır ve sonraki modülün DIN pinine bağlanır.
CS / YÜK Sonraki modülde CS / LOAD'a bağlanır.
CLK Bir sonraki modülde CLK'ye bağlanır.
Arduino UNO ile MAX7219 Modülünü Kablolama
Artık modül hakkında her şeyi bildiğimize göre, onu Arduino'muza bağlamaya başlayabiliriz!
Önce modüle güç sağlayalım. Ekran çok fazla akım çektiğinden, modülü Arduino kartından 5V besleme yerine harici güç kaynağından çalıştıracağız. Tek bir MAX7219 modülü kullanacaksanız, modülü doğrudan Arduino'dan çalıştırabilirsiniz, ancak yapabiliyorsanız bundan kaçının.
Artık SPI iletişimi için kullanılan pinlerde kaldık. MAX7219 modülü çok fazla veri aktarımı gerektirdiğinden, bir mikrodenetleyici üzerindeki donanım SPI pinlerine bağlandığında en iyi performansı verecektir. Donanım SPI pinleri, yazılım SPI'sinden çok daha hızlıdır.
Her Arduino Board'un uygun şekilde bağlanması gereken farklı SPI pinlerine sahip olduğunu unutmayın. UNO / Nano V3.0 gibi Arduino kartları için bu pinler dijital 13 (SCK), 12 (MISO), 11 (MOSI) ve 10 (SS).
Farklı bir Arduino kartı kullanıyorsanız, devam etmeden önce ' SPI pin konumları ' hakkındaki resmi belgeleri kontrol etmeniz önerilir .
Genel MAX7219 Modülü ile deneyler için bağlantı aşağıdadır:
FC-16 MAX7219 Modülü için bağlantı aşağıdadır:
Daha büyük bir ekran oluşturmak için birden fazla ekranı papatya dizimi şeklinde bağlamak istiyorsanız, ilk ekranın DOUT'unu sonraki ekranın DIN'sine bağlayın. VCC, GND, CLK ve CS, ekranlar arasında paylaşılacaktır.
Modülünüz Arduino'ya bağlandıktan sonra, biraz kod yazma zamanı!
Kütüphane Kurulumu
MAX7219 modülünü kontrol etmek bir yığın iştir. Neyse ki, MD_Parola kitaplığı, ekranı kontrol etmek için basit komutlar verebilmemiz için MAX7219'un karmaşıklıklarını gizlemek için yazılmıştır.
Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin … Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.
Aramanızı ' max72xx ' yazarak filtreleyin . Birkaç giriş olmalı. Arayın MD_MAX72XX tarafından MajicDesigns . Bu girişe tıklayın ve ardından Yükle'yi seçin.
Bu MD_MAX72XX kitaplığı, daha düşük seviyeli işlevleri işleyen donanıma özgü bir kitaplıktır. Kaydırma ve hareketli metin efektleri gibi birçok farklı metin animasyonu oluşturmak için MD_Parola Kitaplığı ile eşleştirilmesi gerekir . Bu kitaplığı da kurun.
Temel Arduino Kodu - Yazdırma Metni
İlk deneyimiz için ekranda herhangi bir animasyon olmadan basit bir metin yazdıracağız.
Ancak çizimi yüklemeye devam etmeden önce, işinize yaraması için bazı değişiklikler yapmanız gerekir. Aşağıdaki iki değişkeni değiştirmelisiniz.
İlk değişken, HARDWARE_TYPE
arduino'ya modülün hangi sürümünü kullandığınızı söyler.
- Set
HARDWARE_TYPE
içinGENERIC_HW
bir genellikle yeşil PCB ile geliyor modülü ve bir delik MAX7219 IC aracılığıyla kullanıyorsanız, aşağıda gösterildiği gibi. - Set
HARDWARE_TYPE
içinFC16_HW
, genellikle mavi bir PCB ve aşağıda gösterildiği gibi bir SMD MAX7219 devre ile bir modül kullanıyorsanız.
İkinci değişkenle, MAX_DEVICES
kullanılan 8 × 8 nokta matrisli ekranların sayısını ayarlarsınız. 8 × 8'lik bir matris 1 cihaz olarak sayılır, bu nedenle 8 × 32'lik bir modülü kontrol etmek istiyorsanız MAX_DEVICES
4'e ayarlamanız gerekir (8 × 32 ekran 4 MAX7219 IC içerir).
İşiniz bittiğinde, devam edin ve taslağı deneyin, sonra onu biraz ayrıntılı olarak inceleyeceğiz.
Çıktı
Krokiyi yükledikten sonra, çıktıyı görmek için ekranı doğru şekilde yönlendirmeniz gerekir. Genel bir modül kullanıyorsanız, MAX7219 IC üstte olacak şekilde yönlendirin. Ve bir FC-16 modülü kullanıyorsanız, DIN tarafı sağ tarafta kalacak şekilde yönlendirin.
Her şey yolundaysa, aşağıdaki çıktıyı göreceksiniz.
Kod Açıklama
İlk adım, gerekli tüm Arduino kitaplıklarını dahil etmektir. Daha önce belirtildiği gibi, MD_MAX72XX kitaplığı LED matrisinin donanıma özgü işlevlerini uygularken MD_Parola kitaplığı metin efektini uygular. Ayrıca, Arduino IDE'ye önceden yüklenmiş olarak gelen SPI kitaplığını da eklemeniz gerekir. Bu kütüphane, ekran ve Arduino arasında SPI aracılığıyla iletişim için kullanılır.
Daha sonra hangi donanımı kullandığımızı belirtmemiz gerekiyor. Deneylerimiz için bir FC-16 modülü kullandığımız için, HARDWARE_TYPE
olarak ayarlandı FC16_HW
. Kullandığımız MAX7219 IC sayısı 4'tür, dolayısıyla MAX_DEVICES
4'e ayarlanmıştır. Son olarak ekranın CS pininin bağlı olduğu pin tanımlanır.
Ardından, işlevle MD_Parola sınıfının yeni bir örneği oluşturulur MD_Parola()
. Bu işlev, ilki donanım türü, ikincisi CS pini ve üçüncüsü maksimum bağlı cihaz sayısı olmak üzere üç parametre gerektirir.
Kodun kurulum bölümünde öncelikle nesneyi fonksiyon ile başlatıyoruz begin()
. Ekranın parlaklığı işlevle ayarlanabilir setIntensity()
. 0 (minimum parlaklık) ile 15 (maksimum parlaklık) arasında bir değer girebilirsiniz. Fonksiyon displayClear()
ekranı temizler.
Kodun döngü bölümünde öncelikle yazdırılacak metnin fonksiyon ile hizalanmasını ayarlıyoruz setTextAlignment()
. Sen ile metin sol, orta ve sağ hizalamak edebilir PA_LEFT
, PA_CENTER
ve PA_RIGHT
sırasıyla.
Ardından, 'Left' dizesi yazdırılır myDisplay.print("Left")
. " "
Bir metin dizesi yazdırdığımız için, metnin etrafına tırnak işaretleri koymanız gerektiğini unutmayın . Sayıları yazdırmak istediğinizde, tırnak işareti gerekmez. Örneğin myDisplay.print(1234)
. Ayrıca işlevi kullanarak ekranı ters çevirebilirsiniz setInvert()
.
Arduino Kodu - Kaydırma Metni
Bir nokta matris ekrana bir mesaj yazdırmak istediğinizde, çoğu zaman ekranın mesajın tamamına sığamayacak kadar küçük olduğunu göreceksiniz. Çözüm, kaydırma metni efektini kullanmaktır. Aşağıdaki örnek, bir mesajı nasıl kaydıracağınızı gösterir.
Her şey yolundaysa, aşağıdaki çıktıyı göreceksiniz.
Kod Açıklama
Kurulum bölümünün sonunda kodun ilk bölümünün önceki örnekle tamamen aynı olduğunu fark edeceksiniz. Kurulum bölümünün sonunda displayScroll()
fonksiyon kullanılır.
Gördüğünüz gibi bu işlev dört argüman alıyor: displayScroll (pText, align, textEffect, speed)
pText
- metin dizesidir. Mesajınız buraya gelecek.align
- isteğe bağlı duraklama sırasında metnin hizalamasını ayarlar. PA_CENTER, PA_LEFT veya PA_RIGHT gibi önceki örnekte olduğu gibi aynı hizalama seçeneklerini kullanabilirsiniz.textEffect
- kaydırma efektlerini belirtir. PA_SCROLL_LEFT olarak ayarlamak, metni sola kaydırır.speed
- animasyonun hızını belirler. Hız, animasyon kareleri arasındaki milisaniye cinsinden süredir. Kısa süre, daha hızlı animasyonla sonuçlanır.
Bunun dışında döngü bölümünde, kayan bir metin oluşturmak için yalnızca iki işlev kullanılır. İlk olarak, işlevi displayAnimate()
bir if
ifadede kullanıyoruz. Bu işlev metni kaydırır ve kaydırma bittiğinde true değerini döndürür. Kaydırma işlemi bittiğinde, displayReset()
sürekli kaydırmayı elde etmek için ekranı fonksiyon ile sıfırlıyoruz.
Diğer metin efektleri için lütfen github'daki MD_Parola Kitaplık Referansını ziyaret edin .
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook robotic.code
instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.