...

راه‌اندازی نمایشگرهای گرافیکی آردوینو TFT و OLED

راه‌اندازی نمایشگرهای گرافیکی آردوینو TFT و OLED
0 بازدید
۱۴۰۵-۰۸-۱۰
8 دقیقه
  • نویسنده: آرتین
  • درباره نویسنده: ---

در قسمت قبل از آموزش آردوینو با قابلیت‌های پیشرفته LCDهای متنی آشنا شدیم و یاد گرفتیم چگونه کاراکترهای سفارشی بسازیم، اعداد بزرگ نمایش دهیم و حتی نمودار میله‌ای روی LCD ایجاد کنیم. در این قسمت آموزش برنامه نویسی آردوینو از نمایشگرهای متنی عبور می‌کنیم و وارد دنیای نمایشگرهای گرافیکی با آردوینو می‌شویم.

ابتدا بررسی می‌کنیم هنگام انتخاب یک نمایشگر گرافیکی باید به چه مشخصاتی توجه کنیم. سپس یک نمایشگر TFT رنگی مبتنی بر ST7735 را راه‌اندازی می‌کنیم و در ادامه با OLED تک‌رنگ SSD1306 و کتابخانه‌های Adafruit_GFX، Adafruit_SSD1306 و u8g2 آشنا می‌شویم.

انتخاب نمایشگر گرافیکی برای آردوینو

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

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

راه‌اندازی نمایشگرهای گرافیکی آردوینو TFT و OLED
مقایسه TFT رنگی و OLED تک‌رنگ و معیارهای انتخاب نمایشگر

نمایشگر رنگی یا تک‌رنگ؟

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

  • LCD
  • OLED

تفاوت LCD و OLED

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

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

نمایشگر تک‌رنگ گزینه مناسبی است اگر:

  • به یک نمایشگر کوچک نیاز دارید؛
  • مصرف جریان پایین برای شما مهم است؛
  • حافظه میکروکنترلر محدود است؛
  • نیازی به رابط گرافیکی تمام‌رنگی ندارید.

حافظه موردنیاز برای کار با یک نمایشگر تک‌رنگ معمولاً کمتر از یک نمایشگر رنگی است و این موضوع در بردهای دارای حافظه محدود اهمیت زیادی دارد.

کتابخانه u8g2 برای نمایشگرهای تک‌رنگ

یکی از کتابخانه‌های قدرتمند برای نمایشگرهای تک‌رنگ، u8g2 است. این کتابخانه از تعداد زیادی کنترلر نمایشگر پشتیبانی می‌کند.

از جمله کنترلرهای پشتیبانی‌شده می‌توان به موارد زیر اشاره کرد:

این کتابخانه از روش‌های ارتباطی I2C، SPI و Parallel نیز پشتیبانی می‌کند.

کتابخانه Adafruit GFX چیست؟

برای نمایشگرهای رنگی، کتابخانه Adafruit GFX یک مجموعه مشترک از توابع گرافیکی در اختیار برنامه‌نویس قرار می‌دهد. کتابخانه‌های مخصوص کنترلرهایی مانند ST7735، HX8340B، HX8357D، ILI9340/ILI9341 و PCD8544 می‌توانند از قابلیت‌های این کتابخانه استفاده کنند.

نکته: هنگام خرید نمایشگرهای گرافیکی ارزان‌قیمت حتماً وجود دیتاشیت، کتابخانه و نمونه‌کد معتبر را بررسی کنید. نمایشگری که مستندات یا کتابخانه مناسب ندارد ممکن است زمان زیادی برای راه‌اندازی از شما بگیرد.

راه‌اندازی TFT رنگی ST7735 با آردوینو

در بخش 11.10 کتاب به سراغ یک نمایشگر گرافیکی تمام‌رنگی مبتنی بر ST7735 می‌رویم. کتابخانه Adafruit ST7735 and ST7789 از نمایشگرهای مبتنی بر کنترلرهای ST7735 و ST7789 پشتیبانی می‌کند و برای رسم عناصر گرافیکی از Adafruit_GFX استفاده می‌شود. مثال اصلی کتاب برای برد Adafruit HalloWing M0 نوشته شده است. برنامه ابتدا سه متن با اندازه‌های مختلف نمایش می‌دهد و سپس یک توپ زرد را روی صفحه حرکت می‌دهد.

کد کنترل نمایشگر رنگی ST7735

مقداردهی اولیه ST7735

دستور زیر نمایشگر را مقداردهی اولیه می‌کند:

مدل‌های مختلف ST7735 ممکن است به پارامتر متفاوتی برای initR() نیاز داشته باشند، بنابراین باید مدل دقیق نمایشگر و مستندات کتابخانه بررسی شود.

تنظیم جهت و پس‌زمینه نمایشگر

جهت نمایش با دستور زیر تعیین می‌شود:

و کل صفحه با رنگ مشکی پر می‌شود:

نمایش متن رنگی با اندازه‌های مختلف

در این مثال سه متن با سه اندازه و رنگ مختلف نمایش داده می‌شوند:

حرکت توپ روی صفحه TFT

متغیر ballDir جهت حرکت توپ را تعیین می‌کند.

زمانی که توپ به لبه صفحه نزدیک می‌شود، جهت حرکت معکوس می‌شود:

سپس توپ با تابع fillCircle() رسم و با رنگ مشکی پاک می‌شود تا حرکت آن روی صفحه دیده شود.

راه‌اندازی نمایشگرهای گرافیکی آردوینو TFT و OLED
 اتصال ST7735 به Arduino و نمایش متن رنگی و توپ متحرک

اتصال ST7735 به Arduino Uno

اگر به‌جای HalloWing از Arduino Uno و یک ماژول ST7735 مستقل استفاده شود، کتاب پایه‌های زیر را برای مثال Arduino Uno معرفی می‌کند:

در این اتصال:

  • TFT_CS برای Chip Select است.
  • TFT_DC خط Data/Command است.
  • TFT_RST برای Reset نمایشگر استفاده می‌شود.

استفاده از Software SPI

در صورت نیاز می‌توان پایه‌های MOSI و Clock را نیز به‌صورت نرم‌افزاری مشخص کرد:

اما Software SPI سرعت کمتری نسبت به Hardware SPI دارد. همچنین کتاب اشاره می‌کند که اگر ماژول LCD دارای SD Card باشد، SD با این شیوه Software SPI کار نخواهد کرد.

راه‌اندازی OLED تک‌رنگ SSD1306 با آردوینو

در بخش 11.11 کتاب به سراغ OLED تک‌رنگ SSD1306 می‌رویم. مثال کتاب از یک نمایشگر 128×32 و ارتباط SPI استفاده می‌کند.

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

کد کامل OLED SSD1306

راه‌اندازی نمایشگرهای گرافیکی آردوینو TFT و OLED
 اتصال OLED SSD1306 به Arduino و نمایش متن و توپ متحرک

تعریف ابعاد و پایه‌های SSD1306

ابتدا ابعاد نمایشگر مشخص می‌شوند:

سپس پایه‌های موردنیاز رابط SPI تعیین می‌شوند:

بررسی موفقیت راه‌اندازی OLED

در setup() نمایشگر راه‌اندازی می‌شود:

اگر راه‌اندازی موفق نباشد، پیام خطا در Serial Monitor نمایش داده می‌شود و برنامه متوقف می‌شود.

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

تابع showAndScroll() متن و اندازه آن را دریافت می‌کند.

ابتدا رنگ متن سفید انتخاب می‌شود:

سپس مکان‌نما به گوشه صفحه منتقل و Buffer پاک می‌شود:

اندازه متن مشخص می‌شود:

و متن در Buffer نوشته می‌شود:

چرا display.display() لازم است؟

در SSD1306 دستورهای رسم ابتدا در حافظه Buffer ذخیره می‌شوند. برای انتقال نتیجه به خود نمایشگر باید دستور زیر اجرا شود:

این یکی از تفاوت‌های مهم این مثال با TFT بخش قبلی است؛ در TFT بسیاری از عملیات رسم مستقیماً روی نمایشگر دیده می‌شوند، اما در SSD1306 باید Buffer به صفحه ارسال شود.

اسکرول متن روی OLED

در مثال کتاب متن برای سه ثانیه به سمت راست Scroll می‌شود:

حرکت توپ روی OLED

در حلقه اصلی، توپ بین دو سمت صفحه حرکت می‌کند. برای رسم توپ از دستور زیر استفاده می‌شود:

استفاده از SSD1306_INVERSE باعث معکوس‌شدن وضعیت پیکسل‌ها می‌شود. به همین دلیل با اجرای مجدد همان دستور در همان موقعیت، توپ پاک می‌شود.

استفاده از Software SPI برای SSD1306

در صورت نیاز می‌توان ارتباط SPI را به‌صورت نرم‌افزاری انجام داد:

اتصال SSD1306 از طریق I2C

برخی مدل‌های SSD1306 از I2C استفاده می‌کنند. در این حالت تعداد سیم‌های موردنیاز کمتر می‌شود. کتاب برای این حالت نمونه زیر را ارائه می‌کند:

در این روش ارتباط اصلی از طریق SCL و SDA انجام می‌شود.

راه‌اندازی نمایشگرهای گرافیکی آردوینو TFT و OLED
مقایسه اتصال SSD1306 به Arduino از طریق SPI و I2C

کنترل OLED با کتابخانه u8g2

کتاب علاوه بر کتابخانه Adafruit SSD1306، یک مثال با u8g2 نیز ارائه می‌کند. در u8g2 نحوه به‌روزرسانی صفحه متفاوت است و از Page Buffer استفاده می‌شود.

ابتدا دستور زیر اجرا می‌شود:

سپس دستورات رسم داخل یک حلقه do...while قرار می‌گیرند:

نمونه کد u8g2 برای SSD1306

تفاوت Adafruit SSD1306 و u8g2

هر دو کتابخانه امکان کنترل SSD1306 را فراهم می‌کنند، اما روش به‌روزرسانی تصویر متفاوت است.

در Adafruit SSD1306 ابتدا تصویر در Buffer رسم می‌شود و سپس:

برای انتقال تصویر به نمایشگر اجرا می‌شود.

در u8g2 از چرخه:

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

جمع‌بندی

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

سپس نمایشگر رنگی ST7735 را با کتابخانه‌های Adafruit_GFX و Adafruit_ST7735 راه‌اندازی کردیم و متن‌های رنگی با اندازه‌های مختلف و یک توپ متحرک را نمایش دادیم. در ادامه OLED تک‌رنگ SSD1306 را بررسی کردیم و نحوه نمایش متن، Scroll، رسم اشکال و اتصال آن از طریق SPI و I2C را دیدیم. در پایان نیز با کتابخانه u8g2 و روش Page Buffer برای رسم محتوای گرافیکی آشنا شدیم.

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

اطلاعات
0
0
0
اشتراک و حمایت
profile نویسنده: آرتین متخصص الکترونیک

مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله