مقدمه
در این مقاله راجع به داستان نمایشگرهای OLED و تفاوت های آنها و راه اندازی آنها برای نمایش تصویر و نوشته، صحب خواهیم کرد.
آنچه در این آموزش یاد میگیرید
- OLEDها چگونه کار می کنند
- نحوه ارتباط OLED و آردوینو
- نمایش متن و تصویر روی OLED
- نمایش انیمیشن روی OLED
نمایشگرهای OLED چگونه کار میکنند؟
ماژول های کوچک OLED در پروژه های الکترونیکی بسیار پرکاربرد هستند. سیم بندی ساده و وضوح بالا آنها را برای نمایش داده ها، اعداد و تصاویر ساده، مناسب کرده است. شما می توانید این پنل ها را در سایزها و رنگ های مختلف با پروتکل های I2C، SPI و موازی،بسته به نوع پروژه تان، بیابید. این ماژول ها دارای نوع تک رنگ، دو رنگ و تمام رنگ 16 بیتی می باشند. ما مدل 64*128 0.96 اینچی با درایور SSD1306 و آردوینو Uno را انتخاب کردیم.
لوازمی که به آن احتیاج دارید
سخت افزارهای مورد نیاز
نرم افزارهای مورد نیاز
شبیه سازی نمایشگر OLED با Proteus
اگر ماژول OLED را ندارید و قصد خریدش را نیز ندارید.می توانید آنرا در نرم افزار Proteus شبیه سازی کنید.
فایل شبیه سازی:
Proteus SPI OLED and Arduino Project
سیم بندی
OLEDهای متفاوتی با پایه های با نام متفاوتی وجو دارد. از توضیح مدار بالا برای پیدا کردن نام پایه های ماژول خود استفاده کنید.
بیشتر ماژول های OLED با 3.3 ولت نیز کار می کنند، می توانید پایه های آردوینو را نیز تغییر دهید ولی این تغییر را در کد نیز باید اعمال کنید.
سرهم بندی
نمایش متن روی نمایشگرهای OLED
کتابخانه های زیادی برای OLED نوشته شده است. در این آموزش ما از کتابخانه WaveShare OLED SSD1306 استفاده کردیم.
اگر برای بار اول است که روی آردوینو برنامه می ریزید، نگران نباشید و مراحل زیر را دنبال کنید:
- به آدرس www.arduino.cc/en/Main/Software رفته و نرم افزار IDE را متناسب با سیستم عامل خود دانلود و نصب کنید.
- نرم افزار Arduino IDE را اجرا کنید. تمام کد های پیش فرض را پاک کرده و کد زیر را به جای آن کپی کنید.
- برای نصب کتابخانه ها، از پنجره ی Sketch و بخش Include Library، گزینه ی Add .ZIP Library را انتخاب کنید و فایل های کتابخانه ای که دانلود کردید را انتخاب کنید.
- نوع آردوینو خود را از پنجره ی Tools و قسمت Board انتخاب کنید.
- پورتی که (COM) آردوینو به آن متصل است را در پنجره ی Tools انتخاب کنید.
- دکمه ی Upload (شکلی که شبیه فلش است) را بزنید تا کد شما روی آردوینو آپلود شود.
- شما با موفقیت کد خود را روی آردوینو ریختید.
کتابخانه های مورد نیاز:
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 را به بافر اضافه کنید.
نکته
#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() {
}
برای نمایش تصویر، می بایست عکس را به کد 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 };
حالا خط زیر را در loop قرار دهید.
SSD1306_bitmap(0, 0, SAMPLE_NAME, 128, 64, oled_buf); // (x location, y location, Name of image, width, height)
کد را روی آردوینو آپلود کنید.
نمایش انیمیشن روی OLED
نمایش انیمیشن روی OLED کمی دشوار است. یک انیمیشن شامل تعدای عکس است که پشت سرهم بی وقفه نمایش داده می شوند. ما نیز دقیقا همین کار را می کنیم، نمایش هر فریم درست بعد از اتمام فریم قبل.
مثالی از نمایش متن و گیج:
فایل های مورد نیاز:
OLED Animation Example
نکته
یک گام جلوتر
- سعی کنید اطلاعات سنسورها(مانند DHT11) را روی OLED نمایش دهید.
- یک ساعت با ماژول RTC و OLED بسازید.
Comments (8)
سلام. ممکنه راهنمایی کنید که من کجا میتونم راه اندازی oled کامل آموزش ببینم بصورت حضوری
سلام.
متاسفانه در این مورد اطلاعی ندارم. قسمت آموزش های سایت آپدیت شده و میتونید آموزش انواع oled های مختلف رو در این قسمت ببینید.
همچنین به دلیل شرایط موجود برگزاری کلاس رو بعید میدونم.
سلام من می خوام فونت متن ام عددی بین 1 و 2 باشه. مثلا 1.5 . چطوری می تونم این کار رو کنم؟
سلام
متاسفانه امکانش به سادگی وجود نداره. لازمه که خودتون کل فونت رو با اندازه مورد نظرتون بسازید و تو کتابخونه مورد استفاده اضافه کنید.
میشه یکم بیشتر راهنمایی کنید. یعنی دقیقا بگید چی کار کنم یا لینک یه سایت خارجی رو قرار بدید.
ازونجایی که به شخصه نیازم نشده این مساله، اطلاع کاملی ندارم، اما این سه تا لینک رو میتونم بهتون پیشنهاد بدم که بررسی کنید. میتونن کمک کننده باشن:
https://georgik.rocks/how-to-edit-font-for-oled-display-sd1306/
https://vsblogs.wordpress.com/2018/10/12/oled-font-designer/
https://oleddisplay.squix.ch/#/home
سلام، لطفا اموزش تنظیم ساعت با ds1307 , oled رو هم بذارید. ممنون
سلام.
آموزش استفاده از ماژول ساعت DS1307 به تازگی در سایت گذاشته شده و میتونید با ترکیب اون آموزش با آموزش این صفحه به سادگی تنظیم رو انجام بدید. آموزش استفاده از ماژول ساعت DS1307 رو میتونید در لینک زیر مشاهده کنید:
“https://thecaferobot.com/learn/interfacing-ds1307-i2c-rtc-real-time-clock-module-with-arduino/”