Mündəricat:

Xüsusi Xarakter Yaradan (Adafruit HT16k33 Matrix): 3 addım
Xüsusi Xarakter Yaradan (Adafruit HT16k33 Matrix): 3 addım

Video: Xüsusi Xarakter Yaradan (Adafruit HT16k33 Matrix): 3 addım

Video: Xüsusi Xarakter Yaradan (Adafruit HT16k33 Matrix): 3 addım
Video: Xarizma Tanrı vergisidir | Həsən Hüseynsoy | TEDxBDU 2024, Iyul
Anonim
Xüsusi Xarakter Yaradan (Adafruit HT16k33 Matrix)
Xüsusi Xarakter Yaradan (Adafruit HT16k33 Matrix)

LCD və Led Matrislərdə Xüsusi İşarələrin Çap edilməsi çox əyləncəlidir. Xüsusi simvolları və ya xüsusi simvolları çap etmək proseduru, hər satır və sütun üçün ikili dəyərləri olan bir sıra yaratmaqdır. Hər hansı bir xüsusi xarakter üçün düzgün kodu tapmaq çətin ola bilər, buna görə də bu layihə 8x8 LED matris üçün kodu avtomatlaşdıracaq və yaradacaq və ayrıca Adafruit HT16k33 8x8 Bicolor Matrix -də xüsusi xarakteri çap edəcək.

Adafruit HT16k33, 1,2 '' 8x8 Bicolor Led Matrix, Arduino ilə I2C rabitə protokolu ilə əlaqə qurur

Adafruit görə, "LED sırt çantasının bu versiyası 1.2" 8x8 matrislər üçün hazırlanmışdır. Cəmi 1,2 "x1.2" ölçürlər, buna görə də onu idarə etmək üçün çoxlu fiş istifadə etmək ayıbdır. Bu sırt çantası, PCB-nin arxasına səliqəli şəkildə oturan bir I2C sabit cərəyan matris nəzarətçisinə sahib olmaqla, 16 pin və ya bir dəstə çip istifadə etməkdə olan narahatlığı aradan qaldırır. Nəzarətçi çipi bütün 64 LED -ləri arxa planda çəkərək hər şeyə diqqət yetirir. Bunun üçün 2 pinli I2C interfeysindən istifadə edərək məlumat yazmaq kifayətdir. İki ünvanlı pin var, buna görə tək 2 pinli I2C avtobusunda 8-ə qədər idarə etmək üçün 8 ünvandan birini seçə bilərsiniz (həmçinin digər I2C çipləri və ya istədiyiniz sensorlar). Sürücü çipi, 16/16 -cı addımda 1/16 parlaqlıqdan tam parlaqlığa qədər bütün ekranı 'söndürə' bilər. Fərdi LEDləri söndürə bilməz, yalnız bir anda bütün ekranı."

Bu təlimatda sizə hər hansı bir xüsusi xarakter üçün kodu real vaxtda necə əldə edəcəyinizi və bu xarakteri Led Matrix -də necə çap edəcəyinizi izah edəcəyəm.

Addım 1: Komponentlər

Bu təlimat Adafruit HT16k33 Matrix -də əsas bir layihədir. Ehtiyacınız var:

  1. Adafruit HT16k33 1,2 '' x 1,2 '' 8x8 Bicolor Led Matrix.
  2. Arduino (Unodan başqa istənilən varianta üstünlük verilir).
  3. Çörək lövhəsi
  4. Enerji təchizatı

Addım 2: Şematik

Sxematik
Sxematik
Sxematik
Sxematik

Adafruit HT16k33 Led matrisini bağlamaq çox asandır, çünki I2C cihazlarında olduğu kimi saatı və məlumat pinini bağlamalıyıq. Bağlantılar belə olacaq:

  1. A5 -ə qoşulmuş SCL (Matrix saat pin) (Arduino Uno -nun saat pimi. Arduinonun digər variantları üçün məlumat cədvəlinə baxın)
  2. A4 -ə qoşulmuş SDA (Matrix məlumat pin). (Arduinonun digər variantları üçün məlumat cədvəlinə baxın)
  3. VCC 5V -ə qoşulub.
  4. GND 0V -ə qoşuldu.

Şəkildə göstərilən sxemə də baxa bilərsiniz.

Addım 3: Kod

Kod
Kod
Kod
Kod

Arduino kodu

Əvvəlcə tələb olunan bütün kitabxanaları daxil edəcəyik.

  1. Wire.h:- I2C ünsiyyəti üçün
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Bütün bu kitabxanalar Arduino IDE -nin özündə mövcuddur. Yalnız bunları Kitabxana Menecerindən quraşdırmalısınız. Eskiz >> Kitabxanaya əlavə et >> Kitabxanaları idarə et

Quraşdırma funksiyası ()

İmzasız 8 bitlik bir sıra 8 satır üçün hər ikisi 8 bitdən (8 sütun) 8 ikili dəyərlər təyin etmək. I2C ünsiyyətinin ünvanını təyin edin.

Döngü funksiyası ()

Xarakteri çap etməli olduğumuz üçün, real vaxt üçün xarakterin koduna ehtiyacımız var. Ən uyğun üsul kodu ardıcıl olaraq göndərməkdir və Arduino serial məlumatlarını oxuyacaq və xarakteri buna uyğun olaraq çap edəcək. Bir sıra ardıcıl olaraq göndərmək çətin bir iş ola bilər, buna görə də vergüllə ayrılmış bütün 8 kodu (hər biri 8 bit) olan bir simli göndərə bilərik.

Serial String oxunur:

əgər (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (məlumatlar); }

Mətni oxuduqdan sonra bu sətrin kodunu açmalı və ikili dəyərləri geri qaytarmalıyıq. Bildiyimiz kimi, giriş sətrinin formatı həmişə eyni olacaq. Substrings tapmaq və sətirləri ondalık ekvivalent dəyərlərinə çevirmək üçün onu kodlaşdıra bilərik. Daha sonra, xarakteri matrisə yazdırmaq üçün yaradılan ondalık massivini (uint8_t) ötürəcəyik.

8 bitlik sətri onluğa çevirmək:

int val (String str) {int v = 0; for (int i = 0; i <8; i ++) {if (str == '1') {v = v+power (2, (7-i)); }} qayıt v; }

Güc funksiyasından (pow ()) istifadə edərək ondalık ekvivalentini qiymətləndirmək üçün ikiqat tipli dəyərlərlə məşğul olmalısınız və buna görə də öz güc funksiyamızı belə yaza bilərik:

int gücü (int baz, int eksponent) {int c = 1; for (int i = 0; i {c = c*base;} qayıt c;}

İndi, nəhayət, yaradılan 8 onluq dəyərdən (hər satır üçün bir ədəd) istifadə edərək xarakteri çap etmək üçün kodu yazacağıq.

boş print_emoji (uint8_t emoji , String rəngi) {matrix.clear (); əgər (rəng == "qırmızı") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } başqa {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); gecikmə (500); }

Əvvəlcə matrisi təmizlədikdən və sonra matrix.drawBitmap () funksiyasından istifadə edərək emoji dizisini istifadə edərək xarakteri göstərdiyimiz üçün bu kodu asanlıqla başa düşəcəksiniz. Bütün formatlardan sonra "matrix.writeDisplay ()" yazmağı unutmayın, çünki bu funksiya yalnız matrisdə indiyə qədər edilən bütün formatları göstərəcəkdir.

İndi simli bütün kod dəyərləri ilə göndərə bilərsiniz və Arduino xarakteri matrisə yazdıracaq. Arduino kodunu aşağıdan yükləyə bilərsiniz. Təcrübə məqsədi ilə yaza bilərsiniz

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

Bu sətir Serial Monitorda və matrisdəki xarakteri görə bilər.

İndi "Çap et" düyməsini basdığımızda serial məlumatlarını bir proqramdan avtomatik olaraq göndərməliyik. Bunu avtomatlaşdırmaq üçün 8x8 bir demo matrisi hazırlayacağıq və istifadəçiyə hansı hüceyrələrin rənglənməsini seçmək imkanı verəcəyik və sonra proqram kodu avtomatik olaraq yaradacaq və məlumatları ardıcıl olaraq Arduino -ya simli formatda göndərəcək. İşimin qalan hissəsi üçün Emal etməyi seçdim. İşlənərkən, 64 düymədən (sıxılmış funksiyalı düzbucaqlılar) istifadə edərək matris yarada bilərik və başlanğıcda müəyyən bir dəyər və rəng təyin edə bilərik (0 dəyəri olan ağ rəng olsun). İndi düyməyə hər dəfə basıldıqda düymənin rəngini qara rəngə çevirəcəyik və dəyəri 1 olaraq təyin edəcəyik. İstifadəçi eyni düyməni bir daha basarsa, dəyəri yenidən 0 -a, rəngi də ağa dönər. Bu, istifadəçinin kodu təkrar -təkrar asanlıqla dəyişdirməsinə kömək edəcək və bütün matrisi bir daha silmədən asanlıqla dəyişikliklər edə bilər. "Çap et" düyməsini basaraq, demo üçün yuxarıda göstərilənə bənzər bir sətir düzəldəcəyik. Sonra simli xüsusi serial portuna göndəriləcək.

İşləmə kodunu aşağıdan yükləyə bilərsiniz. Bu, emaldakı ilk kodumdur. Təkmilləşdirilmiş kodlaşdırma yolu ilə bağlı təkliflər yüksək qiymətləndirilir.

GUI -nin necə göründüyünü və sistemdən istifadə edərək xarakterin necə yaradıldığını görə bilərsiniz. Matrisdə eyni xarakteri yaratmaq saniyələr çəkəcək.

Bu layihənin kodunu və şəkillərini GitHub Depomdan yükləyə bilərsiniz.

Tövsiyə: