آیا از استفاده مکرر از نمایشگرهای LCD کاراکتری در پروژه های آردوینو خود خسته شده اید؟ در واقع آنها دیگر قدیمی شده اند و زمان آن رسیده است که وارد دنیای نمایشگرهای فوق العاده OLED (Organic Light-Emitting Diode) شوید! این نمایشگرها تقریباً به اندازه کاغذ، نازک و بسیار سبک هستند. همچنین در عملکرد و تولید تصاویر مختلف انعطافپذیرند و تصویری روشن تر و واضح تر تولید می کنند.
اجزای مورد نیاز
شما به اجزای زیر نیاز دارید:
- آردوینو UNO اونو × ۱
- نمایشگر OLED تک رنگ یا دورنگ × ۱
- برد بورد × ۱
بررسی اجمالی سخت افزار
در قلب ماژول، یک کنترلر درایور تک تراشه CMOS OLED – SSD1306 قدرتمند قرار دارد که این درایور میتواند از طریق دو پروتکل ارتباطی I2C و SPI با میکروکنترلر ارتباط برقرار کند. از آنجایی که استفاده از کنترلر SSD1306 در کاربردهای مختلف آسان بوده، در پروژههای متنوعی کاربرد دارد و این ویژگی باعث شده است که این ماژول در اندازهها(مانند 128×64، 128×32) و رنگ های مختلف (مانند سفید، آبی و یا دو رنگ) عرضه شود. خبر خوب این است که همهی مدلهای این نمایشگرها میتوانند جایگزین یکدیگر شوند.
نمایشگر SPI یا نمایشگر I2C، کدام را انتخاب کنیم؟
به طور کلی با اینکه پروتکل ارتباطی SPI سریعتر از I2C است، اما برای اتصال به میکروکنترلر به پایههای I/O بیشتری نیاز دارد. این در حالی است که در اتصال I2C تنها به دو پایه نیاز است و میتوان آن را با سایر پروتکلهای I2C به اشتراک گذاشت. از آنجا که انتخاب بین این دو پروتکل یک مبادله بین تعداد پایهی استفاده شده و سرعت است، اینکه کدام راه ارتباطی را انتخاب کنید، یک انتخاب کاملا شخصی است.
تغذیه نمایشگر
یک صفحه نمایش OLED، برخلاف نمایشگر LCD کاراکتری، به نور پس زمینه نیاز ندارد زیرا خودش نور مورد نیازش را تولید می کند. همین موضوع است که باعث ایجاد قابلیتهایی همچون کنتراست بالای نمایشگر، زاویه دید بسیار وسیع و توانایی نمایش سطوح سیاه عمیق در این نوع نمایشگرها شده است. همچنین عدم استفاده از نور پسزمینه، مصرف برق را به میزان قابل توجهی کاهش میدهد. میزان مصرف جریان در این نمایشگرها به میزان روشنایی صفحه نمایش بستگی دارد، اما میتوان گفت که این نمایشگرها به طور متوسط حدود 20 میلی آمپر جریان مصرف میکنند. ولتاژ کاری کنترلر SSD1306، 1.65 تا 3.3 ولت می باشد، این موضوع در حالی است که پنل OLED به ولتاژ تغذیه 7 تا 15 ولت نیاز دارد. تمام این ولتاژهای مورد نیاز، توسط مدار پمپ شارژ داخلی تامین میشوند. همین مدار، امکان اتصال صفحه نمایش را به آردوینو و یا هر میکروکنترلر منطقی 5 ولتی دیگر را بدون نیاز به مبدل فراهم میکند.
نقشه حافظه OLED
صرف نظر از اندازهی صفحه نمایش OLED، درایور SSD1306 شامل یک رم 1 کیلوبایتی گرافیکی نمایش داده (GDDRAM) است که یک الگوی بیتی را برای نمایش روی صفحه ذخیره میکند. این حافظه 1 کیلوبایتی به 8 صفحه (از 0 تا 7) تقسیم شده است. هر صفحه دارای 128 ستون/بخش است (بلوک 0 تا 127). علاوه بر این، هر ستون می تواند 8 بیت داده (از 0 تا 7) را ذخیره کند. طبق آنچه تا به اینجا گفته شد، داریم:
۸صفحهx۱۲۸بخش(ستون)x ۸بیت داده=8192 بیت= 1024بایت=۱کیلوبایت حافظه
کل این حافظه، از جمله صفحات، بخش ها و داده ها در زیر نشان داده شده است.
هر بیت نشان دهنده یک پیکسل OLED روی صفحه است که میتواند به صورت برنامه ریزی شده روشن یا خاموش شود. همانطور که قبلا گفته شد، صرف نظر از اندازهی ماژول OLED، هر ماژول دارای 1 کیلوبایت RAM است. ماژول OLED 128×64 کل محتویات 1 کیلوبایت رم (همه 8 صفحه) را نمایش میدهد، در حالی که ماژول OLED 128×32 تنها نیمی از رم (4 صفحه اول) را نمایش میدهد.
مشخصات فنی
در جدول زیر مشخصات فنی نمایشگر OLED استفاده شده در این پروژه، آورده شده است:
تکنولوژی نمایش | OLED(LED ارگانیک) |
پروتکل ارتباطی با میکروکنترلر | I2C/ SPI |
اندازهی صفحه نمایش | 0.96 اینچ |
رزولوشن | 64*128 پیکسل |
ولتاژ کاری | 3.3تا 5 ولت |
جریان کاری | 20میلیآمپر(max) |
زاویه دید | 160ᵒ |
تعداد کاراکترها در هر ردیف | 21 |
تعداد ردیف کاراکترها | 7 |
پایه های ماژول نمایشگر OLED
قبل از اینکه وارد نمونه کد شویم، اجازه دهید به نحوهی قرارگیری پایه های OLED نگاهی بیندازیم.
ماژول نمایشگر OLED I2C
GND پایه ماژول زمین است.
VCC پایه تغذیه نمایشگر است که به پایه 5 ولت آردوینو وصل می شود.
SCL پایه ساعت سریال، برای ارتباط I2C است.
SDA پایه داده سریال، برای ارتباط I2C است.
ماژول نمایش SPI OLED
GND پایه زمین است.
VCC تغذیه نمایشگر است که به پایه 5 ولت آردوینو متصل می شود.
D0 / CLK پایه ساعت SPI است. که یک پایه ورودی است.
D1 / MOSI پایه داده ورودی سریال است (برای داده هایی که از میکروکنترلر به نمایشگر ارسال میشود).
RES (Reset) پایه بافر داخلی درایور OLED را بازنشانی میکند.
از پایه DC (داده/فرمان) برای جدا کردن دستورات (مانند تنظیم مکان نما در یک مکان خاص، پاک کردن صفحه و غیره) از داده ها استفاده می شود.
CS پین Chip Select است.
نحوهی اتصال یک ماژول نمایشگر OLED به آردوینو
قبل از اینکه به آپلود کد و ارسال داده به صفحه نمایش بپردازیم، ابتدا باید نمایشگر را به آردوینو بدرستی متصل کنیم.
اتصال صفحه نمایش OLED I2C
اگر از صفحه نمایش OLEDبا پروتکل I2C استفاده میکنید، برای یافتن نحوهی اتصال ماژول به آردوینو به توضیحاتی که در ادامه آمده است، مراجعه کنید. نحوهی اتصال ساده است. کافی است با اتصال پایه VCC به خروجی 5 ولت آردوینو و پایه GND به زمین شروع کنید. پایه SCL را به پایه ساعت I2C و پایه SDA را به پایه داده I2C در آردوینو وصل کنید. لازم به ذکر است که هر برد آردوینو دارای پین های I2C متفاوتی است. در بردهای آردوینوی مدل R3، SDA (خط داده) و SCL (خط ساعت) نزدیک به پایهی AREF قرار دارند. آنها همچنین با نامهای A5 (SCL) و A4 (SDA) شناخته میشوند. تصویر زیر نحوه اتصال را نشان میدهد:
نصب کتابخانه ماژول نمایش OLED
کنترلر SSD1306 در صفحه نمایش OLED دارای درایورهای انعطاف پذیر اما پیچیده است. برای استفاده از کنترلر SSD1306، به دانش گستردهای از آدرس دهی حافظه مورد نیاز است. خوشبختانه کتابخانه Adafruit SSD1306 برای آسان کردن پیچیدگیهای کنترلر SSD1306 نوشته شده است و به ما این امکان را میدهد تا صفحه نمایش را با دستورات ساده کنترل کنیم. برای نصب کتابخانه، به Sketch > Include Library > Manage Libraries بروید. سپس منتظر بمانید تا فهرست کتابخانه توسط Library Manager دانلود و لیست کتابخانه های نصب شده به روز شود.
پس از به روز رسانی کتابخانه، باید چند گزینه مختلف وجود داشته باشد، میتوانید جستجوی خود را با تایپ «adafruit ssd1306» محدود کنید. به دنبال Adafruit SSD1306 از Adafruit بگردید. روی آن کلیک کنید و سپس بر روی دکمه Install کلیک کنید.
کتابخانه Adafruit SSD1306 یک کتابخانه مخصوص سخت افزار برای دستورات سطح پایین است. برای نمایش گرافیکهای اولیه مانند نقاط، خطوط، دایره ها و مستطیلها، باید از کتابخانه Adafruit GFX استفاده شود. در نتیجه بایستی این کتابخانه را نیز نصب کنید.
در داخل کتابخانه Adafruit SSD1306 از کتابخانه Adafruit Bus IO استفاده شده است. بنابراین، Adafruit BusIO را در مدیریت کتابخانه جستجو کنید و آن را نیز نصب کنید.
آردوینو مثال 1 – نمایش متن
و اکنون قسمت هیجان انگیز فرا می رسد!
در اینجا یک مثال ساده وجود دارد که موارد زیر را انجام میدهد:
- نمایش متن ساده
- نمایش متن معکوس
- نمایش اعداد
- نمایش اعداد با پایه(Hex,Dec)
- نمایش نمادهای ASCII
- حرکت دادن متن به صورت افقی و عمودی
- حرکت دادن بخشی از صفحه نمایش
این مثال به شما درک کاملی از نحوهی کار با صفحه نمایش OLED ارائه میدهد و میتواند به عنوان یک مثال پایه برای آزمایشها و پروژه های دیگر مورد استفاده قرار بگیرد. میتوانید دستورات زیر را امتحان کنید. در ادامه به توضیح جزئیات این دستورات خواهیم پرداخت.
این همان چیزی است که باید به عنوان خروجی دستورات بالا مشاهده کنید:
توضیح کد:
این مثال با افزودن این چهار کتابخانه به ابتدای دستورات آغاز میشود : SPI.h، Wire.h، Adafruit GFX.h و Adafruit SSD1306.h. اگرچه کتابخانه SPI.h برای نمایشگرهای OLED I2C مورد نیاز نیست، اما باید آن را برای کامپایل برنامه، به کد خود اضافه کنیم.
مرحله بعدی ایجاد یک شی با استفاده از فایل Adafruit_SSD1306.h است. برای استفاده از Adafruit_SSD1306 وارد نمودن سه آرگومان لازم است : عرض صفحه، ارتفاع صفحه، و شمارهی آن پایه از آردوینو که پایه reset نمایشگر به آن متصل است. بنابراین، برای استفاده از کتابخانه، چند آرگومانی که در بالا گفته شد، تعریف شده اند. از آنجایی که صفحه نمایش مورد استفاده در این مثال، پایهی RESET ندارد، در تعریف آرگومان مربوط به پایه reset، از 1- استفاده می نماییم تا نشان دهیم که هیچ یک از پایه های آردوینو به پایه reset نمایشگر متصل نشده است.
این بخش از دستورات از پروتکل I2C برای ارتباط با نمایشگر استفاده میکند. با این حال، اگر میخواهید ازپروتکل SPI استفاده کنید، کافی است خطوط دستورات زیر را از حالت comment خارج کنید.
در تابع setup، باید OLED را با استفاده از تابع begin() ، مقدار دهی اولیه کنیم. برای استفاده از این تابع، تعریف دو پارامتر لازم است. پارامتر اول، SSD1306_SWITCHCAPVCC می باشد و مدار شارژ داخلی را روشن میکند و پارامتر دوم آدرس I2C نمایشگر را تنظیم میکند. اکثر ماژولهای نمایشگرI2C ، دارای آدرس 0x3C هستند، اما آدرس برخی از آنها 0x3D می باشد. قبل از چاپ اولین پیام بر روی صفحهی نمایش، باید بافر را پاک کنیم.
نمایش متن ساده: Hello World
برای نمایش متن، ابتدا لازم است اندازه فونت را تعیین کنیم. این کار را میتوان با فراخوانی دستور setTextSize() و ارسال اندازه فونت (شروع از 1) به عنوان یک پارامتر ورودی برای این تابع انجام داد. سپس باید رنگ فونت را با فراخوانی تابع setTextColor() تنظیم کنیم. سفید را برای پسزمینه تیره و سیاه را برای پسزمینه روشن استفاده نمایید. قبل از چاپ پیام، ابتدا باید موقعیت مکان نما را با فراخوانی تابع setCursor(X,Y) تنظیم کنیم. پیکسلهای روی صفحه، با مختصات افقی (X) و عمودی (Y) مکانیابی می شوند. مبدا (0, 0) در گوشه سمت چپ بالا قرار دارد که با افزایش مقدار X وY، مکان نما به ترتیب به سمت راست و به سمت پایین تغییر مکان می دهد. برای چاپ پیام، می توان مانند نحوهی چاپ دادهها در مانیتور سریال عمل و از توابع print(” “) یا println(” “) استفاده نمود. نکته: به خاطر داشته باشید که دستور println() ، مکان نما را به خط بعدی منتقل می کند. در مرحله آخر، با استفاده از دستور display()، محتویات بافر صفحه به حافظه داخلی کنترلر SSD1306 انتقال داده می شوند و در نهایت روی صفحه نمایش OLED نمایش داده می شوند.
نمایش متن معکوس
برای نمایش متن معکوس، یک بار دیگر از تابع setTextColor(FontColor,BackgroundColor) استفاده می کنیم. اگر دقت کرده باشید، متوجه میشوید که قبلاً فقط یک پارامتر را به این تابع ارسال میکردیم، اما اکنون دو پارامتر را مقداردهی میکنیم. در این حالت، استفاده از دستورsetTextColor(BLACK,WHITE) منجر به ایجاد متن سیاه بر روی پسزمینهی پر شده (سفید) میشود.
تعیین اندازهی متن
پیشتر در این آموزش، از تابع setTextSize() برای تغییر اندازهی متن استفاده کردیم و عدد 1 را به عنوان اندازهی فونت ارسال کردیم. شما میتوانید اندازهی فونت را با ارسال هر عدد صحیح غیر منفی به این تابع تغییر دهید. کاراکترها با نسبت 7:10 نمایش داده میشوند. به عبارت دیگر، ارسال مقدار عددی ۱ به عنوان اندازهی فونت، متن را با ابعاد 10*7 پیکسل برای هر کاراکتر و مقدار عددی 2، متن را با اندازهی 20*14 پیکسل برای هر کاراکتر ارائه میکند. این نسبت برای سایر اعداد نیز صادق است.
نمایش اعداد
از توابع print() یا println() میتوان برای نمایش اعداد در نمایشگر OLED استفاده نمود. از آنجا که این توابع، مقادیر اعداد صحیح بدون علامت 32 بیتی را می پذیرد، شما فقط میتوانید اعدادی را از 0 تا 4,294,967,295 نمایش دهید.
تعیین پایه برای اعداد
توابع print() و println() یک پارامتر دوم اختیاری دارند که پایهی اعداد مورد استفاده را مشخص میکند. مقادیر معتبر BIN(دودویی، یا پایه )2، OCT (اکتال، یا پایه 8)، DEC (اعشاری، یا پایه 10) و HEX (هگزا دسیمال، یا پایه 16) هستند. برای اعداد اعشاری، این پارامتر تعداد اعشار مورد استفاده را مشخص می کند. برای مثال:
print(78, BIN) مقدار”1001110″ را چاپ می کند
print(78, OCT) مقدار “116” را چاپ می کند
print(78,DEC) مقدار “78” را چاپ میکند.
print(78, HEX) مقدار “4E” را چاپ می کند
println(1.23456, 0) مقدار “1” را چاپ می کند
println(1.23456, 2) مقدار “1.23” را چاپ می کند
println(1.23456, 4) مقدار “1.2346” را چاپ می کند
نمایش نمادهای ASCII
توابع print() و println() داده ها را به عنوان متن ASCII قابل خواندن برای انسان به نمایشگر ارسال میکنند، در حالی که تابع write()، داده های باینری را به نمایشگر ارسال می کند. بنابراین میتوان از این تابع برای نمایش نمادهای ASCII استفاده کرد. به عنوان مثال، ارسال 3 نماد قلب را نشان می دهد.
اسکرول تمام صفحه
میتوانید صفحه نمایش را با فراخوانی توابع startscrollright() و startscrollleft() به صورت افقی و با فراخوانی توابع startscrolldiagright() و startscrolldiagleft() به صورت مورب اسکرول کنید. همهی این توابع دو پارامتر دارند: صفحهی شروع و صفحهی توقف. میتوانید برای درک بهتر موضوع، به توضیحات مربوط به صفحات که در بخش OLED Memory Map آورده شده است مراجعه کنید. از آنجایی که نمایشگر دارای هشت صفحه (از 0 تا 7) است، میتوانید کل صفحه را با پیمایش تمام صفحات، یعنی عبور دادن پارامترهای 0x00 و 0x07 را اسکرول کنید. تابع stopscroll() می تواند برای پایان دادن به اسکرول صفحه نمایش استفاده شود.
پیمایش بخشی از صفحه نمایش
گاهی اوقات، نمی خواهید همهی صفحه نمایش را اسکرول کنید، بلکه نیاز دارید تنها بخشی از آن را جابهجا کنید، در اینصورت می توانید با ارسال اطلاعات صفحه شروع و توقف به دستورات مربوطه به هدف خود برسید. ارسال مقدار 0x00 به عنوان مقادیر مورد نظر برای هر دو پارامتر، فقط صفحهی اول صفحه نمایش (8 ردیف اول) را جابهجا میکند.
مثال 2 – ترسیم اشکال پایه
در این مثال یک سری دستورات ساده وجود دارد که نحوه ترسیم اشکال ابتدایی مانند مستطیل، دایره و مثلث را نشان میدهد. دستورات مربوطه به طور کامل در زیر آورده شده است. در ادامه، جزئیات دستورات را مورد بررسی قرار خواهیم داد.
این همان چیزی است که باید به عنوان خروجی این دستورات مشاهده کنید:
به جز کدهای زیر که اشکال اصلی را ترسیم می کنند، اکثردستورات (تنظیم نمایشگر) در این مثال مانند دستورات در مثال ۱ است،.
رسم مستطیل
برای رسم مستطیل بایستی از تابع drawRect() استفاده شود. برای استفاده از این تابع باید پنج پارامتر را در تابع وارد نمود: مختصات X و Y، عرض، ارتفاع و رنگ. این تابع در واقع یک مستطیل توخالی با حاشیه 1 پیکسل ترسیم می کند. میتوان از تابع fillRect() برای رسم مستطیل پر شده استفاده نمود.
رسم مستطیل با گوشه های گرد
برای رسم مستطیل گوشه گرد باید از تابع drawRoundRect() استفاده شود. این تابع علاوه بر پارامترهای مشابه با تابع drawRect ، به یک پارامتر دیگر به عنوان ورودی نیاز دارد که برای تعیین شعاع گرد کردن گوشه ها است. این تابع در واقع یک مستطیل گرد توخالی با حاشیه 1 پیکسل ترسیم می کند. میتوان از تابع fillRoundRect()برای رسم مستطیل گرد پر شده استفاده نمود.
رسم دایره
برای رسم دایره بایستی از تابع drawCircle()استفاده شود. این تابع چهار پارامتر را به عنوان ورودی دریافت میکند: مختصاتX مرکز دایره ، مختصات Y مرکز دایره، شعاع و رنگ. این تابع یک دایره توخالی با حاشیه 1 پیکسل رسم می کند. میتوان از تابع fillCircle() می تواند برای رسم یک دایرهی پر شده استفاده نمود.
رسم مثلث
برای ترسیم مثلث میتوان از تابع drawTriangle() استفاده نمود. این تابع هفت پارامتر را به عنوان ورودی اولیه دریافت میکند: سه مختصات X و Y برای رئوس مثلث (x0,y0,x1,y1,x2 & y2) و رنگ. (x0,y0 ) رأس بالایی، (x1,y1) رأس چپ و (x2,y2) راس سمت راست است. این تابع یک مثلث توخالی با حاشیه 1 پیکسل ترسیم میکند. میتوان از تابع fillTriangle() می تواند برای رسم مثلث پر شده استفاده نمود.
مثال 3 آردوینو – نمایش Bitmap
در آخرین مثال به ترسیم تصاویر بیت مپ بر روی صفحه نمایش OLED خواهیم پرداخت. این مثال برای ساختن اینفوگرافیکها و صفحه نمایش های اسپلش با آرم شرکتها مفید است.
این همان تصویری است که باید به عنوان خروجی این دستورات مشاهده کنید:
توضیح کد:
از تابع drawBitmap() برای نمایش یک تصویر بیت مپ بر روی صفحه نمایش OLED استفاده میشود. این تابع شش پارامتر را به عنوان ورودی اولیه دریافت میکند: مختصات X گوشه سمت چپ بالا، مختصات Y گوشه سمت چپ بالا، آرایه بایت بیت مپ تک رنگ، عرض بیت مپ به پیکسل، ارتفاع بیت مپ به پیکسل و رنگ. در این مثال، اندازه تصویر بیت مپ 128×64 بایت است. بنابراین، مختصات X و Y روی 0 و عرض و ارتفاع روی 128 و 64 تنظیم می شوند.
قبل ازهرچیز بایستی یک تصویر را برای ترسیم انتخاب کنید. به یاد داشته باشید که وضوح صفحه نمایش OLED، 128×64 پیکسل است، بنابراین تصاویر بزرگتر از این اندازه، به درستی نمایش داده نمیشوند. برای به دست آوردن یک تصویر با اندازهی مناسب، تصویر مورد نظر خود را با استفاده از یک برنامهی طراحی، مانند Inkscape، Photoshop یا MS Paint باز نموده و اندازهی تصویر را روی 128×64 پیکسل تنظیم کنید. به عنوان مثال در این آموزش از عکس مرلین مونرو استفاده شده است. برای این کار ابتدا اندازهی عکس را در برنامهی MS Paint به 128×64 پیکسل تغییر دادیم و آن را با پسوند .bmp ذخیره کردیم.
هنگامی که یک بیت مپ دارید، باید آن را به آرایهای تبدیل کنید که کنترلر OLED SSD1306 بتواند آن را درک کند. این کار را میتوان به دو روش انجام داد: ۱) به روش آنلاین و با استفاده از image2cpp و ۲) به روش آفلاین و با کمک LCD Assistant.
روش آنلاین تولید آرایهی بیتمپ: image2cpp
یک ابزار آنلاین به نام image2cpp وجود دارد که میتواند تصویر شما را به یک آرایه تبدیل کند. این ابزار به شما امکانات زیر را ارایه میدهد:
- تبدیل چندین تصویر به صورت همزمان
- تغییر مقیاس فایل تصویر
- تنظیم آستانه روشنایی بین سیاه و سفید
- قرار دادن تصویر به صورت عمودی و/یا افقی در مرکز
- معکوس کردن رنگهای تصویر
برای شروع، image2cpp را در مرورگر خود جست و جو کنید و تصویر مورد نظر خود را با انتخاب گزینهی choose file در سایت آپلود کنید.
ابعاد تصویر شما در گزینه Canvas size در قسمت Image Settings نمایش داده میشود. اگر تصویر شما بزرگتر از 128×64 است، با انتخاب گزینه scaling ، اندازهی آن را به 128×64 تغییر دهید. نتیجه را می توانید در قسمت پیش نمایش مشاهده کنید. در صورت لزوم، میتوانید رنگ پس زمینه را تغییر دهید و یا رنگهای تصویر را معکوس کنید.در نهایت، مهمترین تنظیم – آستانه روشنایی – را متناسب با نیاز خود تغییر دهید. هنگامی که یک آستانه تعیین میکنید، پیکسلهای بالاتر از این سطح، سفید و پیکسلهای پایینتر، سیاه خواهند شد. در این مثال، این مقدار را روی 171 تنظیم کردیم تا بتوانیم جزئیات تصویر را به خوبی مشاهده کنیم.
در قسمت پیش نمایش، میتوانید نتیجهی هر تغییری را که در تنظیمات خود ایجاد کردهاید را مشاهده نمایید.
هنگامی که تنظیمات تصویر به پایان رسید، میتوانید به ادامهی روند تولید آرایه بپردازید. در نهایت میتوانید کد آردوینو را به عنوان فرمت خروجی انتخاب کرده و دکمه Generate code را فشار دهید. علاوه بر نکاتی که تا به اینجا گفته شد این مسیله نیز باید مورد توجه قرار بگیرد که تنظیماتی به نام “حالت ترسیم” وجود دارد. در واقع این تنظیم، تصاویر را بر اساس الگوی اسکن نمایشگر تولید میکند. اگر تصویر شما در صفحه نمایش، درست نمایش داده نمیشود، میتوانید با تغییر تنظیمات این بخش، تصویر را تصحیح کنید.
آرایه بیت مپ شما ایجاد شد. می توانید مستقیماً با استفاده از خروجی این بخش و دستورات آورده شده در مثال 3، خروجی را مشاهده نمایید. در هنگام ذخیرهی آرایهی بیتمپ، یک نام مناسب برای آن انتخاب کنید. اکنون میتوانید در تابع drawBitmap() از آرایه خود استفاده کنید.
مولد آرایه بیت مپ آفلاین – LCD Assistant
یک برنامهی کاربردی در ویندوز به نام LCD Assistant وجود دارد که میتواند تصویر بیتمپ شما را به آرایه تبدیل کند. این برنامه به اندازهی image2cpp قدرتمند نیست، اما همچنان مورد استفاده بسیاری از کاربران میباشد. برای شروع، تصویر خود را به یک بیت مپ تک رنگ 128×64 بیتی تبدیل کنید. شما می توانید این کار را در هر برنامهی طراحی مانند Inkscape، Photoshop یا MS Paint انجام دهید، درست مانند آنچه در MS Paint انجام دادیم.
MS Paint را باز کنید و اندازه فایل خود را به 128×64 پیکسل تغییر دهید.
اکنون باید فایل خود را به صورت بیت مپ ذخیره کنید. هنگام ذخیرهی فایل بیتمپ تک رنگ، گزینهی (*.bmp;*.dib) را انتخاب کنید. این پسوند، یک تصویر بیتمپ 1 بیتی(باینری) با تنها دو مقدار ممکن برای هر پیکسل تولید می کند: 0 (سیاه) یا 1 (سفید).
تنها مشکل این روش آن است که نمی توانید سطح آستانه روشنایی را تنظیم کنید. این مقدار به طور پیش فرض روی 50% تنظیم شده است و نمیتوان آن را تغییر داد. اکنون برنامه LCD Assistant را دانلود کنید. برنامه را باز کرده و بیت مپ خود را از منوی File انتخاب کنید.
سپس کافی است به منوی File رفته و گزینه Save output را انتخاب کنید و فایل را به عنوان یک سند متنی ذخیره کنید. علاوه بر تنظیماتی که گفته شد، تنظیماتی به نام Byte Orientation نیز وجود دارد که در واقع تصاویر را بر اساس الگوی اسکن نمایشگر تولید میکند. اگر تصویر شما بر روی صفحه نمایش به درستی نمایش داده نمیشود، میتوانید با تغییر تنظیمات این بخش، تصویر را تصحیح کنید.
پس از اینکه آرایه خود را ایجاد کردید، آن را کپی کرده و در کد خود قرار دهید.
در هنگام ذخیرهی آرایه بیتمپ، یک نام مناسب برای آن انتخاب کنید. اکنون میتوانید در تابع drawBitmap() از آرایه خود استفاده کنید.
مقالات مرتبط رو حتما ببینید
نظر شما برای ما با ارزشه
0 دیدگاه