İçindekiler:

Özel Karakter Oluşturucu (Adafruit HT16k33 Matrix): 3 Adım
Özel Karakter Oluşturucu (Adafruit HT16k33 Matrix): 3 Adım

Video: Özel Karakter Oluşturucu (Adafruit HT16k33 Matrix): 3 Adım

Video: Özel Karakter Oluşturucu (Adafruit HT16k33 Matrix): 3 Adım
Video: FIRMWARE ile Custom Klavyeye Hayat Ver! - Part 5 QMK Kullanımı #firmware #customkeyboard #diy 2024, Temmuz
Anonim
Özel Karakter Oluşturucu (Adafruit HT16k33 Matrix)
Özel Karakter Oluşturucu (Adafruit HT16k33 Matrix)

LCD'lere ve Led Matrislere Özel Karakterler yazdırmak çok eğlenceli. Özel karakterleri veya özel karakterleri yazdırma prosedürü, her satır ve sütun için ikili değerler içeren bir dizi oluşturmaktır. Herhangi bir özel karakter için doğru kodu bulmak telaşlı olabilir, bu nedenle bu proje otomatikleştirecek ve 8x8 led matris için kod üretecek ve ayrıca özel karakteri Adafruit HT16k33 8x8 Bicolor Matrix'e yazdıracaktır.

Adafruit HT16k33, 1.2'' 8x8 Bicolor Led Matrix, Arduino ile I2C iletişim protokolü üzerinden haberleşir

Adafruit'e göre, "LED sırt çantasının bu versiyonu 1.2" 8x8 matrisler için tasarlandı. Sadece 1.2"x1.2" ölçüyorlar, bu yüzden onu kontrol etmek için çok sayıda çip kullanmak utanç verici. Bu sırt çantası, bir I2C sabit akım matris denetleyicisinin PCB'nin arkasına düzgün bir şekilde oturmasını sağlayarak 16 pim veya bir grup çip kullanma sıkıntısını çözer. Denetleyici yongası, arka planda 64 LED'in tümünü çizerek her şeyi halleder. Tek yapmanız gereken 2 pinli I2C arayüzünü kullanarak veri yazmak. İki adres seçme pimi vardır, böylece tek bir 2 pimli I2C veriyolunda bunlardan en fazla 8 tanesini kontrol etmek için 8 adresten birini seçebilirsiniz (ayrıca istediğiniz diğer I2C yongaları veya sensörleri). Sürücü çipi, 1/16 adımlarda tüm ekranı 1/16 parlaklıktan tam parlaklığa kadar 'kısabilir'. Tek tek LED'leri karartamaz, aynı anda yalnızca tüm ekranı karartabilir."

Bu derste size herhangi bir özel karakterin kodunu gerçek zamanlı olarak nasıl alacağınızı ve bu karakteri Led Matrix'e nasıl yazdıracağınızı açıklayacağım.

Adım 1: Bileşenler

Bu talimat, Adafruit HT16k33 Matrix'teki temel bir projedir. Şunlara ihtiyacınız var:

  1. Adafruit HT16k33 1,2'' x 1,2'' 8x8 Bicolor Led Matrix.
  2. Arduino (herhangi bir varyant ancak Uno tercih edilir).
  3. ekmek tahtası
  4. Güç kaynağı

2. Adım: Şematik

Şematik
Şematik
Şematik
Şematik

Kablolama Adafruit HT16k33 Led matrix, genellikle I2C cihazlarında yaptığımız gibi saat ve data pinini bağlamamız gerektiğinden çok kolaydır. Bağlantılar şöyle olacak:

  1. A5'e bağlı SCL (Matrisin Saat pimi) (Arduino Uno'nun Saat pimi. Arduino'nun diğer çeşitleri için veri sayfasına bakın)
  2. A4'e bağlı SDA (Matrisin Veri pini). (Arduino'nun diğer çeşitleri için veri sayfasına bakın)
  3. 5V'a bağlı VCC.
  4. GND 0V'a bağlı.

Ayrıca şekilde gösterilen şemaya da bakabilirsiniz.

3. Adım: Kodlayın

kod
kod
kod
kod

Arduino Kodu

İlk olarak, gerekli tüm kütüphaneleri dahil edeceğiz.

  1. Wire.h: - I2C iletişimi için
  2. Adafruit_LedSırt Çantası
  3. Adafruit_GFX

Tüm bu kütüphaneler Arduino IDE'nin kendisinde mevcuttur. Bunları Kitaplık Yöneticisinden yüklemeniz yeterlidir. Sketch >> Kitaplığı Dahil Et >> Kitaplıkları Yönet

Kurulum işlevi ()

Her biri 8 bitlik (8 sütun) 8 satırlık 8 satır için 8 bitlik işaretsiz bir tamsayı dizisinin ayarlanması. I2C iletişimi için adresi ayarlayın.

Döngü işlevi ()

Karakteri yazdırmamız gerektiğinden, karakterin koduna gerçek zamanlı olarak ihtiyacımız var. En uygun yöntem kodu seri olarak göndermektir ve Arduino seri verileri okuyacak ve buna göre karakteri yazdıracaktır. Bir diziyi seri olarak göndermek yoğun bir iş olabilir, bu nedenle virgülle ayrılmış 8 kodun (her biri 8 bit) olduğu bir dize gönderebiliriz.

Seri Dize Okuma:

if (Serial.available()>0) { data=Serial.readStringUntil('\n'); Seri.println(veri); }

Metni okuduktan sonra bu dizenin kodunu çözmemiz ve ikili değerleri geri almamız gerekiyor. Bildiğimiz gibi, girdi dizesinin biçimi her zaman aynı olacaktır. Alt dizeleri bulmak ve dizeleri ondalık eşdeğer değerlerine dönüştürmek için kodlayabiliriz. Ardından, karakteri matris üzerine yazdırmak için oluşturulan ondalık diziyi (uint8_t) ileteceğiz.

8 bitlik Dizeyi ondalık sayıya dönüştürme:

int val(Dize dizisi){ int v=0; for (int i=0;i<8;i++) { if (str=='1') { v=v+güç(2, (7-i)); } } v dönüşü; }

Power function(pow()) kullanarak ondalık eşdeğeri değerlendirmek için double type değerlerle uğraşmanız gerekir ve bu nedenle kendi güç fonksiyonumuzu şu şekilde yazabiliriz:

int güç(int taban, int üs){ int c=1; for (int i=0;i { c=c*base; } return c; }

Şimdi, en sonunda, oluşturulan 8 ondalık değer dizisini (her satır için bir tane) kullanarak karakteri yazdırmak için kodu yazacağız.

void print_emoji(uint8_t emoji, Dize rengi){ matrix.clear(); if (color=="red") { matrix.drawBitmap(0, 0, emoji, 8, 8, LED_RED); } else { matrix.drawBitmap(0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay(); gecikme(500); }

Önce matrisi temizlediğimiz ve ardından matrix.drawBitmap() işlevini kullanarak emoji dizisini kullanarak karakteri görüntülediğimiz için bu kodu kolayca anlayacaksınız. Tüm biçimlendirmelerden sonra "matrix.writeDisplay()" yazmayı unutmayın, çünkü bu işlev yalnızca şu ana kadar yapılan tüm biçimlendirmeleri matrix üzerinde görüntüleyecektir.

Artık dizeyi tüm kod değerleriyle gönderebilirsiniz ve Arduino, karakteri matris üzerine yazdıracaktır. Arduino kodunu aşağıdan indirebilirsiniz. Deneme amaçlı yazabilirsiniz

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

Bu dize Seri Monitörde ve matristeki karakteri görebilir.

Şimdi "Yazdır" butonuna bastığımızda seri verileri bir yazılımdan otomatik olarak göndermemiz gerekiyor. Bunu otomatikleştirmek için, bir demo 8x8 matrisi oluşturacağız ve kullanıcıya hangi hücrelerin renklendirileceğini seçmesi için bir kolaylık sağlayacağız ve ardından yazılım otomatik olarak kodu oluşturacak ve verileri seri olarak Arduino'ya string formatında gönderecektir. Çalışmamın geri kalanı için İşleme'yi seçtim. İşlemede 64 buton (basılan fonksiyona sahip dikdörtgenler) kullanarak bir matris oluşturabilir ve başlangıçta belirli bir değer ve renk atayabiliriz (0 değerli beyaz renk olsun). Artık butona her basıldığında butonun rengini siyaha çevireceğiz ve değeri 1 olarak ayarlayacağız. Kullanıcı aynı butona tekrar basarsa değeri tekrar 0'a ve rengi tekrar beyaza dönecektir. Bu, kullanıcının kodu tekrar tekrar kolayca değiştirmesine yardımcı olur ve tüm matrisi tekrar silmeden kolayca değişiklik yapabilir. "Yazdır" düğmesine tıklandığında, demo için yukarıda gösterilene benzer bir dize oluşturacağız. Ardından dize, belirli seri bağlantı noktasına gönderilecektir.

İşlem kodunu aşağıdan indirebilirsiniz. Bu işlemdeki ilk kodum. Gelişmiş kodlama yöntemi için öneriler çok takdir edilmektedir.

GUI'nin nasıl göründüğünü ve karakterin sistem kullanılarak nasıl oluşturulduğunu görebilirsiniz. Aynı karakteri matrix üzerinde oluşturmak saniyeler sürmez.

Bu projenin kodunu ve görsellerini GitHub Depomdan indirebilirsiniz.

Önerilen: