پروژه های آردوینو

آموزش راه‌اندازی نمایشگر OLED آردوینو بخش اول

راه‌اندازی نمایشگر OLED آردوینو
نوشته شده توسط علیرضا قربانی

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

در این پست قصد آموزش راه اندایز نمایشگر OLED 128* 64  را داریم . این ماژول‌ها دارای چیپ‌های راه‌انداز متفاوتی از قبیل SSD1306 ،SH1106  و… می@باشند  که دراین آموزش از یک OLED با چیپ داخلی SH1106 به همراه پروتکل ارتباطی I2C استفاده شده است.

برای تشخیص نوع درایور این ماژول یک روش وجود دارد. در نمایشگر OLED هایی که از چیپ SH1106 استفاده کرده‌اند اولین پین از سمت چپ ، پین VCC می‌باشد و در نمایش‌گرهایی که از چیپ SSD1306 استفاده می‌کنند پین اول از سمت چپ ، پین GND می‌باشد. در  تصاویر زیر این موضوع نشان داده شده است.

نمایشگر OLED با چیپ SH1106

نمایشگر OLED با چیپ SH1106

نمایشگر OLED چیپ SSD1306

نمایشگر OLED با چیپ SSD1306

 

 

سخت افزار استفاده  شده در این آموزش :

یک عدد Arduino MEGA2560

یک عدد OLED 128*64 با چیپ داخلی SH1106 و پروتکل ارتباطی I2C

 

 

 

برای راه‌اندازی OLED  ابتدا کتابخانه U8glib را از لینک زیر دانلود نمایید  و آن را به نرم افزار آردوینو اضافه کنید.

دانلود کتابخانهU8glib

 

 

OLED 128*64 بدین معناست که دارای ۱۲۸ پیکسل از چپ به راست  و ۶۴ پیکسل از بالا به پایین می‌باشد. به عبارت دیگر این نمایشگر از ۸۱۹۲  پیکسل تشکیل شده است. به ازای هر پیکسل ، یک عدد LED بسیار کوچک بر روی این نمایشگر قرار دارد.

 

شمارش پیکسل‌ها

در عرض این نمایشگر ۱۲۸ پیکسل قرار  دارد که شمارش آن از ۰  در سمت چپ شروع می‌شود و به راست تا پیکسل شماره ۱۲۷ ادامه می‌یابد. و همچنین در طول این نمایشگر ۶۴ پیکسل قرار دارد که از شماره صفر شروع می‌شود و به سمت پایین تا شماره ۶۳ ادامه می‌یابد.

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

آموزش نمایشگر OLED آردوینو

 

 

کد‌های زیر را در نرم افزار آردیونو کپی نمایید و سپس در آردوینو آپلود کنید.

 

 

همانطور که مشاهده می‌کنید متن Digisprak.ir در نمایشگر نشان داده می‌شود.

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

 

 

شرح برنامه

پس از فراخوانی کتابخانه U8glib توسط دستور زیر به برنامه اعلام می‌کنیم که از یک عدد OLED 128*64 با استفاده از رابط I2C استفاده می‌کنیم .

 

 

