خانه » ارتباط ماژول نمایشگر OLED با آردوینو
آخرین بروز رسانی: 29 آذر 1401

ارتباط ماژول نمایشگر OLED با آردوینو

آیا از استفاده­ مکرر از نمایشگرهای LCD کاراکتری در پروژه های آردوینو خود خسته شده ­اید؟ در واقع آنها دیگر قدیمی شده ­اند و زمان آن رسیده است که وارد دنیای نمایشگرهای فوق العاده­ OLED (Organic Light-Emitting Diode) شوید! این نمایشگرها تقریباً به اندازه­ کاغذ، نازک و بسیار سبک هستند. همچنین در عملکرد و تولید تصاویر مختلف انعطاف­پذیرند و تصویری روشن تر و واضح تر تولید می کنند.

اجزای مورد نیاز

شما به اجزای زیر نیاز دارید:

بررسی اجمالی سخت افزار

در قلب ماژول، یک کنترلر درایور تک تراشه  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 دیدگاه