آردوینو Arduino

معرفی نمایشگر OLED و راه اندازی ماژول OLED با آردوینو

استفاده از یک نمایشگر در پروژه‌های الکترونیکی، به ویژه ماژول‌های کوچک و پرکاربرد مانند OLED، رابط میان دنیای دیجیتال و کاربر را به شکلی ملموس و کارآمد فراهم می‌کند. این نمایشگرها این امکان را به شما می‌دهند تا داده‌ها و اطلاعات حیاتی سنسورها (مانند دما، رطوبت، فشار)، وضعیت سیستم، پیام‌های هشدار یا حتی گرافیک‌های ساده را مستقیماً و بدون نیاز به اتصال به کامپیوتر مشاهده کنید. این موضوع نه تنها در مرحله عیب‌یابی و توسعه پروژه سرعت شما را به طور چشمگیری افزایش می‌دهد، بلکه در محصول نهایی، حرفه‌ای‌تر بودن و قابلیت استفاده آسان‌تر را به ارمغان می‌آورد.

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

ssd1306 oled display arduino

مقایسه فناوری OLED و LCD

تفاوت اصلی در شیوه تولید تصویر است: در LCD از کریستال مایع استفاده می‌شود که در برابر یک نور پس‌زمینه (Backlight) قرار می‌گیرد، اما در OLED هر پیکسل به طور مستقل و بدون نیاز به نور پس‌زمینه، نور خود را ساطع می‌کند. این تفاوت اساسی، ویژگی‌های متمایزی را برای هر فناوری به ارمغان می‌آورد.

جدول زیر خلاصه‌ای از این تفاوت‌ها را نشان می‌دهد:

ویژگی OLED LCD
کنتراست بهترین (پیکسل‌های خاموش، سیاه مطلق) خوب (نور پس‌زمینه همیشه روشن است)
مصرف انرژی پایین‌تر (پیکسل‌های مشکی خاموش می‌شوند) بالاتر (نور پس‌زمینه همیشه روشن است)
زمان پاسخگویی بسیار سریع کندتر
زاویه دید بسیار عالی خوب (در مدل‌های با فناوری IPS بهتر است)
روشنایی کلی خوب بهترین (برای محیط‌های پرنور مناسب‌تر)
ساختار نازک‌تر و سبک‌تر ضخیم‌تر (به دلیل وجود لایه نور پس‌زمینه)
برگشت تصویر (Burn-in) آسیب‌پذیر در صورت نمایش تصاویر ثابت برای مدت طولانی مقاوم‌تر
قیمت معمولاً بالاتر مقرون به‌به‌صرفه‌تر

مقایسه و راهنمای انتخاب ماژول‌های OLED پرکاربرد

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

ماژول نمایشگر OLED تک رنگ 0.91 اینچ دارای ارتباط I2C و چیپ درایور SSD1306

ماژول نمایشگر OLED تک رنگ 0.91 اینچ دارای ارتباط I2C و چیپ درایور SSD1306


🛒 خرید از ECA

ماژول OLED 0.96 inch I2C دو رنگ زرد-آبی رزولیشن 128x64

ماژول OLED 0.96 inch I2C دو رنگ زرد-آبی رزولیشن 128×64


🛒 خرید از ECA

ماژول OLED 1.3 inch 128x64 سفید دارای رابط I2C

ماژول OLED 1.3 inch 128×64 سفید دارای رابط I2C


🛒 خرید از ECA

 

مقایسه فنی

ویژگی ماژول OLED 0.96 دو رنگ زرد-آبی (I2C/SPI) ماژول OLED 0.96 دو رنگ زرد-آبی (فقط SPI) ماژول OLED 1.3 اینچ سفید (I2C) ماژول OLED 0.91 اینچ تک رنگ (I2C)
اندازه و رزولوشن ۰.۹۶ اینچ – ۱۲۸x64 پیکسل ۰.۹۶ اینچ – ۱۲۸x64 پیکسل ۱.۳ اینچ – ۱۲۸x64 پیکسل ۰.۹۱ اینچ – ۱۲۸x32 پیکسل
رنگ و کنتراست دو بخش رنگی (زرد و آبی)، کنتراست خوب دو بخش رنگی (زرد و آبی)، کنتراست خوب تک رنگ سفید، کنتراست عالی تک رنگ سفید یا آبی، کنتراست خوب
رابط ارتباطی انعطاف‌پذیر: هم I2C و هم SPI سرعت بالا: فقط SPI اتصال ساده: فقط I2C اتصال ساده: فقط I2C
مصرف پایه‌های آردوینو I2C: فقط ۲ پایه ۴ پایه یا بیشتر I2C: فقط ۲ پایه I2C: فقط ۲ پایه
مصرف انرژی بسیار پایین بسیار پایین پایین بسیار پایین (پیکسل‌های کمتر)
کاربردهای معمول نمایش اطلاعات دو دسته (مثلاً وضعیت و مقدار)، گجت‌ها پروژه‌هایی با نیاز به بروزرسانی سریع صفحه خوانایی عالی از فاصله دور، پروژه‌هایی با فضای بیشتر پروژه‌های بسیار فشرده و کم‌مصرف

راهنمای انتخاب: کدام ماژول برای پروژه من مناسب‌تر است؟

  1. ماژول OLED 0.96 دو رنگ زرد-آبی (I2C/SPI):
    • انتخاب ایده‌آل برای: افرادی که می‌خواهند انعطاف‌پذیری داشته باشند. اگر تعداد پایه‌های میکروکنترلر شما محدود است، از رابط I2C استفاده کنید. اگر بعداً به سرعت بالاتری نیاز پیدا کردید، می‌توانید به راحتی به SPI سوئیچ کنید. همچنین برای پروژه‌هایی که می‌خواهید اطلاعات را بر اساس اهمیت تفکیک رنگ کنید (مثلاً هشدارها به رنگ زرد و داده‌های عادی به رنگ آبی) عالی است.
  2. ماژول OLED 0.96 دو رنگ زرد-آبی (فقط SPI):
    • انتخاب ایده‌آل برای: پروژه‌های پیشرفته‌تری که نیاز به بروزرسانی بسیار سریع صفحه دارند. مثلاً برای نمایش انیمیشن‌های نسبتاً سریع یا تغییرات مداوم و پی در پی داده‌ها. این گزینه به پایه‌های بیشتری از میکروکنترلر نیاز دارد.
  3. ماژول OLED 1.3 اینچ سفید (I2C):
    • انتخاب ایده‌آل برای: پروژه‌هایی که خوانایی و اندازه بزرگ‌تر اولویت اصلی است. این ماژول برای ایستگاه‌های هواشناسی رومیزی، نمایشگرهای اطلاعاتی کوچک یا هر پروژه‌ای که از فاصله کمی دورتر دیده می‌شود، بهترین گزینه است. اتصال I2C نیز راه‌اندازی آن را بسیار ساده می‌کند.
  4. ماژول OLED 0.91 اینچ تک رنگ (I2C):
    • انتخاب ایده‌آل برای: پروژه‌های بسیار کم‌حجم و فوق‌العاده کم‌مصرف. اگر فضای فیزیکی پروژه شما بسیار محدود است (مانند گجت‌های پوشیدنی کوچک) یا به حداقل کردن مصرف انرژی اهمیت می‌دهید، این ماژول به دلیل ابعاد فشرده و تعداد پیکسل‌های کمتر، گزینه بهینه‌ای است.

جمع‌بندی نهایی:

  • برای انعطاف‌پذیری و تفکیک رنگ ساده: مدل ۰.۹۶ دو رنگ با قابلیت I2C/SPI را انتخاب کنید.
  • برای سرعت بالا: مدل ۰.۹۶ دو رنگ با رابط SPI را در نظر بگیرید.
  • برای بزرگ‌تر بودن و خوانایی بهتر: مدل ۱.۳ اینچی سفید بهترین تجربه کاربری را ارائه می‌دهد.
  • برای صرفه‌جویی حداکثری در فضا و انرژی: مدل ۰.۹۱ اینچی تک رنگ گزینه نهایی و ایده‌آلی است.

مقایسه چیپ‌های درایور SSD1306، SH1106 و SSD1315

این تراشه‌ها برای کنترل صفحه نمایش‌های OLED کوچک و گرافیکی استفاده می‌شوند.

SSD1306

  • حافظه رم: ۱۲۸x64 پیکسل.
  • حالت‌های آدرس‌دهی: از چندین حالت اسکن (افقی، عمودی و صفحه) پشتیبانی می‌کند.
  • قابلیت اسکرول سخت‌افزاری: دارای قابلیت‌های سخت‌افزاری برای اسکرول کردن خودکار صفحه است.
  • دسترسی به حافظه: امکان خواندن حافظه نمایش از طریق رابط I2C را ندارد.
  • منبع‌شناسی: کتابخانه‌ها و منابع آموزشی بسیار گسترده‌ای برای این درایور وجود دارد.

SH1106

  • حافظه رم: ۱۳۲x64 پیکسل. این تراشه صفحه ۱۲۸x64 پیکسل را در وسط این فضای ۱۳۲ پیکسلی قرار می‌دهد که معمولاً نیاز به جابه‌جایی (Shift) 2 پیکسلی در کد دارد.
  • حالت‌های آدرس‌دهی: فقط از حالت آدرس‌دهی “صفحه” (Page Mode) پشتیبانی می‌کند. این مهم‌ترین تفاوت در کدنویسی است.
  • قابلیت اسکرول سخت‌افزاری: ندارد.
  • دسترسی به حافظه: امکان خواندن محتوای حافظه نمایش از طریق رابط I2C را فراهم می‌کند که برای پیاده‌سازی ویژگی‌هایی مانند مکان‌نمای معکوس مفید است.

کتابخانه‌های معروف آردوینو برای راه اندازی ماژول های OLED

برای راه‌اندازی این ماژول‌ها در آردوینو، کتابخانه‌های متعددی توسعه داده شده است:

  1. کتابخانه Adafruit SSD1306: این کتابخانه، معروف‌ترین و پراستفاده‌ترین کتابخانه برای درایور SSD1306 است و همراه کتابخانه Adafruit GFX ارائه می‌شود که شامل توابع گرافیکی بسیار متنوعی برای ترسیم اشکال، نمایش متن و تصاویر می‌شود. اگرچه برای SSD1306 طراحی شده، اما با اعمال تغییراتی (مانند استفاده از کتابخانه‌های اصلاح‌شده) می‌توان از آن برای SH1106 نیز استفاده کرد.
  2. کتابخانه Adafruit SH1106: یک نسخه اصلاح‌شده از کتابخانه اصلی Adafruit است که به طور خاص برای پشتیبانی از درایور SH1106 адаپته شده است.
  3. کتابخانه U8g2 (Universal 8bit Graphics Library): یک کتابخانه بسیار قدرتمند و سازگار که از طیف وسیعی از نمایشگرها، از جمله SSD1306 و SH1106 پشتیبانی می‌کند. این کتابخانه برای پروژه‌هایی که ممکن است در آینده نوع نمایشگر تغییر کند، گزینه بسیار مناسبی است.
  4. کتابخانه OLED SSD1306 – SH1106 (اثر Dury): این کتابخانه به طور همزمان از هر دو درایور SSD1306 و SH1106 پشتیبانی می‌کند و قابلیت‌های مفیدی مانند عملکرد در حالت ترمینال (صفحه مجازی) و پشتیبانی از تابع printf را ارائه می‌دهد.

نصب کتابخانه Adafruit SSD1306

install ssd1306 adafruit library

نحوه اتصال ماژول OLED به آردوینو

oled display arduino

برنامه نمونه با آردوینو

کد زیر یک برنامه ساده برای نمایش متن و یک شکل هندسی پایه بر روی یک ماژول OLED با درایور SSD1306 است. این کد بر اساس کتابخانه Adafruit نوشته شده است.

توضیح برنامه نمونه

  • شامل کردن کتابخانه‌ها: کتابخانه‌های لازم برای ارتباط I2C، توابع گرافیکی و درایور نمایشگر فراخوانی می‌شوند.
  • تعریف مشخصات: ابعاد نمایشگر، آدرس I2C و پین ریست تعریف می‌شود. آدرس رایج برای این ماژول‌ها 0x3C است.
  • مقداردهی اولیه (Setup):
    • ارتباط سریال برای عیب‌یابی راه‌اندازی می‌شود.
    • با دستور display.begin() ارتباط با نمایشگر برقرار می‌شود. اگر موفقیت‌آمیز نباشد، یک پیخطا چاپ شده و برنامه متوقف می‌شود.
    • نمایشگر با clearDisplay() پاک می‌شود.
  • ترسیم روی بافر:
    • تمام عملیات رسم و نوشتن ابتدا در یک حافظه موقت (بافر) انجام می‌شود و تا زمانی که تابع display() فراخوانی نشود، روی صفحه نمایش داده نمی‌شود.
    • با توابعی مانند setTextSize، setCursor و println متن در موقعیت‌های مختلف نوشته می‌شود.
    • با تابع drawCircle یک دایره رسم می‌شود.
  • نمایش نهایی: با فراخوانی display.display()، تمامی محتویات بافر بر روی صفحه نمایش فیزیکی ارسال می‌شود.

اگر نمایشگر شما با این کد کار نکرد، موارد زیر را بررسی کنید:

  • سیم‌کشی: اطمینان حاصل کنید سیم‌های SDA و SCL به درستی به میکروکنترلر متصل شده‌اند.
  • آدرس I2C: آدرس ماژول خود را بررسی کنید (ممکن است 0x3D باشد).
  • درایور: اگر نمایشگر شما از درایور SH1106 استفاده می‌کند، باید از کتابخانه مخصوص SH1106 یا کتابخانه U8g2 استفاده کنید.

نوشته های مشابه

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

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

دکمه بازگشت به بالا