برای انواع مختلف نمایشگرهای تک رنگ OLED، باید کتابخانه های Arduino را نصب کنید. کدی که برای هر نوع Arduino در نظر گرفته شده است، رابط کاربری این نمایشگرها به دسته SPI یا I2C تقسیم میشوند. معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگرهای Oled استفاده می شود، این ماژول ها در انواع مختلق بسته به نوع درایور اندازه یافت می شوند که یکی از پرطرفدار ترین آن ها SSD1306 است. این نوع از Oled ها معمولا در اندازه های ۰٫۹۶ و ۱٫۳ اینچ ساخته می شوند همچنین پروتکل ارتباطی Oled ها I2C می باشد. صفحه نمایش دیود ساطع کننده نور (OLED) که ما در این آموزش استفاده خواهیم کرد مدل SSD1306 است. یک صفحه نمایش تک رنگ، ۰٫۹۶ اینچی با ۱۲۸ × ۶۴ پیکسل همانطور که در شکل زیر نشان داده شده است. نمایشگر OLED نیازی به نور پس زمینه ندارد، که نتیجه آن ایجاد تضاد بسیار خوب در محیط های تاریک است. همچنین پیکسل های آن فقط هنگام روشن بودن انرژی مصرف می کنند، بنابراین صفحه نمایش OLED در مقایسه با سایر نمایشگرها، مصرف برق کمتری دارد. برای راه اندازی آن از کتابخانه Adafruit_SSD1306.h استفاده خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه Adafruit_SSD1306.h
ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیمکرد. مراحل زیر را دنبال کنید:
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه Adafruit SSD1306 را جستجو کنید.
- کتابخانه را نصب کنید.
سازگاری کتابخانه با انواع MCU
فراخوانی کتابخانه
این کتابخانه با نام Adafruit_SSD1306.h شناخته میشود و در مواردی که نیاز به فراخوانی این کتابخانه داریم باید آن را با پسوند قابل فهم برای ادیتور مورد نظر یعنی باد پسوند h. فراخوانی شود که به این شکل نوشته میشود Adafruit_SSD1306.h. لازم به ذکر است این کتابخانه همراه با کتابخانه دیگری باید مورد استفاده قرار گیرد به نام Adafruit_GFX که در آموزش های بعدی به تحلیل این مورد نیز خواهیم پرداخت.
#include <Adafruit_SSD1306.h>
عملکرد فانکشن های عمومی
-
مستندات و ساختار وابسته به پروتکل سخت افزار مورد استفاده
rst_pin : پین ریست، (با استفاده از شماره گذاری پین آردوینو)، یا در صورت عدم استفاده -۱ (برخی از نمایشگرها ممکن است برای به اشتراک گذاشتن پین ریست میکروکنترلر سیم کشی شده باشند).
clkDuring : سرعت (هرتز) برای انتقال فیزیکی دیتا در کال های کتابخانه SSD1306. بطور پیشفرض ۴۰۰۰۰۰ (۴۰۰ KHz) تنظیم شده است.
clkAfter : سرعت (هرتز) برای انتقال فیزیکی دیتا در کال های کتابخانه SSD1306. بطور پیشفرض ۱۰۰۰۰۰ (۱۰۰ KHz) تنظیم شده است.
Adafruit_SSD1306::Adafruit_SSD1306 ( uint8_t w, uint8_t h, TwoWire * twi = &Wire, int8_t rst_pin = -1, uint32_t clkDuring = 400000UL, uint32_t clkAfter = 100000UL )
ساختار کتابخانه Adafruit_SSD1306.h برای نمایشگرهای SSD1306 با رابط SPI
sclk_pin : پین SCLK یا serial clock، که این بیت از MOSI کلاک دریافت میکند.
cs_pin : پین Chip-select که برای به اشتراک گذاشتن bus با دستگاه های دیگر کارایی دارد. بطور پیشفرض Active low است.
Adafruit_SSD1306::Adafruit_SSD1306 ( uint8_t w, uint8_t h, int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin, int8_t cs_pin )
مستندات عملکرد اعضا
- ;()Begin
این فانکشن در کتابخانه Adafruit_SSD1306.h برای شروع کار صفحه نمایش در بخش setup بکار گرفته میشود که در ادامه با استفاده از display کال میشود، همراه با این مورد باید آدرس i2c پروتکل مربوط به نمایشگر و همچنین نوع Oled ذکر شود که در نمایشگر هایی که از پروتکل spi استفاده میکنند، تنها نوع نمایشگر ذکر خواهد شد.
display.begin(SSD1306_SWITCHCAPVCC, 0x3D)
- ;()display
display.display();
- ;()clearDisplay
این مورد وظیفه پاک کردن بافر را دارد که در واقع تمام پیکسل های موجود در نمایشگر را خاموش خواهد کرد، این مورد یکی از مواردی است که قبل از راهاندازی اولیه نمایشگر بسیار مورد نیاز است تا در روند اجرای پروژه شما مشکلی ایجاد نشود.
display.clearDisplay();
- ;()drawPixel
این فانکشن یک پیکسل را تنظیم / پاک / معکوس میکند. این امر همچنین توسط کتابخانه Adafruit_GFX قبل اجراست. این فانکشن سه بخش برای تنظیم دارد که شامل مقدار x, مقدار y و همچنین رنگ پیکسل است.
display.drawPixel(10, 10, SSD1306_WHITE);
- ;()invertDisplay
این تابع در کتابخانه Adafruit_SSD1306.h حالت پیکسل ها را معکوس خواهد کرد، که برای مقدار دهی به این تابع از دو مورد true / false استفاده میشود
display.invertDisplay(true); delay(1000); display.invertDisplay(false); delay(1000);
- ;()dim
این مورد برای استفاده از روشنایی متوسط و کامل روشنایی Oled استفاده می شود، که به صورت ۰ و ۱ یا true / false مقدار دهی میشود. که در ضورت true بودن مقدار نور صفحه کم خواهد شد و false بودن مقدار از نمام قدرت نور صفحه استفاده خواهیدکرد.
dim ( bool dim )
- ;()drawLine
از این تابع برای رسم خطوط در نمایشگر های Oled استفاده میشود که برای مقدار دهی باید x , y و h را در تابع تعریف کنید. همچنین در نمایشگر های هایی که قابلیت نمایش چند رنگ را دارند، میتوانید رنگ مورد نظر را بصورت SSD1306_WHITE معرفی کنید.
display.drawLine(display.width()-1, 0, i, display.height()-1, SSD1306_WHITE);
- ;()drawRect
از این تابع برای رسم اشکالی مانند مربع در نمایشگر استفاده میشود، که میتوانیم از این مورد برای ساخت UI استفاده کرد. که در مقدار دهی طول و عرض را مشخص و همچنین رنگ مد نظر را نیز میتوانیم مشخص کنیم.
display.drawRect(i, i, display.width()-2*i, display.height()-2*i, SSD1306_WHITE);
- ;()drawCircle
از این تابع برای رسم دایره استفاده میشود. با وارد کردن مقادیر مورد نیاز دایره رسم خواهد شد.
display.drawCircle(display.width()/2, display.height()/2, i, SSD1306_WHITE);
- ;()setTextSize
این تابع برای مشخص کردن سایز فونت نوشتاری است. برای مثال با وارد کردن مقدار ۱، سایز در نظر گرفته شده برای فونت ۱:۱ پیکسل خواهد بود.
display.setTextSize(1);
- ;()display.setTextColor
از این تابع برای مشخص کردن رنگ نوشته ها استفاده میشود برای مثال SSD1306_WHITE رنگ نوشته را سفید در نظر خواهد گرفت. (این مورد به نوع نمایشگر نیز وابسته است).
display.setTextColor(SSD1306_WHITE);
- ;()setCursor
این تابع برای مشخص کردن محل قرار گیری متن مورد نظر استفاده میشود، که با مقدار دهی دو عددی x و y شروع به کار میکند.
display.setCursor(0, 0);
از این تابع برای نمایش متن یا مقادیر مورد نظر در نمایشگر استفاده میشود.
display.print("Hello World");
- ;()scroll
از این تابع دارای زیر مجموعه هایی نیز هست برای اینجاد حالت نمایش اسلایدی برای متن های پرینت شده در نمایشگر استفاده میشود.
display.startscrollright(0x00, 0x0F); delay(2000); display.stopscroll(); delay(1000); display.startscrollleft(0x00, 0x0F); delay(2000); display.stopscroll(); delay(1000); display.startscrolldiagright(0x00, 0x07); delay(2000); display.startscrolldiagleft(0x00, 0x07); delay(2000); display.stopscroll(); delay(1000);
قطعات سازگار با کتابخانه
نمایشگر های Oled با پروتکل SPI و I2C
جمع بندی
کتابخانه Adafruit SSD1306 یکی از کامل ترین کتابخانه ها و همچنین سریع ترین ازنظر راهاندازی برای نمایشگر های Oled بشمار میآید، که شما میتوانید در کمترین زمان ممکن سناریو های مدنظر خود را اجرا و راهاندازی کنید، که این مورد به لطف توابع مختلف در کتابخانه است که کاربر میتواند با فراخوانی توابع و مقدار دهی ایده خود را عملی سازد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.