نمایشگر گرافیکی OLED SH1106 یک ماژول صفحهنمایش کوچک و کممصرف با قابلیت نمایش گرافیک و متن است که از طریق پروتکلهای ارتباطی مانند I2C یا SPI به میکروکنترلرها متصل میشود. در این آموزش، با نحوه راهاندازی، برنامهنویسی و استفاده از این نمایشگر در پروژههای الکترونیکی آشنا میشوید.
.jpg)
در دنیای الکترونیک و میکروکنترلرها، نمایش اطلاعات به صورت بصری یکی از مهمترین نیازهای هر پروژه به شمار میرود. نمایشگرهای OLED به دلیل مصرف کم، کنتراست بالا و اندازهی کوچک، محبوبیت زیادی در بین سازندگان و علاقهمندان به الکترونیک پیدا کردهاند.یکی از پرکاربردترین این نمایشگرها، OLED با درایور SH1106 است که قابلیت نمایش متن و گرافیک را با وضوح مناسب فراهم میکند و از طریق رابطهایی مانند I2C و SPI به راحتی قابل اتصال به آردوینو، ESP و دیگر میکروکنترلرهاست. در این آموزش، با اصول عملکرد این نمایشگر، نحوهی راهاندازی آن، و همچنین نمایش متن و اشکال گرافیکی آشنا میشوید تا بتوانید آن را بهعنوان یک ابزار کاربردی در پروژههای خود به کار بگیرید.

راه اندازی
1. اتصال فیزیکی نمایشگر:
در مرحله اول نمایشگر را طبق نقشه زیر به آردوینو متصل کنید.

2. نصب کتابخانه:
در مرحله بعد باید کتابخانه Adafruit_SH110X.h را نصب کنیم. برای این کاردر نرم افزار آردوینو کلید ctrl+shift+i را فشار داده یا از قسمت sketch کزینه include libraries و سپس manage libraries را انتخاب کنید. سپس عبارت Adafruit SH110X را سرچ کنید و کتابخانه را نصب کنید.

3. برنامه نمونه:
جهت تست میتوانید در منوی file در قسمت examples برنامه نمونه ای را باز کرده و آپلود کنید. مطابق تصویر از نمونه برنامه های Adafruit SH110X برنامه SH1106_128_64_i2c را باز کرده و روی بورد آپلود نمایید.

4. برنامه نویسی:
برنامه نمایشگر گرافیکی OLED شامل دستوراتی میشود که هرکدام کاربرد خاصی دارند. جهت راه اندازی نمایشگر OLED اولین کاری که در یک برنامه باید کرد فراخانی کتابخانهها و ساخت آبجکت display است. در تعریف آبجکت display میبایست ابتدا طول و عرض نمایشگر، پروتکل ارتباطی (Wire) و شماره پایه ریست نمایشگر را مشخص کرد. در اینجا چون نمایشگر پایه ریست ندارد مقدار آن را -1 قرار میدهیم. در تابع Setup تنظیمات مربوط به نمایشگر را انجام میدهیم. در تابع display.begin(0x3c) آدرس نمایشگر را مشخص میکنیم که به طور پیشفرض 0x3C است. با استفاده از تابع display.setTextColor(1) رنگ نوشته ها را مشخص میکنیم. مقدار 1 به معنی رنگ سفید و مقدار 0 به معنی رنگ مشکی است. تابع display.setTextSize(2) نیز سایز نوشته را مشخص میکند که میتواند عددی از 1 تا 7 باشد.

در تابع void loop() لازم است قبل از نمایش شکل یا نوشته جدیدی یک با محتویات قبلی نمایشگر را پاک کنیم. این کار با دستور display.clearDisplay() انجام میشود. با دستور display.print("hello") میتوان یک نوشته بر روی نمایشگر چاپ نمود. در انتها جهت نمایش و آپدیت نمایشگر از دستور display.display() استفاده میشود.

5. لیست دستورات پرکاربرد:
| پاک کردن صفحه نمایش |
display.clearDisplay();
|
| رسم دایره توپر در مختصات (x, y) و شعاع r و رنگ color |
display.fillCircle(x, y, r, color);
|
| رسم دایره توخالی در مختصات (x, y) و شعاع r و رنگ color |
dipslay.drawCircle(x, y, r, color);
|
| آپدیت کردن صفحه نمایش |
display.display();
|
| رسم مستطیل تو پر |
display.fillRect(x, y, w, h, color);
|
| رسم مستطیل تو خالی |
display.drawRect(x, y, w, h, color);
|
| تغییر اندازه نوشته |
display.setTextSize(s);
|
| تغییر رنگ نوشته |
display.setTextColor(color);
|
| رفتن به مختصات 0 و 0 |
display.setCursor(0, 0);
|
| چاپ کردن یک کلمه |
display.print("hello");
|
| چاپ کردن کلمه و رفتن به خط بعدی |
display.println("Hello");
|
| اینورت کردن رنگ های نمایشگر |
display.invertDisplay();
|
| تغییر رنگ یک پیکسل |
display.drawPixel(x, y, color);
|
| گرفتن رنگ یک پیکسل |
display.getPixel(x, y);
|
| طول نمایشگر |
display.width();
|
| عرض نمایشگر |
display.height();
|
| رسم خط بین دو نقطه |
display.drawLine(x1, y1, x2, y2, color);
|
| رسم مثلث تو خالی بین سه نقطه |
display.drawTriangle(x1, y1, x2, y2, x3, y3, color);
|
| رسم مثلث توپر بین سه نقطه |
display.fillTriangle(x1, y1, x2, y2, x3, y3, color);
|
| چاپ یک کاراکتر |
display.drawChar(x, y, c, color, bg, size);
|