فهرست مطالب:

مولد شخصیت های سفارشی (Adafruit HT16k33 Matrix): 3 مرحله
مولد شخصیت های سفارشی (Adafruit HT16k33 Matrix): 3 مرحله

تصویری: مولد شخصیت های سفارشی (Adafruit HT16k33 Matrix): 3 مرحله

تصویری: مولد شخصیت های سفارشی (Adafruit HT16k33 Matrix): 3 مرحله
تصویری: شخصیت های مخفی فنف 🤯 / FNAF 2024, نوامبر
Anonim
مولد شخصیت سفارشی (Adafruit HT16k33 Matrix)
مولد شخصیت سفارشی (Adafruit HT16k33 Matrix)

چاپ کاراکترهای ویژه بر روی LCD و ماتریس های Led یک سرگرمی عالی است. روش چاپ کاراکترهای خاص یا کاراکترهای سفارشی این است که برای هر سطر و ستون یک آرایه با مقادیر باینری تولید کنید. ممکن است پیدا کردن کد صحیح برای هر کاراکتر دلپذیر باشد ، بنابراین ، این پروژه به صورت خودکار و تولید کد برای ماتریس led 8x8 و همچنین چاپ کاراکتر سفارشی در Adafruit HT16k33 8x8 Briolor Matrix.

Adafruit HT16k33 ، یک ماتریس 1.2 اینچی 8x8 Bicolor Led با آردوینو از طریق پروتکل ارتباطی I2C ارتباط برقرار می کند

به گفته Adafruit ، "این نسخه از کوله پشتی LED برای ماتریس های 1.2" 8x8 طراحی شده است. اندازه آنها فقط 1.2 اینچ x1.2 اینچ است ، بنابراین شرم آور است که از آرایه عظیمی از تراشه ها برای کنترل آن استفاده کنیم. این کوله پشتی با استفاده از یک کنترل کننده ماتریس جریان ثابت I2C که به طور منظمی در پشت PCB قرار گرفته است ، مزاحمت استفاده از 16 پین یا تعدادی تراشه را برطرف می کند. تراشه کنترل کننده از همه چیز مراقبت می کند و همه 64 LED را در پس زمینه ترسیم می کند. کافی است داده ها را با استفاده از رابط 2 پین I2C برای آن بنویسید. دو پین انتخاب آدرس وجود دارد ، بنابراین می توانید یکی از 8 آدرس را برای کنترل حداکثر 8 آدرس در یک گذرگاه 2 پین I2C (و همچنین هر چیپ یا سنسور دیگر I2C که دوست دارید) انتخاب کنید. تراشه راننده می تواند کل صفحه نمایش را از روشنایی 1/16 تا روشنایی کامل در مراحل 1/16 کم کند. نمی تواند LED های جداگانه را کم کند ، فقط کل صفحه را در یک زمان روشن می کند."

در این دستورالعمل ، من به شما توضیح می دهم که چگونه می توانید کد هر کاراکتر سفارشی را در زمان واقعی دریافت کرده و آن کاراکتر را در Led Matrix چاپ کنید.

مرحله 1: اجزاء

این دستورالعمل یک پروژه اساسی در Adafruit HT16k33 Matrix است. تو نیاز داری:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. آردوینو (هر نوع دیگری اما Uno ترجیح داده می شود).
  3. تخته نان
  4. منبع تغذیه

مرحله 2: شماتیک

شماتیک
شماتیک
شماتیک
شماتیک

سیم کشی Adafruit HT16k33 Led ماتریس بسیار آسان است زیرا ما باید ساعت و پین داده را به طور معمول برای دستگاه های I2C متصل کنیم. اتصالات به شرح زیر خواهد بود:

  1. SCL (پین ساعت ماتریس) متصل به A5 (پین ساعت Arduino Uno. برای سایر انواع آردوینو به برگه اطلاعات مراجعه کنید)
  2. SDA (پین داده ماتریس) متصل به A4. (برای سایر انواع آردوینو به برگه اطلاعات مراجعه کنید)
  3. VCC به 5 ولت متصل شده است.
  4. GND به 0 ولت متصل شد.

همچنین می توانید از شماتیک نشان داده شده در شکل مشورت کنید.

مرحله 3: کد

کد
کد
کد
کد

کد آردوینو

در مرحله اول ، ما تمام کتابخانه های مورد نیاز را شامل می شود.

  1. Wire.h:- برای ارتباط I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

همه این کتابخانه ها در خود Arduino IDE موجود است. فقط باید آنها را از Library Manager نصب کنید. طرح >> شامل کتابخانه >> مدیریت کتابخانه ها

تابع راه اندازی ()

تنظیم یک آرایه عدد صحیح 8 بیتی بر روی strore8 مقادیر دودویی برای 8 ردیف ، هر کدام 8 بیت (8 ستون). آدرس ارتباط I2C را تعیین کنید.

عملکرد حلقه ()

همانطور که ما نیاز به چاپ کاراکتر داریم ، به کد کاراکتر در زمان واقعی نیاز داریم. راحت ترین روش ارسال کد به صورت سریال است و آردوینو داده های سریال را می خواند و بر این اساس کاراکتر را چاپ می کند. ارسال یک آرایه به صورت سری ممکن است یک کار شلوغ باشد ، بنابراین ما می توانیم یک رشته را با همه 8 کد (هر کدام 8 بیت) با کاما از هم جدا کنیم.

خواندن رشته سریال:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n')؛ Serial.println (داده) ؛ }

پس از خواندن متن ، باید این رشته را رمزگشایی کرده و مقادیر دودویی را پس بگیریم. همانطور که می دانیم ، قالب رشته ورودی همیشه یکسان خواهد بود. ما می توانیم آن را برای یافتن زیر رشته ها و تبدیل رشته ها به مقادیر معادل اعشاری آنها کدگذاری کنیم. سپس آرایه اعشاری تولید شده (uint8_t) را برای چاپ کاراکتر روی ماتریس منتقل می کنیم.

تبدیل رشته 8 بیتی به اعشاری:

int val (String str) {int v = 0؛ برای (int i = 0؛ i <8؛ i ++) {if (str == '1') {v = v+power (2، (7-i))؛ }} return v؛ }

برای ارزیابی معادل اعشاری با استفاده از تابع توان (pow ()) ، شما باید با مقادیر دو نوع برخورد کنید و بنابراین ما می توانیم تابع توان خود را به صورت زیر بنویسیم:

قدرت int (int پایه ، int توان) {int c = 1؛ برای (int i = 0؛ i {c = c*base؛} بازگشت c؛}

اکنون ، در نهایت ، ما کد را برای چاپ کاراکتر با استفاده از آرایه تولید شده از 8 مقدار اعشاری (یکی برای هر سطر) می نویسیم.

void print_emoji (uint8_t emoji ، String color) {matrix.clear ()؛ if (رنگ == "قرمز") {matrix.drawBitmap (0، 0، emoji، 8، 8، LED_RED)؛ } else {matrix.drawBitmap (0 ، 0 ، emoji ، 8 ، 8 ، LED_GREEN) ؛ } matrix.writeDisplay ()؛ تأخیر (500) ؛ }

شما به راحتی این کد را درک خواهید کرد زیرا ما ابتدا ماتریس را پاک می کنیم و سپس با استفاده از تابع matrix.drawBitmap () ماتریس را با استفاده از آرایه emoji نمایش می دهیم. فراموش نکنید که "matrix.writeDisplay ()" را بعد از قالب بندی بنویسید زیرا این تابع فقط تمام قالب بندی های انجام شده در ماتریس را نشان می دهد.

اکنون می توانید رشته را با تمام مقادیر کد ارسال کنید و Arduino کاراکتر را روی ماتریس چاپ می کند. می توانید کد آردوینو را از زیر بارگیری کنید. برای اهداف تجربی ، می توانید بنویسید

B00111100 ، B01000010 ، B10100101 ، B10000001 ، B10100101 ، B10011001 ، B01000010 ، B00111100

این رشته در Serial Monitor است و می تواند کاراکتر را روی ماتریس مشاهده کند.

اکنون ، وقتی دکمه "چاپ" را فشار می دهیم ، باید داده های سریال را به طور خودکار از یک نرم افزار ارسال کنیم. برای خودکارسازی ، ما یک ماتریس نمایشی 8x8 ایجاد می کنیم و به کاربر امکاناتی را می دهیم تا انتخاب کند کدام سلول ها باید رنگی باشند و سپس نرم افزار به طور خودکار کد را تولید کرده و داده ها را به صورت رشته ای به صورت رشته ای به آردوینو ارسال می کند. من پردازش را برای بقیه کارهایم انتخاب کردم. در پردازش ، ما می توانیم با استفاده از 64 دکمه (مستطیل هایی با عملکرد فشرده) یک ماتریس بسازیم و در ابتدا مقدار و رنگ خاصی را تعیین کنیم (بگذارید رنگ سفید با مقدار 0 باشد). حالا هر زمان که دکمه فشار داده شود ، رنگ دکمه را به سیاه تبدیل کرده و مقدار را روی 1 قرار می دهیم. اگر کاربر دوباره دکمه مشابه را فشار دهد ، مقدار آن دوباره به 0 تغییر می کند و رنگ دوباره به سفید تغییر می کند. این به کاربر کمک می کند تا بارها و بارها به راحتی کد را تغییر دهد و می تواند به راحتی اصلاحات را بدون پاک کردن مجدد کل ماتریس انجام دهد. با کلیک روی دکمه "چاپ" ، رشته ای شبیه به آنچه در نسخه نمایشی نشان داده شده است ، ایجاد می کنیم. سپس رشته به درگاه سریال خاص ارسال می شود.

می توانید کد پردازش را از زیر بارگیری کنید. این اولین کد من در پردازش است. پیشنهادات برای روش کدگذاری پیشرفته بسیار مورد استقبال قرار می گیرد.

می توانید نحوه ظاهر GUI و نحوه ایجاد کاراکتر با استفاده از سیستم را مشاهده کنید. ایجاد یک کاراکتر مشابه در ماتریس چند ثانیه طول نمی کشد.

می توانید کد و تصاویر این پروژه را از مخزن GitHub من بارگیری کنید.

توصیه شده: