Mundarija:

Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix): 3 qadam
Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix): 3 qadam

Video: Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix): 3 qadam

Video: Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix): 3 qadam
Video: BU DUNYONI ASLIDA KIMLAR BOSHQARMOQDA? 2024, Iyul
Anonim
Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix)
Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix)

LCD va LED matritsalarda maxsus belgilarni chop etish - bu juda qiziqarli. Maxsus belgilar yoki maxsus belgilarni chop etish tartibi har bir satr va ustun uchun ikkilik qiymatli massivni yaratishdir. Har qanday maxsus belgi uchun to'g'ri kodni topish qiyin bo'lishi mumkin, shuning uchun bu loyiha 8x8 o'lchamli matritsaning kodini avtomatlashtiradi va ishlab chiqaradi, shuningdek Adafruit HT16k33 8x8 Bicolor Matrix -da maxsus belgini chop etadi.

Adafruit HT16k33, 1,2 dyuymli 8x8 o'lchamli LED matritsasi Arduino bilan I2C aloqa protokoli orqali muloqot qiladi

Adafruit ma'lumotlariga ko'ra, "LED xalta sumkasining bu versiyasi 1,2" 8x8 matritsalar uchun mo'ljallangan. Ular atigi 1,2 dyuymli x1,2 dyuymni o'lchaydilar, shuning uchun uni boshqarish uchun juda ko'p mikrosxemalarni ishlatish uyat. Bu xalta 16 pinli yoki bir nechta chiplardan foydalanishning bezovtalanishini hal qiladi, bu I2C doimiy oqimli matritsa tekshirgichi tenglikni orqa tomoniga to'g'ri o'tirgan holda o'rnatiladi. Tekshirish chipi hamma narsaga g'amxo'rlik qiladi, fonda barcha 64 LEDni chizadi. Buning uchun unga 2-pinli I2C interfeysi yordamida ma'lumotlarni yozish kifoya. Ikkita pinli I2C avtobusida (shuningdek, sizga yoqadigan boshqa I2C chiplari yoki datchiklarida) 8 ta manzilni boshqarish uchun 8 ta manzildan birini tanlashingiz mumkin. Haydovchi chipi 1/16 qadamda to'liq displeyning 1/16 yorqinligidan to to'liq yorqinligiga qadar butun displeyni "xiralashtirishi" mumkin. U alohida LEDlarni o'chira olmaydi, faqat bir vaqtning o'zida butun displey."

Bu ko'rsatmada men sizga har qanday maxsus belgining kodini real vaqtda qanday olish va bu belgini Led Matrix -da chop etishni tushuntiraman.

1 -qadam: komponentlar

Bu ko'rsatma Adafruit HT16k33 Matrix bo'yicha asosiy loyihadir. Senga kerak:

  1. Adafruit HT16k33 1,2 dyuymli 1,2 dyuymli 8x8 ikki rangli LED matritsasi.
  2. Arduino (Uno -dan boshqa har qanday variant afzalroq).
  3. Non paneli
  4. Quvvatlantirish manbai

2 -qadam: sxematik

Sxematik
Sxematik
Sxematik
Sxematik

Adafruit HT16k33 Led matritsasini ulash juda oson, chunki biz odatda I2C qurilmalarida bo'lgani kabi soat va ma'lumotlar pinini ulashimiz kerak. Ulanishlar quyidagicha bo'ladi:

  1. A5 ga ulangan SCL (Matrix soat pin)
  2. A4 ga ulangan SDA (Matrix ma'lumotlar pin). (Arduino -ning boshqa variantlari uchun ma'lumotlar jadvaliga qarang)
  3. VCC 5V ga ulangan.
  4. GND 0V ga ulangan.

Shuningdek, rasmda ko'rsatilgan sxemaga murojaat qilishingiz mumkin.

3 -qadam: kod

Kod
Kod
Kod
Kod

Arduino kodi

Birinchidan, biz kerakli barcha kutubxonalarni o'z ichiga olamiz.

  1. Wire.h:- I2C aloqasi uchun
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Bu kutubxonalarning barchasi Arduino IDE -ning o'zida mavjud. Siz ularni kutubxona menejeridan o'rnatishingiz kerak. Eskiz >> Kutubxonaga qo'shilish >> Kutubxonalarni boshqarish

O'rnatish funktsiyasi ()

Belgilanmagan 8 bitli massivni 8 ta satr uchun 8 ta ikkilik qiymatga o'rnatish, har biri 8 bit (8 ustun). I2C aloqasi uchun manzilni o'rnating.

Loop funktsiyasi ()

Belgini chop etishimiz kerak bo'lganidek, bizga real vaqtda kodning kodi kerak bo'ladi. Eng qulay usul - bu kodni ketma -ket yuborish va Arduino ketma -ket ma'lumotlarni o'qiydi va shunga mos ravishda belgini chop etadi. Massivni ketma -ket yuborish juda qiyin ish bo'lishi mumkin, shuning uchun biz vergul bilan ajratilgan barcha 8 kodli (har biri 8 bitli) qatorni yuborishimiz mumkin.

Serial qatorini o'qish:

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

Matnni o'qib bo'lgach, biz bu satrni dekodlashimiz va ikkilik qiymatlarni qaytarishimiz kerak. Ma'lumki, kirish satrining formati har doim bir xil bo'ladi. Biz uni pastki satrlarni topish va satrlarni o'nlik ekvivalent qiymatlariga aylantirish uchun kodlashimiz mumkin. Keyin matritsadagi belgini chop etish uchun hosil qilingan kasr massivini (uint8_t) o'tkazamiz.

8 bitli mag'lubiyatni o'nli kasrga aylantirish:

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

Quvvat funktsiyasi (pow ()) yordamida o'nlik ekvivalentni baholash uchun siz ikki xil qiymatlar bilan shug'ullanishingiz kerak va shuning uchun biz o'z kuch funksiyamizni quyidagicha yozishimiz mumkin:

int kuchi (int bazasi, int eksponenti) {int c = 1; uchun (int i = 0; i {c = c*tayanch;} qaytish c;}

Nihoyat, biz 8 ta kasrli qiymatdan (har bir satr uchun bittadan) hosil qilingan massiv yordamida belgini chop etish uchun kodni yozamiz.

yaroqsiz print_emoji (uint8_t emoji , String rangi) {matrix.clear (); agar (rang == "qizil") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } boshqa {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); kechikish (500); }

Siz matritsani tozalab, keyin matrix.drawBitmap () funktsiyasidan foydalanib, emoji qatori yordamida belgini ko'rsatayotganimizda, siz bu kodni oson tushunasiz. Hamma formatlashdan keyin "matrix.writeDisplay ()" ni yozishni unutmang, chunki bu funksiya matritsada hozirgacha qilingan barcha formatlarni ko'rsatadi.

Endi siz satrni barcha kod qiymatlari bilan yuborishingiz mumkin va Arduino matritsadagi belgini chop etadi. Arduino kodini pastdan yuklab olishingiz mumkin. Tajriba maqsadida siz yozishingiz mumkin

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

Seriya monitoridagi bu satr va matritsadagi belgini ko'rish mumkin.

Endi biz "Chop etish" tugmachasini bosganimizda ketma -ket ma'lumotlarni avtomatik ravishda dasturiy ta'minotdan yuborishimiz kerak. Buni avtomatlashtirish uchun biz 8x8 matritsali demo qilamiz va biz foydalanuvchiga qaysi hujayralarni rang berishini tanlash imkoniyatini beramiz, keyin dastur avtomatik ravishda kodni ishlab chiqaradi va ma'lumotlarni ketma -ket Arduino -ga ketma -ket yuboradi. Qolgan ishlarim uchun "Qayta ishlash" ni tanladim. Qayta ishlashda biz 64 ta tugma yordamida matritsa yasashimiz mumkin (bosilgan funktsiyali to'rtburchaklar) va boshida ma'lum bir qiymat va rangni belgilashimiz mumkin (bu 0 qiymatli oq rang bo'lsin). Endi tugma bosilganda biz tugma rangini qora rangga aylantiramiz va qiymatni 1 ga o'rnatamiz. Agar foydalanuvchi yana shu tugmani bossa, uning qiymati yana 0 ga, rangi oq rangga o'zgaradi. Bu foydalanuvchiga kodni qayta -qayta osongina o'zgartirishga yordam beradi va matritsani qayta o'chirmasdan osonlikcha o'zgartirishlar kiritadi. "Chop etish" tugmachasini bosish orqali biz demo uchun yuqorida ko'rsatilganiga o'xshash satr qilamiz. Keyin satr ma'lum ketma -ket portga yuboriladi.

Qayta ishlash kodini pastdan yuklab olishingiz mumkin. Bu mening qayta ishlashdagi birinchi kodim. Kengaytirilgan kodlash usuli bo'yicha takliflar yuqori baholanadi.

Siz GUI qanday ko'rinishini va tizim yordamida belgi qanday yaratilganligini ko'rishingiz mumkin. Matritsada bir xil belgini yaratish uchun bir necha soniya kerak bo'lmaydi.

Siz ushbu loyihaning kodini va rasmlarini GitHub omboridan yuklab olishingiz mumkin.

Tavsiya: