تحلیل کتابخانه

تحلیل و بررسی کتابخانه Adafruit_SSD1306.h

نوشته شده توسط CiferTech

برای انواع مختلف نمایشگرهای تک رنگ OLED، باید کتابخانه های Arduino را نصب کنید. کدی که برای هر نوع Arduino در نظر گرفته شده است، رابط کاربری این نمایشگرها به دسته SPI یا I2C تقسیم می‌شوند. معمولا در پروژه های اینترنت اشیا و دیگر پروژه های امبدد از برای نمایش متن و مقادیر مختلف از نمایشگرهای Oled استفاده می شود، این ماژول ها در انواع مختلق بسته به نوع درایور اندازه یافت می شوند که یکی از پرطرفدار ترین آن ها SSD1306 است. این نوع از Oled ها معمولا در اندازه های ۰٫۹۶ و ۱٫۳ اینچ ساخته می شوند همچنین پروتکل ارتباطی Oled ها I2C می باشد. صفحه نمایش دیود ساطع کننده نور (OLED) که ما در این آموزش استفاده خواهیم کرد مدل SSD1306 است. یک صفحه نمایش تک رنگ، ۰٫۹۶ اینچی با ۱۲۸ × ۶۴ پیکسل همانطور که در شکل زیر نشان داده شده است. نمایشگر OLED نیازی به نور پس زمینه ندارد، که نتیجه آن ایجاد تضاد بسیار خوب در محیط های تاریک است. همچنین پیکسل های آن فقط هنگام روشن بودن انرژی مصرف می کنند، بنابراین صفحه نمایش OLED در مقایسه با سایر نمایشگرها، مصرف برق کمتری دارد. برای راه اندازی آن از کتابخانه Adafruit_SSD1306.h استفاده خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


نصب کتابخانه Adafruit_SSD1306.h


ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیم‌کرد. مراحل زیر را دنبال کنید:

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Adafruit SSD1306  را جستجو کنید.
  3. کتابخانه را نصب کنید.

 

 


سازگاری کتابخانه با انواع MCU


 


فراخوانی کتابخانه


این کتابخانه با نام Adafruit_SSD1306.h شناخته می‌شود و در مواردی که نیاز به فراخوانی این کتابخانه داریم باید آن ‌را با پسوند قابل فهم برای ادیتور مورد نظر یعنی باد پسوند h. فراخوانی شود که به این شکل نوشته می‌شود Adafruit_SSD1306.h. لازم به ذکر است این کتابخانه همراه با کتابخانه دیگری باید مورد استفاده قرار گیرد به نام Adafruit_GFX که در آموزش های بعدی به تحلیل این مورد نیز خواهیم پرداخت.

#include <Adafruit_SSD1306.h>

 

 


عملکرد فانکشن های عمومی


  • مستندات و ساختار وابسته به پروتکل سخت افزار مورد استفاده

ساختار کتابخانه Adafruit_SSD1306.h برای نمایشگرهای SSD1306 با رابط I2C
w : عرض را به پیکسل نمایش دهید.
h : ارتفاع را به پیکسل نمایش دهید.
twi : پوینتر به یک نمونه موجود از TwoWire.
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

w : عرض را به پیکسل نمایش دهید.
h : ارتفاع را به پیکسل نمایش دهید.
mosi_pin : پین MOSI یا master out, slave in، که داده های سریال را از میکروکنترلر به نمایشگر منتقل می کند.
sclk_pin : پین  SCLK یا serial clock، که این بیت از MOSI کلاک دریافت می‌کند.
dc_pin : پین Data/command که انتخاب می کند که آیا صفحه نمایش دستورات (LOW) یا داده (HIGH) را دریافت می کند.
rst_pin : پین Reset که (با استفاده از شماره گذاری پین آردوینو)، یا در صورت عدم استفاده -۱ (برخی از نمایشگرها ممکن است برای به اشتراک گذاشتن پین ریست میکروکنترلر سیم کشی شده باشند).

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
این تابع برای نمایش محتوای اولیه بافر نمایشگر روی صفحه مورد استفاده قرار می‌گیرد زیرا این کتابخانه با یک صفحه نمایش” Splash Adafruit “مقداردهی اولیه می کند. در واقع همان لوگویی که در تولین راه‌اندازی مشاهده خواهید کرد.
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);

 

  • ;()print

از این تابع برای نمایش متن یا مقادیر مورد نظر در نمایشگر استفاده می‌شود.

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 بشمار می‌آید، که شما می‌توانید در کمترین زمان ممکن سناریو های مد‌نظر خود را اجرا و راه‌اندازی کنید، که این مورد به لطف توابع مختلف در کتابخانه است که کاربر می‌تواند با فراخوانی توابع و مقدار دهی ایده خود را عملی سازد.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه