آموزش جامع راه اندازی نمایشگرهای OLED با آردوینو و نمایش متن، عکس و انیمیشن

0

آموزش جامع راه اندازی نمایشگرهای OLED با آردوینو و نمایش متن، عکس و انیمیشن

آنچه در این آموزش یاد می‌گیرید

  • OLEDها چگونه کار می کنند
  • نحوه ارتباط OLED و آردوینو
  • نمایش متن و تصویر روی OLED
  • نمایش انیمیشن روی OLED

نمایشگرهای OLED چگونه کار می‌کنند؟

نمایشگر OLED(organic light-emitting diode) یک نمایشگر با رزولوشن و کنتراست بالاست که برای کاربر خوانایی بالایی دارد. این نمایشگرها بکلایت ندارند و بکلایت را خودشان ایجاد می کنند که این موضوع آنها را واضح تر، نرم تر و تمیزتر از LCDها کرده است. ظهور اولین نمایشگرهای OLED به سال 1987 برمی گردد، امروزه ورژن های جدیدتری از OLED مانند Super AMOLED نیز عرضه شده است.

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

لوازمی که به آن احتیاج دارید

شبیه سازی نمایشگر OLED با Proteus

سیم بندی

OLEDهای متفاوتی با پایه های با نام متفاوتی وجو دارد. از توضیح مدار بالا برای پیدا کردن نام پایه های ماژول خود استفاده کنید.

بیشتر ماژول های OLED با 3.3 ولت نیز کار می کنند، می توانید پایه های آردوینو را نیز تغییر دهید ولی این تغییر را در کد نیز باید اعمال کنید.

سرهم بندی

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

نمایش متن روی نمایشگرهای OLED

کتابخانه های زیادی برای OLED نوشته شده است. در این آموزش ما از کتابخانه WaveShare OLED SSD1306 استفاده کردیم.

اگر برای بار اول است که روی آردوینو برنامه می ریزید، نگران نباشید و مراحل زیر را دنبال کنید:

  1. به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
  2. نرم افزار Arduino IDE را اجرا کنید. تمام کد های پیش فرض را پاک کرده و کد زیر را به جای آن کپی کنید.
  3. برای نصب کتابخانه ها، از پنجره ی Sketch و بخش Include Library، گزینه ی Add .ZIP Library را انتخاب کنید و فایل های کتابخانه ای که دانلود کردید را انتخاب کنید.
  4. نوع آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
  5. پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
  6. دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
  7. شما با موفقیت کد خود را روی آردوینو ریختید.

کتابخانه های مورد نیاز:

OLED SSD1306 Library

 

OLED SPI SSD1306 Example

برای نمایش نوشته و متن روی OLED ابتدا باید داده هایتان را روی بافر بنویسید و سپس آنرا نمایش دهید.

می توانید از این دستورات استفاده کنید:

پیکربندی ابتدایی: SSD1306_begin() 

پاک کردن صفحه نمایش:SSD1306_clear(…)

اضافه کردن نوشته به بافر: SSD1306_string(x position, y position,… )

اضافه کردن یک کاراکتر به بافر:
SSD1306_char3216(x position, y position,…)

نمایش بافر: SSD1306_display(name of buffer)

کد نمایش نوشته روی OLED:

#include "ssd1306.h"

#define VCCSTATE SSD1306_SWITCHCAPVCC
#define WIDTH     128
#define HEIGHT     64
#define PAGES       8

#define OLED_RST    9 
#define OLED_DC     8
#define OLED_CS    10
#define SPI_MOSI   11    /* connect to the DIN pin of OLED */
#define SPI_SCK    13     /* connect to the CLK pin of OLED */

uint8_t oled_buf[WIDTH * HEIGHT / 8];

void setup() {
  Serial.begin(9600);
  Serial.print("OLED Example\n");


  SSD1306_begin();
  SSD1306_clear(oled_buf);

  /* display images of bitmap matrix */
  SSD1306_bitmap(0, 2, Signal816, 16, 8, oled_buf); 
  SSD1306_bitmap(24, 2,Bluetooth88, 8, 8, oled_buf); 
  SSD1306_bitmap(40, 2, Msg816, 16, 8, oled_buf); 
  SSD1306_bitmap(64, 2, GPRS88, 8, 8, oled_buf); 
  SSD1306_bitmap(90, 2, Alarm88, 8, 8, oled_buf); 
  SSD1306_bitmap(112, 2, Bat816, 16, 8, oled_buf); 

  SSD1306_string(0, 52, "MUSIC", 12, 0, oled_buf); 
  SSD1306_string(52, 52, "MENU", 12, 0, oled_buf); 
  SSD1306_string(98, 52, "PHONE", 12, 0, oled_buf);

  SSD1306_char3216(0, 16, '1', oled_buf);
  SSD1306_char3216(16, 16, '2', oled_buf);
  SSD1306_char3216(32, 16, ':', oled_buf);
  SSD1306_char3216(48, 16, '3', oled_buf);
  SSD1306_char3216(64, 16, '4', oled_buf);
  SSD1306_char3216(80, 16, ':', oled_buf);
  SSD1306_char3216(96, 16, '5', oled_buf);
  SSD1306_char3216(112, 16, '6', oled_buf);

  SSD1306_display(oled_buf); 
}

void loop() {

}

نمایش تصاویر روی OLED

با استفاده از SSD1306_bitmap(…) می توانید تصویر bitmap را به بافر اضافه کنید.

نکته

کتابخانه OLED تعدادی آیکون بصورت پبشفرض(مانند Alarm88, Bluetooth88 و …) دارد که می توانید از آنها استفاده کنید.

#include <ssd1306.h>

#define VCCSTATE SSD1306_SWITCHCAPVCC
#define WIDTH     128
#define HEIGHT     64
#define PAGES       8

#define OLED_RST    9 
#define OLED_DC     8
#define OLED_CS    10
#define SPI_MOSI   11    /* connect to the DIN pin of OLED */
#define SPI_SCK    13     /* connect to the CLK pin of OLED */

uint8_t oled_buf[WIDTH * HEIGHT / 8];

void setup() {
  Serial.begin(9600);
  Serial.print("OLED Example\n");


  SSD1306_begin();
  SSD1306_clear(oled_buf);

  /* display images of bitmap matrix */
  SSD1306_bitmap(0, 2, Signal816, 16, 8, oled_buf); 
  SSD1306_bitmap(24, 2,Bluetooth88, 8, 8, oled_buf); 
  SSD1306_bitmap(40, 2, Msg816, 16, 8, oled_buf); 
  SSD1306_bitmap(64, 2, GPRS88, 8, 8, oled_buf); 
  SSD1306_bitmap(90, 2, Alarm88, 8, 8, oled_buf); 
  SSD1306_bitmap(112, 2, Bat816, 16, 8, oled_buf); 

  SSD1306_string(0, 52, "MUSIC", 12, 0, oled_buf); 
  SSD1306_string(52, 52, "MENU", 12, 0, oled_buf); 
  SSD1306_string(98, 52, "PHONE", 12, 0, oled_buf);

  SSD1306_char3216(0, 16, '1', oled_buf);
  SSD1306_char3216(16, 16, '2', oled_buf);
  SSD1306_char3216(32, 16, ':', oled_buf);
  SSD1306_char3216(48, 16, '3', oled_buf);
  SSD1306_char3216(64, 16, '4', oled_buf);
  SSD1306_char3216(80, 16, ':', oled_buf);
  SSD1306_char3216(96, 16, '5', oled_buf);
  SSD1306_char3216(112, 16, '6', oled_buf);
 SSD1306_display(oled_buf); 
}
void loop() {
}

Arduino

برای نمایش تصویر، می بایست عکس را به کد Hex تبدیل کنید. برنامه های مختلفی برای این کار وجود دارد. می توانید یکی از آنها را از لینک زیر دانلود کنید. برنامه را باز کرده و عکس مدنظرتان را باز کنید. اندازه تصویر باید کوچکتر از 64*128 باشد. مطمئن شوید تنظیمات مانند شکل زیر است

نرم افزار تبدیل تصویر به کد Hex:

Image to Hex Code Converter

روی منوی Convert from File کلیک کنید و فایل c. را باز کرده و کد Hex را کپی کنید. در کد اصلی، کد Hex کپی شده را با فرمت زیر قرار دهید.

const uint8_t SAMPLE_NAME [] PROGMEM = {0x00, 0x00, 0x00, 0x00  ....  0xFF };

Arduino

حالا خط زیر را در loop قرار دهید.

SSD1306_bitmap(0, 0, SAMPLE_NAME, 128, 64, oled_buf); // (x location, y location, Name of image, width, height)

Arduino

کد را روی آردوینو آپلود کنید.

نمایش انیمیشن روی OLED

نمایش انیمیشن روی OLED کمی دشوار است. یک انیمیشن شامل تعدای عکس است که پشت سرهم بی وقفه نمایش داده می شوند. ما نیز دقیقا همین کار را می کنیم، نمایش هر فریم درست بعد از اتمام فریم قبل.

نکته

برای حفظ حافظه، می توانید انیمیشن خود را به بخش های متحرک و ثابت تقسیم کنید و فقط بخش متحرک را فریم به فریم تغییر دهید. در این مثال فریم های انیمیشنی تنها شامل اشاره گر و عدد است و باقی قسمت ها در حقیقت یه عکس  ثابت می باشد.

یک گام جلوتر

  • سعی کنید اطلاعات سنسورها(مانند DHT11) را روی OLED نمایش دهید.
  • یک ساعت با ماژول RTC و OLED بسازید.

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

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