آموزش آردوینو

اتصال نمایشگر OLED به آردوینو (آموزش جامع)

آیا از استفاده مکرر از نمایشگرهای LCD کاراکتری در پروژه های آردوینو خود خسته شده اید؟ خب! آنها در واقع بسیار قدیمی هستند. در حال حاضر نمایشگر های OLED بسیار محبوب هستند و به سادگی برنامه میپذیرند. این نمایشگر ها سبک، بدون نیاز به اتصالات زیاد و همچنین ارزان قیمت هستند. نمایشگر OLED تصویر روشن تری را نمایش میدهد و همچنین توانایی نمایش تصاویر را نیز دارد.

معرفی نمایشگر OLED SSD1306

نمایشگرهای OLED در طیف وسیعی از اندازه ها (مانند 128×64، 128×32) و رنگ ها (مانند OLED های سفید، آبی و دو رنگ) در دسترس هستند. برخی از نمایشگرهای OLED دارای رابط I2C هستند، در حالی که برخی دیگر دارای رابط SPI هستند.

با این حال، یک چیز مشترک همه آنها این است که در هسته آنها یک کنترلر درایور قدرتمند تک تراشه OLED SSD1306 وجود دارد که تمام بافرهای RAM را کنترل می کند.

در این آموزش، ما از نمایشگرهای OLED 0.96 اینچی 128×64 I2C و SPI استفاده خواهیم کرد. اگر ماژول شما اندازه یا رنگ متفاوتی دارد نگران نباشید. اطلاعات این صفحه برای آن نیز مفید است.

معرفی نمایشگر OLED SSD1306

نمایشگر SPI یا I2C، کدام را انتخاب کنیم؟

SPI به طور کلی سریعتر از I2C است، اما به پین ​​های I/O بیشتری نیاز دارد. از سوی دیگر، I2C تنها به دو پین نیاز دارد و می تواند با سایر لوازم جانبی I2C به اشتراک گذاشته شود. به این دلیل که I2C به پین های کمتری احتیاج دارد، غالبا ترجیح داده میشود.

تغذیه نمایشگر OLED SSD1306

این نمایشگر میتواند با ولتاژ 3.3 و 5 ولت تغذیه شود و به خوبی نیاز های نمایشی پروژه شما را بر آورده میکند. یک صفحه نمایش OLED، برخلاف نمایشگر LCD کاراکتری، به نور پس زمینه نیاز ندارد. این موضوع کنتراست بالای نمایشگر، زاویه دید بسیار وسیع و توانایی نمایش سطوح سیاه عمیق را ممکن میکند. عدم وجود نور پس زمینه مصرف برق را به میزان قابل توجهی کاهش می دهد. این نمایشگر به طور متوسط ​​حدود 20 میلی آمپر مصرف می کند.

مشخصات فنی

در اینجا مشخصات آمده است:

فناوری صفحه نمایش OLED (Organic LED)
پروتکل ارتباطی I2C / SPI
سایز صفحه 0.96 اینچ
رزولوشن 128×64 پیکسل
ولتاژ کاری 3.3V – 5V
جریان مصرفی 20mA حداکثر
زاویه دید 160°
کاراکتر در هر ردیف 21
تعداد ردیف ها 7

پین های نمایشگر OLED

قبل از اینکه وارد کد اتصال و نمونه شویم، اجازه دهید به پین‌آوت آن نگاهی بیندازیم.

ماژول نمایشگر OLED پروتکل I2C

ماژول نمایشگر OLED پروتکل I2C

  • GND پین زمین است.
  • VCC منبع تغذیه نمایشگر است که آن را به پایه 5 ولت آردوینو وصل می کنیم.
  • SCL یک پین ساعت سریال برای رابط I2C است.
  • SDA یک پین داده سریال برای رابط I2C است.

ماژول OLED با ارتباط SPI

ماژول نمایش SPI با پروتکل OLED

  • GND پین زمین است.
  • VCC منبع تغذیه نمایشگر است که آن را به پایه 5 ولت آردوینو وصل می کنیم.
  • D0 / CLK پین ساعت SPI است.
  • D1 / MOSI پین سریال داده ورودی است، برای داده هایی که از میکروکنترلر شما به نمایشگر ارسال می شود.
  • پین RES (Reset) بافر داخلی درایور OLED را ریست می کند.
  • DC توسط کتابخانه برای جدا کردن دستورات (مانند تنظیم مکان نما در یک مکان خاص، پاک کردن صفحه و غیره) از داده ها استفاده می شود.
  • CS پین Chip Select است.

مدار اتصالات نمایشگر OLED به برد آردوینو

قبل از اینکه به آپلود کد و ارسال داده به نمایشگر بپردازیم، اجازه دهید نمایشگر را به آردوینو متصل کنیم.

ما برای هر دو نوع نمایشگر اتصالات را نمایش میدهیم.

اتصال OLED I2C به آردوینو

اگر از صفحه نمایش OLED I2C استفاده می کنید، لطفاً سیم کشی زیر را انجام بدهید.

اتصال OLED I2C به آردوینو

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

اتصالات ساده هستند. با اتصال پایه VCC به خروجی 5 ولت آردوینو و پایه GND به GND شروع کنید. پایه SCL را به پایه ساعت I2C و پایه SDA را به پایه داده I2C در آردوینو وصل کنید.

سیم کشی نمایشگر SPI OLED

اگر از صفحه نمایش SPI OLED استفاده می کنید، لطفاً سیم کشی زیر را انجام بدهید.

سیم کشی نمایشگر SPI OLED

با اتصال پایه VCC به خروجی 5 ولت آردوینو و پایه GND به GND شروع کنید. اکنون D0/CLK، D1/MOSI، RES، DC و CS را به ترتیب به پین ​​های دیجیتال 10، 9، 13، 11 و 12 متصل کنید.

جدول زیر اتصالات پین ها را نمایش میدهد:

SPI OLED Arduino
VCC 5V
GND GND
D0 / CLK 10
D1 / MOSI 9
RES 13
DC 11
CS 12

چه کتابخانه هایی برای نمایشگر OLED نیاز است؟

برای کار با نمایشگر OLED باید سه کتابخانه زیر نصب شود:

  • Adafruit SSD1306
  • Adafruit BUSIO
  • Aafruit GFX

خوشبختانه کتابخانه Adafruit SSD1306 به ما امکان می دهد صفحه نمایش را با دستورات ساده کنترل کنیم.

برای نصب کتابخانه، به Sketch > Include Library > Manage Libraries بروید.

نام کتابخانه را مشابه «adafruit ssd1306» جستجو کنید. باید چند مورد نمایش داده شود. به دنبال Adafruit SSD1306 توسط Adafruit بگردید. روی آن کلیک کنید و سپس Install را انتخاب کنید.

در حال نصب Adafruit SSD1306 OLED کتابخانه

کتابخانه Adafruit GFX به ما امکان میدهد کار های گرافیکی را به سادگی انجام بدهیم. میتوانید نقاط، خطوط، دایره و مستطیل را به سادگی با این کتابخانه رسم کنید. این کتابخانه را نیز نصب کنید.

نصب Adafruit GFX Graphics Core Library

کتابخانه Adafruit SSD1306 از کتابخانه Adafruit Bus IO استفاده می کند. بنابراین، Adafruit BusIO را نیز نصب کنید.

نصب کتابخانه Bus Io برای نمایشگر OLED

کد آردوینو برای نمایشگر اولد

حالا به قسمت کدنویسی رسیدیم. در اینجا چندین کد را با هم بررسی میکنیم که به شما در درک کدنویسی نمایشگر اولد کمک میکند. میتوانید با توجه به نیاز خود این کد ها را تغییر بدهید تا تمرین کنید و سطح خود را ارتقا بدهید.

نمایش متن ساده (Hello World)

نمایش متن ساده (Hello World)

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // عرض نمایشگر
#define SCREEN_HEIGHT 64 // طول نمایشگر

// مقادیر زیر برای ارتباط I2C مورد نیاز هستند
#define OLED_RESET     -1 // پین ریست
#define SCREEN_ADDRESS 0x3C // آدرس نمایشگر
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
  Serial.begin(115200);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // تنظیم آدرس نمایشگر و بررسی ارتباط
    Serial.println(F("SSD1306 allocation failed")); 
    for(;;);
  }
  delay(2000);
  display.clearDisplay(); // پاک کردن موارد روی نمایشگر

  display.setTextSize(1); // تنظیم سایز فونت
  display.setTextColor(WHITE); // تنظیم رنگ متن
  display.setCursor(0,28); // تنظیم موقعیت متن
  display.println("Hello world!"); // متن نمایشی
  display.display(); // دستور نمایش
  delay(2000); // ایجاد تاخیر
}

void loop() { 
}

طرح با گنجاندن چهار کتابخانه آغاز می شود: SPI.h، Wire.h، Adafruit_GFX.h، و Adafruit_SSD1306.h. اگرچه کتابخانه SPI.h برای نمایشگرهای OLED I2C مورد نیاز نیست، آن را اضافه میکنیم تا در صورت نیاز از آن استفاده کنید.

مرحله بعدی ایجاد یک آبجکت از Adafruit_SSD1306.h است. Adafruit_SSD1306 سه آرگومان را می پذیرد: عرض صفحه، ارتفاع صفحه، و شماره پین ​​آردوینو که پین ریست نمایشگر به آن متصل است.

همچنین، از آنجایی که صفحه نمایش OLED مورد استفاده ما پین RESET ندارد، ما -1 را در دستور قرار میدهیم تا نشان دهد که هیچ یک از پین های آردوینو برای تنظیم مجدد نمایشگر استفاده نشده است.

برای نمایش متن روی صفحه، ابتدا باید اندازه فونت را تعیین کنیم. این را می توان با فراخوانی setTextSize() و ارسال اندازه فونت (شروع از 1) به عنوان پارامتر انجام داد.

سپس با فراخوانی تابع setTextColor() رنگ فونت را تنظیم می کنیم. سفید را برای پس‌زمینه تیره و سیاه را برای پس‌زمینه روشن تنظیم کنید.

قبل از چاپ پیام، ابتدا باید موقعیت مکان نما را با فراخوانی تابع setCursor(X,Y) تنظیم کنیم. پیکسل های روی صفحه با مختصات افقی (X) و عمودی (Y) آنها ارجاع داده می شوند. مبدا (0,0) در گوشه سمت چپ بالا قرار دارد که X مثبت به سمت راست و Y مثبت به سمت پایین افزایش می یابد.

برای چاپ پیام روی صفحه، می‌توانیم از توابع print(" ") یا println(" ") استفاده کنیم.

مرحله آخر استفاده از دستور display() برای دستور دادن به کتابخانه برای انتقال بافر صفحه به حافظه داخلی کنترلر SSD1306 و نمایش محتویات روی صفحه نمایش OLED است.

تغییر سایز متن در نمایشگر OLED

برای تغییر سایز متن کافی است مشابه زیر کد را وارد کنید.

تغییر سایز متن در نمایشگر OLED

display.clearDisplay();
display.setTextColor(WHITE);
display.setCursor(0,24);
display.setTextSize(2);
display.println("Hello!");
display.display();
delay(2000);

قبلاً در این آموزش، از تابع ()setTextSize برای تعیین اندازه متن استفاده کردیم و عدد 1 را به عنوان پارامتر ارسال کردیم. شما می توانید سایز فونت را با افزایش این عدد بیشتر کنید.

رسم مستطیل در نمایشگر OLED

برای رسم مستطیل و اشکال در این نمایشگر میتوانید از کد زیر استفاده کنید.

رسم مستطیل در نمایشگر OLED

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Rectangle");
display.drawRect(0, 15, 60, 40, WHITE);
display.display();
delay(2000);

display.clearDisplay();  
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Filled Rectangle");
display.fillRect(0, 15, 60, 40, WHITE);
display.display();
delay(2000);

تابع drawRect() می تواند برای رسم مستطیل روی نمایشگر استفاده شود. این تابع پنج پارامتر را می پذیرد: مختصات X و Y، عرض، ارتفاع و رنگ. این تابع در واقع یک مستطیل توخالی با حاشیه 1 پیکسل ترسیم می کند. تابع fillRect() می تواند برای رسم مستطیل توپر استفاده شود.

نمایش تصویر در نمایشگر SSD1306

آخرین مثال ما نحوه نمایش تصاویر بیت مپ را در صفحه نمایش OLED آموزش می دهد. این کد در هنگام نمایش چیزهایی مانند لوگو، اسپرایت، اینفوگرافیک یا آیکون مفید است. کد کامل به شرح زیر است:

#include <SPI.h> #include <Wire.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h> 
#define SCREEN_WIDTH 128 // عرض نمایشگر 
#define SCREEN_HEIGHT 64 // طول نمایشگر

// مقادیر زیر برای ارتباط I2C مورد نیاز هستند 
#define OLED_RESET -1 // پین ریست 
#define SCREEN_ADDRESS 0x3C // آدرس نمایشگر 
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// کد زیر آرایه بیت مپ تصویر است
const unsigned char MarilynMonroe [] PROGMEM = {
  0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xf0, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xff, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xfc, 0x02, 0x78, 0x7f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xff, 0xff, 0xfe, 0x03, 0x7c, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 0xfe, 0x01, 0xfe, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xfd, 0xe0, 0x03, 0xff, 0xff, 0xfc, 0x00, 0xfe, 0x0f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xfe, 0x87, 0xe0, 0xff, 0xff, 0xfc, 0x00, 0x06, 0x07, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xf9, 0xff, 0xff, 0xfc, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xc3, 0xc3, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xf0, 0x3f, 0xff, 0xff, 0xe0, 0x0c, 0x00, 0xe7, 0x81, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xe0, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x1e, 0x3f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0x3f, 0xf8, 0x00, 0x18, 0x7f, 0x1f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xf8, 0x01, 0x80, 0x03, 0xfc, 0x3f, 0xfc, 0x00, 0x70, 0xfe, 0x1f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xf0, 0x43, 0xff, 0xff, 0xf8, 0x7f, 0xf8, 0x00, 0x00, 0x7e, 0x1f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xfc, 0x00, 0x00, 0x7c, 0x3f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xf1, 0xef, 0xf8, 0x00, 0x01, 0xfc, 0x3f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xe4, 0xff, 0xff, 0xff, 0xf3, 0x80, 0xa0, 0x00, 0x07, 0xfc, 0xaf, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xec, 0x5f, 0xff, 0xff, 0xe7, 0xf0, 0x00, 0x00, 0x03, 0xfe, 0xdf, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xee, 0x7f, 0xff, 0xff, 0xc7, 0xf8, 0x00, 0x00, 0x03, 0xff, 0xdf, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xf7, 0xc7, 0xff, 0x06, 0x00, 0x03, 0xff, 0xbf, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xfe, 0x5f, 0xff, 0xc7, 0x07, 0xff, 0x80, 0x00, 0x07, 0xdb, 0xbf, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0x80, 0x03, 0xff, 0xc0, 0x00, 0x03, 0xc3, 0x0f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x98, 0x03, 0xff, 0xf8, 0x00, 0x07, 0xe0, 0x0f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xf8, 0x01, 0xff, 0xfc, 0x01, 0x07, 0xfc, 0x1f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xcf, 0xef, 0xff, 0xff, 0xe1, 0xff, 0xfc, 0x01, 0x07, 0xf8, 0x1f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x7f, 0xf1, 0xff, 0xf8, 0x02, 0x07, 0x88, 0x3f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xcf, 0xef, 0xf8, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x07, 0x84, 0x3f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xe7, 0xef, 0xf0, 0x04, 0x7f, 0xff, 0xc0, 0x00, 0x07, 0x84, 0x7f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x3f, 0xff, 0xe0, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x06, 0x04, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x3f, 0x7f, 0xe1, 0xf0, 0x07, 0xff, 0x80, 0x00, 0x07, 0x06, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xfe, 0x03, 0xff, 0x00, 0x00, 0x03, 0x80, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xf2, 0x3f, 0xc6, 0x7f, 0x81, 0xce, 0x00, 0x00, 0x01, 0xc1, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xe0, 0x3f, 0xc0, 0x07, 0xc1, 0xfe, 0x00, 0x00, 0x0d, 0xc0, 0x7f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xe0, 0x3f, 0xc0, 0x01, 0xe0, 0xfc, 0x00, 0x00, 0x0f, 0xc0, 0x7f, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xc0, 0x3f, 0xc0, 0x00, 0x50, 0xfc, 0x00, 0x00, 0x0e, 0xc0, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xc0, 0x3f, 0xc0, 0x00, 0x18, 0xf8, 0x00, 0x00, 0x0e, 0xc1, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xc0, 0x3f, 0xc0, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x66, 0x81, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xc0, 0x1f, 0xc7, 0x80, 0x00, 0xf8, 0x00, 0x01, 0xe0, 0x00, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xc0, 0x1f, 0xc1, 0xe0, 0x01, 0xf8, 0x00, 0x03, 0xf0, 0x01, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x80, 0x1f, 0xc0, 0x3e, 0x03, 0xf0, 0x00, 0x00, 0xe0, 0x03, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x00, 0x1f, 0xe0, 0xe0, 0x03, 0xf2, 0x00, 0x00, 0xc0, 0x03, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x80, 0x1f, 0xf0, 0x00, 0x07, 0xe6, 0x00, 0x00, 0xc0, 0x03, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0x00, 0x1f, 0xee, 0x00, 0x00, 0x80, 0x07, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xb8, 0x0f, 0xff, 0xf0, 0x3f, 0xdc, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xbc, 0x0f, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x9e, 0x0f, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x08, 0x0f, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x00, 0x0b, 0xff, 0xff, 0xf9, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x3c, 0x09, 0xff, 0xff, 0xf1, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x1e, 0x08, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x1f, 0x08, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0x80, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xce, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xfe, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff
};

void setup()
{
  Serial.begin(9600);
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  // پاک کردن نمایشگر
  display.clearDisplay();

  // نمایش تصویر
  display.drawBitmap(0, 0,  MarilynMonroe, 128, 64, WHITE);
  display.display();
}

void loop() {
}

و این همان چیزی است که در نمایشگر ما نشان داده میشود:

نمایش تصویر در نمایشگر SSD1306

تابع drawBitmap() برای نمایش یک تصویر بیت مپ بر روی صفحه نمایش OLED استفاده می شود. این تابع شش پارامتر را می پذیرد: مختصات X گوشه سمت چپ بالا، مختصات Y گوشه سمت چپ بالا، آرایه بایت بیت مپ تک رنگ، عرض بیت مپ به پیکسل، ارتفاع بیت مپ به پیکسل و رنگ.

اندازه تصویر بیت مپ در مثال ما 128×64 است. بنابراین، مختصات X و Y روی 0 تنظیم میشود تا تصویر کامل نمایش داده شود.

// نمایش تصویر
display.drawBitmap(0, 0,  MarilynMonroe, 128, 64, WHITE);
display.display();

قبل از اینکه بتوانیم از تابع drawBitmap() استفاده کنیم، به یک تصویر برای ترسیم نیاز داریم. به یاد داشته باشید که وضوح صفحه نمایش OLED 128×64 پیکسل است، بنابراین تصاویر بزرگتر از آن به درستی نمایش داده نمی شوند. برای به دست آوردن یک تصویر با اندازه مناسب، تصویر خود را ویرایش کنید و ابعاد آن را روی 64*128 قرار بدهید.

ما از عکس مرلین مونرو به عنوان مثال استفاده کردیم. ما ابعاد آن را در نرم افزار نقاشی ویندوز به 128×64 پیکسل تغییر دادیم و آن را به عنوان یک فایل bmp. ذخیره کردیم.

تصویر مرلین مونرو

هنگامی که یک بیت مپ دارید، باید آن را به آرایه ای تبدیل کنید که کنترلر SSD1306 OLED بتواند آن را درک کند.  یک ابزار آنلاین به نام image2cpp وجود دارد که می تواند تصویر شما را به یک آرایه تبدیل کند. برای شروع، روی این لینک کنید.

  • در بخش شماره 1، تصویری را برای نمایش در صفحه OLED انتخاب کنید.
  • در بخش شماره 2، میتوانید ابعاد تصویر و رنگ آن را تنظیم کنید.
  • در بخش شماره 3، میتوانید پیش نمایش تصویر خود را در حالت بیت مپ مشاهده کنید.
  • در بخش شماره 4، میتوانید تعیین کنید که کد خروجی را برای کجا نیاز دارید، بهتر است روی حالت Arduino قرار بدهید. سپس دکمه Generate code را فشار دهید.

حالا آرایه بیت مپ شما ایجاد میشود که میتوانید آن را در کد بالا جایگذاری کنید تا تصویر دلخواه خود را روی تصویر نمایش بدهید.

اگر سوالی دارید میتوانید در قسمت نظرات یا انجمن سایت مطرح کنید.

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *