Mundarija:
Video: Maxsus belgilar ishlab chiqaruvchisi (Adafruit HT16k33 Matrix): 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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:
- Adafruit HT16k33 1,2 dyuymli 1,2 dyuymli 8x8 ikki rangli LED matritsasi.
- Arduino (Uno -dan boshqa har qanday variant afzalroq).
- Non paneli
- Quvvatlantirish manbai
2 -qadam: 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:
- A5 ga ulangan SCL (Matrix soat pin)
- A4 ga ulangan SDA (Matrix ma'lumotlar pin). (Arduino -ning boshqa variantlari uchun ma'lumotlar jadvaliga qarang)
- VCC 5V ga ulangan.
- GND 0V ga ulangan.
Shuningdek, rasmda ko'rsatilgan sxemaga murojaat qilishingiz mumkin.
3 -qadam: kod
Arduino kodi
Birinchidan, biz kerakli barcha kutubxonalarni o'z ichiga olamiz.
- Wire.h:- I2C aloqasi uchun
- Adafruit_LedBackpack
- 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:
Arduino Hygrothermograph higrometr to'plami +LCD1602/I2C +DHT11 Sinoning ishlab chiqaruvchisi sotib olish: 5 qadam (rasmlar bilan)
Arduino Hygrothermograph Hygrometer Kit +LCD1602/I2C +DHT11 Sinoning ishlab chiqaruvchisi sotib olish: payvandlashning hojati yo'q, murakkab elektr ma'lumotiga ehtiyoj yo'q, siz o'zingizning termometringizni yasashingiz mumkin, faqat biz bergan kabelni ulashingiz kerak. To'plamni sotib oling
Miniatyurali RGB LED belgilar majmuasi (tekis rang): 4 qadam
Miniatyurali RGB LED belgilar majmuasi (bir xil rangda): Ushbu ko'rsatmada men har xil tadbirlarda foydalanish uchun bu LED belgisini qanday qurganimni aytmoqchiman. Men yoqadigan loyihalarni yaxshi ko'raman va yaqinda konventsiyalar va yarmarkalar uchun yoritgichlar yasashga qiziqishim bor
Raqamli belgilar uchun Mirolo tarmoqli LED matritsali displey: 22 qadam (rasmlar bilan)
Raqamli imo -ishoralar uchun Mirolo tarmoqli LED matritsali displey: Raqamli tabelalar tadbirlarda tashrif buyuruvchilarga bo'lajak panellar, jadvaldagi o'zgarishlar yoki ma'lumotni dinamik ravishda etkazish uchun foydali bo'lishi mumkin. LED matritsali displeylardan foydalanish xabarlarni hatto uzoqdan o'qishga imkon beradi va ko'zni qamashtiradigan xususiyatdir
Uyda ishlab chiqarilgan arzon LED chiroq (to'liq ishlab chiqarish): 6 qadam
Uyda ishlab chiqarilgan arzon LED chiroq (to'liq ishlab chiqarish): LEDlarning arzon manbai To'liq mash'ala / chiroq
Paket ishlab chiqaruvchisi: 4 qadam
Batch Maker: V2.0 YANGILASHNI HOZIR !!! QUYIDAGI KO'CHIRISHBu men ozgina vaqt mobaynida ishlagan loyiham .. u vb.net 2008 bilan tuzilgan va yangi boshlanuvchilar uchun partiyani soddalashtiradi … !!!!!!!! DIQQAT !!! !!!!!!!!!! Bu faqat VISTAitda ishlaydi, chunki