سپس فونت دلخواهمان را انتخاب می‌کنیم .( این کتابخانه از فونت‌های بسیار زیادی پشتیبانی می‌کند که در آموزش‌های بعدی لیست اسامی آن‌ها قرار داده می‌شود. در کتابخانه‌هایی که برای LCDهای گرافیکی و OLED ها استفاده می‌شود اصطلاحی وجود دارد به نام “حلقه رسم”. “حلقه رسم توسط دستور زیر شروع می‌شود

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

” حلقه رسم ” برای اجرای دستورات گرافیکی در OLED نیاز می‌باشد و تمام دستورات گرافیکی در میان این حلقه قرار می‌گیرد. و ما نیز تابع draw را نیز در میان این حلقه قرار داده‌ایم. ( در قسمت‌های بعدی راجب به این حلقه توضیحات جامعی را ارائه می‌دهیم )

 

اسکرول کردن متن

در کد‌‎های قرار گرفته در ابتدای آموزش دستور

را با دستور

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

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

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

 

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

کد‌های زیر را به منظور اسکرول کردن متن در آردوینو آپلود کنید :

 

 

اگر مراحل را به درستی انجام داده باشید ، فرایندی مطابق فیلم زیر مشاهده می‌کنید .

 

 

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

علیرضا قربانی

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۵۶ دیدگاه

  • آقا واقعا باحوصله آموزش دادید. دمتون گرم
    بعد از دیدن فیلم، فکر نمیکردم در این حد کیفیت داشته باشه این ماژول، خیلى عالى

  • سلام

    کار با OLED بسیار سخته، من خودم چند سالی هست در زمینه ماژول های نمایشگر کار میکنم ولی جرات اینکه روی OLED ها کار کنم را نداشتم، چون واقعا حوصله میخواد و زمان بره،
    خیلی ممنونم از سایتتون و همچنین آقای قربانی، امیدوارم آموزش های جذابت ادامه دار باشه

    با تشکر

  • با سلام وعرض خسته نباشید.
    معذرت میخواهم فکر کنم کدهای آردوینو وکدهای HTML داخل برنامه با هم ترکیب شدند وهنگام اپلود نتیجه درست نمایش نمیدهند.
    در هر صورت ازمطالب بسیار عالی سایت تشکر میکنم.

      • سلام… با تشکر از شما بابت سایت بسیار خوب و برنامه های آموزنده ای که تهیه میبینید… …. مشکلی که در این باب دارم از oled ssd1306 استفاده میکنم و زمانیکه این برنامه یا مثال خود آردوینو رو verify میکنم با این ارور مواجه میشم….:
        exit status 1
        Error compiling for board Arduino/Genuino Mega or Mega 2560.

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

  • با سلام و خسته نباشید.
    آموزشتون واقعا عالی بود.
    میخواستم ازتون بپرسم این نمایشگر و یا نمایشگر بزرگتر از این رو چجوری میتونم اینترنتی بخرم؟؟؟؟
    ممنون میشم اگه جواب بدین

  • سلام شما تو نظرها گفتین که میشه تو این پروژه از مدل ssd1306 هم استفاده کرد و فقط باید یک آبجکت بسازیم .
    من خیلی مبتدی ام . میشه درباره ساخت همین آبجکت یا کارایی که باید انجام بدیم تا با مدل ssd1306 هم راه بیوفته یه توضیحی بدین ! ممنون میشم .

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

    • با سلام
      ضمن تشکر از توجه شما، در حال حاضر فقط تبادل از طریق ثبت نظر در سایت امکان پذیر است.

  • من این ماژول رو با پروتکال I2C و چیپ SSD1306 که ۶ تا پایه داره خریداری کردم
    که پایه های به ترتیب GND ,VCC ,SCL ,SDA ,RES ,DC ترتیب پایه هاش برای راه اندازی به برد اروینو به چه صورت باید باشه ؟

    • با سلام
      ضمن تشکر از توجه شما، برای اتصال این برد کافیست چهار پایه GND , VCC , SCL , SDA را متصل کنید. دو پایه دیگر را رها کنید. از آنجایی که پروتکل ارتباطی این برد I2C می‌باشد. چنانچه شیوه اتصال این پروتکل به آردوینو را نمی‌دانید، از آموزش پروتکل I2C با آردوینو استفاده کنید.

    • با سلام
      با توجه به اسم پایه‌ها میتوانید پروتکل را تشخیص دهید به عنون مثال در پروتکل I2C علاوه بر پایه‌های تغذیه دو پایه دیگر به نام‌های SCL و SDA موجود است. در پروتکل SPI نام پایه‌ها به صورت SCLK , MOSI , MISO , SS می‌باشد.

      • سلام خیلی ممنون . ببنید من یه نوشته چند کلمه ای دارم میخوام کلمه اول ظاهر شه رو صفحه ی نمایش بعد نوشتهی بعدی خط بعد نیاد بلکه صفحه ی نمایش پاک شه و کلمه بعدی جای کلمه ی قبلی قرار بگیره . البته این تیکه کدم خودم نوشتم ولی جواب نداد
        void clear(){
        int x,y;
        for(y=0;y<64;y++){
        for(x=0;x<128;x++){
        u8g.drawStr(x,y," ");
        }}}

    • با سلام
      ضمن تشکر از توجه شما، باید از کتابخانه مربوطه استفاده کنید. البته اگر همین کتابخانه آن تراشه را پشتیبانی نکند.

  • با تشکر از جناب مهندس قربانی
    خیییییییییییییییییییلی عالی
    از مطالعه مطالب مورد علاقه خودم که توسط جوانهای با استعداد و درس خون ارایه میشه بی نهایت لذت میبرم.

  • به همکاری و راهنمایی برنامه نویس حرفه ای آردوینو جهت انجام پروژه احتیاج دارم (همراه دستمزد توافقی)
    در صورت آمادگی با ایمیل اینجانب تماس بگیرید. متشکرم

  • سلام
    آیا راهی داره که این ماژول را با همین کتابخانه به nodemcu esp8266 وصل کرد؟!
    چون به صورت
    یش فرض روی ماژول esp8266 پورت های sda و scl را نداریم!

  • من یک نمونه از این OLED که SSD1306 است و رابط I2C دارد خریداری کرده ام . در صورت امکان یک کد که روی est8266 اجرا شود هم در این آموزش قرار دهید.باتشکر

  • سلام… با تشکر از شما بابت سایت بسیار خوب و برنامه های آموزنده ای که تهیه میبینید… به خصوص تشکر ویژه از شما جناب مهندس طباطبایی و سرکار خانوم بلورچیان بابت رانمایی های قبلی…. مشکلی که در این باب دارم از oled ssd1306 استفاده میکنم و زمانیکه این برنامه یا مثال خود آردوینو رو verify میکنم با این ارور مواجه میشم….:
    exit status 1
    Error compiling for board Arduino/Genuino Mega or Mega 2560.

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

  • سلام من با این کتابخونه oled رو راه اندازی کردم ولی فقط نصف oled کار میکنه و با کتابخونه ی adfruit هم که راه اندازی میکنم یک خط در میون میندازه، چیکار کنم ؟؟

  • سلام
    خسته نباشید
    با چه دستوری میشه oled رو خاموش کرد که توی کمترین مود مصرفی باشه؟
    ممنون میشم جواب رو برام ایمیل کنید
    باتشکر از سایت خوبتون

    • سلام
      کاربر گرامی در این خصوص چندین راه حل وجود دارد. از جمله استفاده از سخت افزاری جهت مدیریت پین تغذیه و… بسته به نوع پروژه بایستی یک راه حل انتخاب بفرمایید. اما پیشنهاد بنده استفاده از روش Blank Out برای خاموش کردن OLED است.
      همچنین پس از پاسخگویی به سوالات از طریق ایمیل اطلاع رسانی می‌شود.

      • سلام خیلی ممنون که جواب دادید،جسارتا متوجه نشدم منظورتو از Blank Out چی هستش.
        اگر ممکنه یکم توضیح بدید.
        من از کتابخونه ی شما نتونسم استفاده کنم متاسفانه برای همین از کتابخونه ی Adafruit_SSD1306-master استفاده می کنم توی این کتابخونه همچین دستوری هستش؟
        ممنون

        • سلام مجدد
          این مورد توسط بنده تست نشده است.
          در این خصوص از دیگر کاربران تقاضا دارم در بحث شرکت کنند.

  • سلام و خسته نباشید.
    من خواستم بدونم با دستوری میشه oled رو خاموش کرد مصرف برقش کم بشه؟
    من وقتی که صفحه oled رو کامل پاک میکنم ۱٫۲۷ میلی امپر مصرف میکنه.
    برای پروژه من ک با باطری با ظرفیت پایین(بخاطر حجم کم پروژه) استفاده میکنم این مقدار زیاد هستش.