Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

29 Haziran 2021 Salı

MAX7219 Dot Matrix Led Ekran ve Arduino

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.

max7219 modül çeşitleri

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ı

8x8 nokta vuruşlu 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 .

8x8 nokta vuruşlu iç yapı çoklama

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.

led matris ekran çalışma animasyonu vizyonun kalıcılığı

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.

max7219 ic

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.

parlaklık ayarı için max7219 rset direnci

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).

Ben SEG (mA)LED (V)
1.52.02.53.03.5
4012.211.811.010.69,69
3017.817.115.815.014.0
2029.828.025.924.522.6
1066.763.759.355.451.2

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.

max7219 nokta vuruşlu led ekran modülü pin çıkışı

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:

arduino ile kablolama jenerik max7219 led ekran modülü

FC-16 MAX7219 Modülü için bağlantı aşağıdadır:

arduino ile kablolama fc16 max7219 led ekran modülü

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.

Arduino Kitaplığı Kurulumu - Arduino IDE'de Kitaplıkları Yönetmeyi Seçme

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.

md_max72xx kitaplık kurulumu

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.

md_parola kitaplığı kurulumu

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.

yapılacak değişiklikler

İlk değişken, HARDWARE_TYPEarduino'ya modülün hangi sürümünü kullandığınızı söyler.

  • Set HARDWARE_TYPEiçin GENERIC_HWbir 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.
    max7219 genel modül
  • Set HARDWARE_TYPEiçin FC16_HW, genellikle mavi bir PCB ve aşağıda gösterildiği gibi bir SMD MAX7219 devre ile bir modül kullanıyorsanız.
    max7219 fc 16 modülü

İkinci değişkenle, MAX_DEVICESkullanı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_DEVICES4'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.

// Including the required Arduino libraries
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

// Uncomment according to your hardware type
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW

// Defining size, and output pins
#define MAX_DEVICES 4
#define CS_PIN 3

// Create a new instance of the MD_Parola class with hardware SPI connection
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup() {
	// Intialize the object
	myDisplay.begin();

	// Set the intensity (brightness) of the display (0-15)
	myDisplay.setIntensity(0);

	// Clear the display
	myDisplay.displayClear();
}

void loop() {
	myDisplay.setTextAlignment(PA_LEFT);
	myDisplay.print("Left");
	delay(2000);
	
	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.print("Center");
	delay(2000);

	myDisplay.setTextAlignment(PA_RIGHT);
	myDisplay.print("Right");
	delay(2000);

	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.setInvert(true);
	myDisplay.print("Invert");
	delay(2000);

	myDisplay.setInvert(false);
	myDisplay.print(1234);
	delay(2000);
}

Çı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.

max7219 led ekran arduino metin çıkışı

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.

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

Daha sonra hangi donanımı kullandığımızı belirtmemiz gerekiyor. Deneylerimiz için bir FC-16 modülü kullandığımız için, HARDWARE_TYPEolarak ayarlandı FC16_HWKullandığımız MAX7219 IC sayısı 4'tür, dolayısıyla MAX_DEVICES4'e ayarlanmıştır. Son olarak ekranın CS pininin bağlı olduğu pin tanımlanır.

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 3

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.

MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

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.

void setup() {
  myDisplay.begin();
  myDisplay.setIntensity(0);
  myDisplay.displayClear();
}

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_LEFTPA_CENTERve PA_RIGHTsı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().

void loop() {
	myDisplay.setTextAlignment(PA_LEFT);
	myDisplay.print("Left");
	delay(2000);
	
	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.print("Center");
	delay(2000);

	myDisplay.setTextAlignment(PA_RIGHT);
	myDisplay.print("Right");
	delay(2000);

	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.setInvert(true);
	myDisplay.print("Invert");
	delay(2000);

	myDisplay.setInvert(false);
	myDisplay.print(1234);
	delay(2000);
}

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.

// Including the required Arduino libraries
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

// Uncomment according to your hardware type
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW

// Defining size, and output pins
#define MAX_DEVICES 4
#define CS_PIN 3

// Create a new instance of the MD_Parola class with hardware SPI connection
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup() {
	// Intialize the object
	myDisplay.begin();

	// Set the intensity (brightness) of the display (0-15)
	myDisplay.setIntensity(0);

	// Clear the display
	myDisplay.displayClear();

	myDisplay.displayScroll("Hello", PA_CENTER, PA_SCROLL_LEFT, 100);
}

void loop() {
	if (myDisplay.displayAnimate()) {
		myDisplay.displayReset();
	}
}

Her şey yolundaysa, aşağıdaki çıktıyı göreceksiniz.

max7219 led ekran arduino kaydırma çıkışı

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.

myDisplay.displayScroll("Hello", PA_CENTER, PA_SCROLL_LEFT, 100);

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 ififadede 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.

void loop() {
	if (myDisplay.displayAnimate()) {
		myDisplay.displayReset();
	}
}

Diğer metin efektleri için lütfen github'daki MD_Parola Kitaplık Referansını ziyaret edin .


ANA SAYFAYA DÖN

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.

Hiç yorum yok:

Yorum Gönder

Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...

Not: Yalnızca bu blogun üyesi yorum gönderebilir.