آردوینو آردوینو Arduino Uno آموزش آردوینو نمایشگر OLED پروژه های آردوینو

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

getting-started-with-oled-display-and-arduino-ssd1306-driver-digispark
نوشته شده توسط پریسا پوربلورچیان

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

 


معرفی ماژول OLED


محبوب ترین ماژول OLED که در حال حاضر در صنعت الکترونیک و بردهای توسعه میکروکنترلر استفاده می‌شود، نمایشگر OLED با درایور قدرتمند SSD1306 است که در ظاهرهای مختلف به بازار ارائه شده است. چیپ SSD1306 یک کنترل کننده درایور قدرتمند CMOS است. این درایور از پروتکل های ارتباطی I2C و SPI پشتیبانی میکند و با توجه به اینکه در پروتکل I2C تنها با دو پایه برای اتصال نیاز دارد، برای اتصال OLED به میکروکنترلرها از این پروتکل بیشتر استفاده خواهیم کرد. ولتاژ کاری نمایشگر ۳٫۳ و ۵ ولت است و از هر دو پایه های تعذیه میکروکنترلر میتوانید استفاده کنید. زاویه دید نمایشگر ۱۶۰ درجه است و ابعاد آن ۰٫۹۶ اینچ است. نمایشگر دارای ۸ سطر و ۱۲۸ ستون است. دو مدل محبوب از نظر ابعادی و طراحی در بین کاربران مطرح است مانند:

  • ۱۲۸X64 با ظاهر مربع
  • ۱۲۸×۳۲ با ظاهر مستطیل

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


پشتیبانی از تمامی میکروکنترلرها


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

  • Arduino
  • Nodemcu
  • Wemos d1 mini
  • STM32

 


بررسی ولتاژ کاری و پایه‌ها


 در اکثر ماژول OLED ها ماژول به صورت ۴ پایه و نهایتا ۶ پایه هستند. برای اتصال به میکروکنترلر فقط به ۴ پایه SDA, SCL, VCC, GND نیاز داریم. با توجه به نوع برد مورد استفاده همانند جدول زیر اتصالات را انجام دهید:

 


نصب کتابخانه SSD1306 در آردوینو


جهت استفاده از ماژول‌های OLED با درایور SSD1306 به کتابخانه Adafruit_SSD1306 نیاز داریم. لینک دانلود کتابخانه در ادامه در بخش دانلود قرار گرفته شده است. در مرحله اول کتابخانه را از لینک زیر دانلود کرده و پس از دانلود به مسیر گفته شده انتقال دهید:

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

پس از دانلود کتابخانه را کپی کرده و همانند زیر عمل کنید:

  • وارد پوشه Document شده و سپس فایل آردوینو Arduino را باز کنید.
  • وارد پوشه Library شده و فایل دانلود شده را کپی کنید.
  • سپس از حالت زیپ خارج کرده و در صورت داشتن اسم master در انتهای اسم فایل آن را پاک کنید.

 روش دیگر میتوانید مستقیم از نرم افزار آردوینو کتابخانه را فیلتر و نصب کنید:

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

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

 


تست OLED نمایش محتوا و عدد


در این بخش چند نمونه کد آردوینو جهت نمایش انواع محتوا بر روی ماژول OLED را بررسی و اجرا می‌کنیم.

نمایش متن 

 جهت نمایش متن از دستور display استفاده می‌کنیم. در کد زیر تمامی خط های برنامه معرفی شده است. آن را کپی و به نرم افزار آردوینو انتقال دهید:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> //کتابخانه
#include <Adafruit_SSD1306.h> // کتابخانه

Adafruit_SSD1306 display(-1); // ساخت یک آبجکت برای کتابخانه

void setup()   
{                
  // آدرس دهی I2c
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  //پاک کردن حافظه بافر
  display.clearDisplay();

  // نمایش متن بر روی OLED
  display.setTextSize(2); // انتخاب سایز نمایش متن بین ۱ و ۲ انتخاب کنید
  display.setTextColor(WHITE); // انتخاب رنگ
  display.setCursor(0,0); // تعیین مکان نمای نمایش متن بر روی oled
  display.println("theladypi");// متن مورد نظر
  display.display();
  delay(2000);
  display.clearDisplay();

 
}

void loop() {}

جهت نمایش متن مورد نظر در دستور زیر متن را وارد کنید:

 display.println("theladypi");// متن مورد نظر

انتخاب سایز متن بین عدد ۱ و ۲ متغیر است. با توجه به تعداد کاراکترهای کلمه مورد نظر سایز را انتخاب کنید:

 display.setTextSize(2); // انتخاب سایز نمایش متن بین ۱ و ۲ انتخاب کنید

انتخاب مکان نما و یا موقعیت نمایش متن در OLED تحت کنترل شماست. کافیست در خط زیر مشخص کنید:

display.setCursor(x,y);

عدد X مربوط به محور افقی و عدد Y مربوط به محور عمودی است .

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

  display.clearDisplay();

 


نمایش عدد روی ماژول OLED


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

display.println(123456789);

کد کامل نمایش عدد به صورت زیر است:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> //کتابخانه
#include <Adafruit_SSD1306.h> // کتابخانه

Adafruit_SSD1306 display(-1); // ساخت یک آبجکت برای کتابخانه

void setup()   
{                
  // آدرس دهی I2c
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  //پاک کردن حافظه بافر
  display.clearDisplay();

  // نمایش متن بر روی OLED
  display.setTextSize(2); // انتخاب سایز نمایش متن بین ۱ و ۲ انتخاب کنید
  display.setTextColor(WHITE); // انتخاب رنگ
  display.setCursor(0,0); // تعیین مکان نمای نمایش متن بر روی oled
  display.println("123");// متن مورد نظر
  display.display();
  delay(2000);
  display.clearDisplay();

 
}

void loop() {}

 


ساخت اشکال هندسی OLED


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

drawRect()

fillRect()

drawRoundRect()

fillRoundRect()

drawCircle()

fillCircle()

drawTriangle()

fillTriangle()

 سپس بر اساس ابعاد مورد نظر آن را کامل می‌کنیم.

 


نمایش کادر مستطیل OLED


جهت نمایش کادر مستطیل در ماژول OLED از کد آردوینو زیر استفاده کنید.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> //کتابخانه
#include <Adafruit_SSD1306.h> // کتابخانه

Adafruit_SSD1306 display(-1); // ساخت یک آبجکت برای کتابخانه

void setup()   
{                
  // آدرس دهی I2c
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  //پاک کردن حافظه بافر
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Rectangle");
display.drawRect(0, 15, 60, 10, WHITE);
display.display();
delay(2000);

display.clearDisplay();  
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Filled Rectangle");
display.fillRect(0, 15, 60, 10, WHITE);
display.display();
delay(2000);
  display.clearDisplay();

 
}

void loop() {}

همانطور که در کدها مشخص است، دستور زیر اضافه شده است.

display.drawRect(0, 15, 60, 10, WHITE);

display.fillRoundRect(0, 15, 60, 40, 10, WHITE);

که به ترتیب عددهای نوشته شده محور X، محور Y، عرض و ارتفاع و رنگ است. انتخاب تک تک اعداد بر عهده خودتان است و به دلخواه میتوانید اعداد مورد نظر را جایگزین کنید. هر دو حالت مستطیل پر و مستطیل خالی برای OLED در کد قرار گرفته شده است و با فاصله ۲۰۰۰ میلی ثانیه تغییر شکل میدهد.

 

 


نمایش دایره در OLED


جهت نمایش دایره در ماژول OLED از کد آردوینو زیر استفاده کنید.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> //کتابخانه
#include <Adafruit_SSD1306.h> // کتابخانه

Adafruit_SSD1306 display(-1); // ساخت یک آبجکت برای کتابخانه

void setup()   
{                
  // آدرس دهی I2c
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  //پاک کردن حافظه بافر
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Circle");
display.drawCircle(20, 21, 9, WHITE);
display.display();
delay(2000);

display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println("Filled Circle");
display.fillCircle(20, 21, 9, WHITE);
display.display();
delay(2000);
  display.clearDisplay();

 
}

void loop() {}

همانطور که در کدها مشخص است، دستور زیر اضافه شده است.

display.drawCircle(20, 21, 9, WHITE);

display.fillCircle(20, 21, 9, WHITE);

که به ترتیب عددهای نوشته شده محور X، محور Y، عرض و رادیوس است. انتخاب تک تک اعداد بر عهده خودتان است و به دلخواه میتوانید اعداد مورد نظر را جایگزین کنید. هر دو حالت دایره پر و دایره خالی برای OLED در کد قرار گرفته شده است و با فاصله ۲۰۰۰ میلی ثانیه تغییر شکل میدهد.

 

 


وسایل مورد نیاز


نمایشگر OLED 

برد آردوینو

برد ویموس

برد Nodemcu

کابل فلت

 


جمع بندی لیدی پای


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

 

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

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

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

۹۱ دیدگاه

  • سلام ممنون جای این آموزش خالی بود
    من یه مشکل توی استفاده از این کتابخانه دارم که نتونستم حل کنم برای همین از کتابخانه های دیگری استفاده میکردم.
    متن ارور :
    error: Adafruit_I2CDevice.h: No such file or directory
    چگونه باید برطرفش کنم؟

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

    • سلام خسته نباشید
      Oled ای که من دارم
      ۶ تا پایه DC RES D1 D0 VCC GND
      داره
      بعد از اتصال به اردوینو به ترتیب به پین های GND 5V 10 11 12 13
      فراخوانی توی محیط IDE هیچ اتفاق خاصی خاصی نمیوفته و OLED همچنان خاموشه
      ممکنه خراب باشه؟
      در ضمن اینم بگم که پایه CS نداره

      • سلام
        راه اندازی این نوع نمایشگر oled متفاوت است و بایستی دیتاشیت مربوطه را مطالعه کنید.

        • سلام وتشکر از زحمات و مطالب مفید کار بردی شما سوال داشتم که با تغییر کدام کد میشود جهت نمایش روی اولد را ۱۸۰ درجه تغییر داد با تشکر از شما

          • با سلام
            این مورد توسط بنده تست نشده است اما بایستی از فایل هگز i2cset -y 0 0x3C 0xA1 0xC8 به این صورت تغییرات را اعمال کنید.

    • من هم این مشکل رو داشتم، کتابخونه Adafruit_BusIO رو هم علاوه بر دو کتابخونه متن آموزش نصب کردم مشکل رفع شد

  • در طی این چند سالی که با oledکار میکنم تا به حال آموزش فارسی برای این مورد به این کاملی ندیدم
    خدا قوت

  • سلام و خسته نباشید
    آیا میشه برای شکل های دایره شرط نویسی کرد مثلا طی یک عملی دایره پر و خالی بشه

  • سلام و خسته نباشید با توجه به اینکه میگید پروتکل این برد ۲سی هست و باید به پایه هایی داخل جدول هست متصل بشه خب پس اگر بخواهیم از خانواده اردویینو استفاده کنیم مثلا اردویینو نانو پس نمیشه این برد را راه اندازی کرد چون پایه ورودی انالوگ ندارد (A)؟

  • سلام ببخشید من یه سوال داشتم خدمتتون در خصوص پروه یه برنامه ایی میخام بنویسم که بتونه دما رو کنترل کنه مثلا از مقدار مثبت ۲۳ بالا تر نرعه یا از منفی ۲۳ پایین تر نیاد و از برد نود msu استفاده کردم با سنسور lm35 ممنون میشم کمکم کنید چون برای پروژه ام نیاز فوری دارم از توضیحات جامع و کامل تون متشکرم

  • سلام خسته نباشید امیدوارم حالتون خوب باشه راستش خواستم بپرسم تو این مدلی که برای صفحه نمایش oled استفاده کردید میتونیم رد دستور :
    ;(display.setTextColor(WHITE
    میتونیم به جای رنگ سفید از رنگ های دیگه هم استفاده کنیم ؟؟؟

    • با سلام
      این مورد بسته به نوع ال ای دی مورد استفاده دارد. مثلا ال ای دی دو رنگ این امکان را فراهم می‌کند تا تغییر رنگ داشته باشید.

  • روز بخیر ممنون از آموزش خوبتون.

    این برنامه برای من درست کار نکرد و نمایشگر ۱۲۸*۶۴ را بصورت ۱۲۸*۳۲ شناسایی می کرد و موقع نمایش یک خط در میان خطوط مشکلی افقی مینداخت.
    این خط از آموزش را:
    Adafruit_SSD1306 display(-1); // ساخت یک آبجکت برای کتابخانه

    با خط زیر جایگزین کردم و مشکل رفع شد:

    Adafruit_SSD1306 display(128, 64, &Wire, -1);

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

  • در تعریف ابجکت عبارت داخل پرانتز به چه معناست؟
    حافظه بافر چرا باید خالی شود؟
    آدرس دهی i2c را توضیح دهید لطفا
    درمورد تنضیمات اشکال توضیح دهید

    • با سلام
      در این خط (Adafruit_SSD1306 display(-1 پایه ریست تعریف شده است -۱ = no reset pin
      آدرس دهی i2c به صورت پیش فرض در کتابخانه تعریف شده است و با نصب کتابخانه تمامی این موارد به شما نمایش داده می‌شود. با این حال میتوانید به صورت جداگانه آدرس i2c را دریافت کنید. منظور از پاک کردن حافظه بافر پاک شدن اطلاعات از روی OLED است که به صورت خودکار انجام می‌شود.
      تنظیمات اشکال در هر بخش در کدها مشخص شده است و از کتابخانه دریافت شده است.

  • سلام. من کتابخونه Adafruit_SSD1306 را از داخل خود اردوینو نصب کردم. ولی وقتی کامپایل می کنم خطا می ده. وقتی رفتم داخل کتابخونه رو برسی کردم دیدم این کتابخونه برای بردهای AVR طراحی شده در حالی که من از بردBlue pill استفاده می کنم. برای راه اندازی oled در محیط برد Blue Pill چه راهی وجود داره؟ با تشکر

    • با سلام
      در این خصوص این برد توسط بنده تست نشده است. پیام شما به کارشناس دیگری ارجاع داده می‌شود.

    • با سلام
      از قسمت library manager کتابخانه Adafruit_GFX ورژن ۱٫۷٫۲ را نصب کنید. با استفاده از این کتابخانه بایستی مدار به درستی عمل کند. لطفا این مورد را بررسی نمایید و نتجیه را از همین طریق اعلام فرمایید.

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

      • با سلام. ایا نیاز هست کتابخانه Wire هم در برنامه افزوده شود به دلیل استفاده از I2C . با تشکر

  • سلام. من برسی کردم دیدم این کتابخانه Adafruit_GFX اصلا مربوط به oled نمی شه و مربوط به tft هست. حالا باید چکار کرد؟ با تشکر

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

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

  • سلام خسته نباشید وقت بخیر. بنده این کد رو در اردوینو وارد کردم و موقع اپلود خطای مشکل کامپایل در اردوینو را به من میدهد. در صورتی که وقتی برنامه خالی یا برنامه دیگه اپلود میکنم به راحتی اپلود میشه و مشکل از برد نیست . حالا نمیدونم به چه علت میخوام این کد رو اپلود کنم این خظا رو میده ؟!!

      • خیلی مچکرم مشکل برطرف شد. به دلیل ورژن کتابخانه این مشکل پیش امده بود .
        سوالایی که برایم پیش امده , با توجه به اینکه کتابخانه هارا به روزرسانی میکنیم اما چرا باید همچنین باگ هایی داشته باشند, و کتابخانه ورژن پایین تر را نصب کنیم؟

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

  • سلام و عرض ادب. روش قرار دادن Vector (تصویر تک رنگ) روی این ماژول رو هم بفرمایید. با تشکر

  • سلام من می خوام فونت متن ام عددی بین ۱ و ۲ باشه. مثلا ۱٫۵ . چطوری می تونم این کار رو کنم؟

  • سلام برد من NodeMcu هست
    لینک دانلودی که قرار دادید کار نمیکنه و به فروشگاه منتقل میشه
    دقیقا مثل تصویر عمکردم و حتی ورژن قدیمی ۱٫۱۰ رو نصب کردم ولی بهم ارور میده
    که این لایبری هم در داخل لایبری Adafruit_GrayOLED.h فراخوانی شده
    من الان ۲ روزه انواع و اقسام لایبری ها رو دانلود کردم ولی کار نمیکنه

    • با سلام
      کدام لینک رو میفرمایید. کتابخانه ای تحت عنوان grayoled نیاز نداریم. تمامی کتابخانه های مورد نیاز در متن آموزش نوشته شده است.

    • با سلام
      اگر از این آموزش استفاده می‌کنید. کتابخانه های زیر را در library manager سرچ و نصب کنید.
      Adafruit SSD1306 by Adafruit
      Adafruit GFX Library by Adafruit
      البته در متن آموزش حتی تصاویر کتابخانه ها قرار گرفته شده است. آموزش را کامل مطالعه و سپس مرحله به مرحله پیش بروید.

      • سلام
        ممنون که پاسخ دادید
        من واقعا متوجه نمیشم
        دقیقا مثل تصویر بالا کنابخونه رو ادد کردم بهم include این رو پیدا نمیکنه
        Adafruit SSD1306 by Adafruit
        Adafruit GFX Library by Adafruit
        دقیقا کپی کردم دیدم همین ها نصب شده
        تو همین کتابخونه Adafruit GFX Library by Adafruit کتابخونه <Adafruit_I2CDevice.h اضافه شده
        و ازش استفاده شده
        بورد رو از NodeMcu به UNO تغییر دادم ولی بازم همین ارور رو داشت

        • لطفا کد را آپلود و در صورت مشاهده ارور دقیقا ارور را کپی و ارسال کنید تا بررسی شود.

    • با سلام
      کاربر گرامی روش راه اندازی نمایشگر OLED SPI با همین کتابخانه است و تفاوتی ندارد. دستورات زیر را جایگزین I2C کنید. حتما در آموزش آپدیت خواهد شد.
      /Comment out above, uncomment this block to use hardware SPI
      #define OLED_DC 8
      #define OLED_CS 10
      #define OLED_RESET 9
      Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
      &SPI, OLED_DC, OLED_RESET, OLED_CS);

  • با سلام و خسته نباشید
    میخواستم بدونم میشه دو ویا بیشتر از این نمایشگرها پشت سر هم با روش I2C استفاده کرد اگر جواب بله هست اون موقع ادرس نمایشگرها چطوری باید باشد تا بتونیم جداگانه اطلاعات را به نمایشگر وصل کنیم

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

  • سلام من یه سوال داشتم من ماژول oled sheld رو دارم میخواستم بدونم پایه کلاک و دیتاش کجاشت

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

    • با سلام
      سپاس از همراهی شما کاربر گرامی
      بله میتوانید از پایه های i2c برد آردوینو پرو مینی A4 , A5 استفاده کنید.

  • سلام خوبید
    خسته نباشید
    Arduino: 1.8.1 (Windows 10), Board: “Arduino/Genuino Uno”

    Build options changed, rebuilding all
    In file included from C:\Users\BS\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.cpp:20:0:

    C:\Users\BS\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.h:30:32: fatal error: Adafruit_I2CDevice.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    اینو چیکار کنم؟؟؟؟؟

    • با سلام
      فقط و فقط کتابخانه هایی که در متن آموزش گفته شده است را نصب کنید تا تداخلی در کتابخانه ها نداشته باشید.

  • با سلام و خسته نباشید ،سوال داشتم اینکه اگه به تعداد ۸ تا oled داشته باشیم بخواهم پشت سرهم به اردینو وصل کنم البته کارکتری سایز کوچکش ، چطور آدرس دهی میشوند این ماژول ها که هر کدام اطلاعات خودشون دریافت کنند ممنون جواب بدین

      • با سلام خیلی ممنون از جوابتون ، ببخشید oled با آدرسهای مختلف بازار وجود دارد تو سایت شما نوشتید آدرس معمولا ۳c , 3D هستند و قابل تغییر نیستند ، اگه ممکن هست اسم این oled را با درایور شون که آدرس متفاوت دارن بگویید ، لازم دارم تعدادی از این oled را با آدرس متفاوت را به اردینو وصل کنم ، ممنون

          • با سلام . خسته نباشید در خصوص آدرس دهی متفاوت oled ssd1306 گفتین بازار وجود دارد بنده گشتم فروشگاه دیجی کالا چند تا هم از اونجا خرید کردم ولی پشت برد همون x3D .x3c نوشته چیزی جدید نوشته نشده بود آدرس متفاوت ایجاد کنه ، چچوری مثلا ده تا از این oled 128. 64 وصل کنم که آدرس متفاوت داشته باشه ، مننون

            • با سلام
              روش خرید برد در آموزش اعلام شده است اگر از روش های دیگری استفاده کنید، قطعا با مشکل مواجه خواهید شد. با I2C Scanner میتوانید کد I2C دستگاه را شناسایی کرده و در کد برنامه به صورت مجزا تعریف کنید.

          • با سلام . خسته نباشید در خصوص آدرس دهی متفاوت oled ssd1306 گفتین بازار وجود دارد بنده گشتم فروشگاه دیجی کالا چند تا هم از اونجا خرید کردم ولی پشت برد همون x3D .x3c نوشته چیزی جدید نوشته نشده بود آدرس متفاوت ایجاد کنه ، چچوری مثلا ده تا از این oled 128. 64 وصل کنم که آدرس متفاوت داشته باشه ،

            • با سلام
              روش خرید برد در آموزش اعلام شده است اگر از روش های دیگری استفاده کنید، قطعا با مشکل مواجه خواهید شد. با I2C Scanner میتوانید کد I2C دستگاه را شناسایی کرده و در کد برنامه به صورت مجزا تعریف کنید.

  • با سلام و خسته نباشید ، ببخشید اگه ۱۰ عدد از این oled کوچک را به ادرینو متصل شوند آدرس دهی آنها چگونه خواهد بود که هرکدام آدرس دهی شوند ، و دستای خودشان نمایش بدهند ، تو ال سی آدرس دهی تا ۸ ال سی دی ممکن بود آیا تو oled هم چنین امکان آدرس دهی وجود دارد بالاتر از ۸ عدد oled,ممنون

    • با سلام
      باید حتما از oled با آدرس i2c متفاوت استفاده کنید که در پشت برد آدرس دهی شده است. سپس توسط برنامه i2c scanner کد i2c را دریافت کرده و در کد برنامه در کلاس هر oled به صورت جداگانه برای هر oled تعریف می‌کنیم. یعنی ۸ کلاس باید آدرس I2C باید در کد برنامه تعریف شود و سپس فرمان میدهید که در هر کلاس چه پیغامی نمایش داده شود.

  • با سلام و خسته نباشید ممنون ازشما، ببخشید بنده میخواهم oled ssd1306را وصل کردم با ارتباط i2c به اردینو و کتابخانه Adafruti ssd1306 را نصب میکنم از کتابخانه اردینو نصب نمیکنه پیغام ارور میده که دایرکتوری وجود ندارد همچنین چیزی فکر کنم ، بعدم یکی دیگه نصب میکنم همش میگه wire .h دایرکتوری نیست دیگه خسته ام کرده از لینک دانلود میکنم باز پیغام wire .h را میده که دایرکتوری نیست اصلا دایرکتوری کجا هست چجچوری هست نصب کنم wire.h را که نصب بشه درست میشه لطفاً ممنون

    • با سلام
      کتابخانه های wire کتابخانه های داخلی آردوینو است و نیازی به نصب ندارد. بایستی پیغام ارور را ارسال کنید تا راهنمایی کنم.

      • با سلام و خسته نباشید ، با تشکر از شما ، سوال داشتم اینکه ، با ارتباط سریال spi میتوانم ۳۰ عدد oled ssd1306 همگی مشابه و آدرس یکسان دارند به اردینو متصل کنم و آدرس دهی بشوند و بعد برنامه کدنویسی آن چطور خواهد بود چیزی در این مورد نیست ، سوال دوم خواستم ۳۰عدد oled ssd1306 با ارتباطi2c با برد TCA9548a به اردینو وصل بکنم نیمه کاره ماند ، سخت افزاری مشکلی ندارم ، فقط کدنویسی چند TCA و چطور آدرس دهی میشوند ، ممنون و با تشکر از شما

  • سلام سوال کرده بود جوابی داده نشد سوال این بود که با چه کد ی می توان ۱۸۰ درجه جهت نمایش روی اولد را تغییر داد از زحماتتون ممنونم

    • با سلام
      این مورد توسط بنده تست نشده است اما بایستی از فایل هگز i2cset -y 0 0x3C 0xA1 0xC8 به این صورت تغییرات را اعمال کنید.

      • سلام ممنون از راهنمایی تون
        من مبتدی هستم اگر امکانش هست بیشتر راهنمایی بفرمایید
        در این کد یا کتابخانه ها چه تغییری باید داد که جهت نمایش روی اولد برعکس شود

        در این کد جهت نمایش وقتی درست است که پایه های اولد بسمت پایین است
        من میخواهم پایه های اولد به سمت بالا باشد با تشکر از زحمات شما

        #include
        #include
        #include
        #include
        #include
        #include
        #include
        #include
        #include “SSD1306Wire.h”
        #include “OLEDDisplayUi.h”
        #include “Wire.h”
        #include “OpenWeatherMapCurrent.h”
        #include “OpenWeatherMapForecast.h”
        #include “WeatherStationFonts.h”
        #include “WeatherStationImages.h”
        const char* WIFI_SSID = “ssid”;
        const char* WIFI_PWD = “pwd”;
        #define TZ -5
        #define DST_MN 60
        const int UPDATE_INTERVAL_SECS = 20 * 60;
        const int I2C_DISPLAY_ADDRESS = 0x3C;
        #if defined(ESP8266)
        const int SDA_PIN = D2;
        const int SDC_PIN = D3;
        #else
        const int SDA_PIN = 3;
        const int SDC_PIN = 4;
        #endif

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

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

    بیشتر از ۱۰ روز هست که سوال نن رو جواب ندادید

    • با سلام
      کاربر گرامی سوالات بسیار زیاد است و تمام تلاش خود را خواهیم کرد تا در کمترین زمان ممکن به سوالات پاسخ دهیم.

  • مهندس در مورد مگا ۲۵۶۰ فقط روی پایه های sda وscl جواب میده نه روی ۲۰و۲۱ کتابخانه ها کامل است من الان پروژه اسیلوسکوپ همکارتون هم زدم کار نکرد اگر شما خودتون روی مگا ۲۵۶۰ امتحان کردید راهنمایی کنید چون بنده با مثال‌های خود آردونیو ای دی زدم روی همون دو پایه sdaوscl جواب گرفتم و صفحه روشن شد

  • سلام و خسته نباشین تو کتاب خونه های جدید اگر Adafruit_SSD1306 display(-1); این کد باشه lcd کار نمی کنه

  • سلام
    وقت بخیر
    ببخشید می خواستم بدونم میشه از این نمایشگر و ماژول بلوتوث hc05 به طور همزمان استفاده کرد؟
    من از برد آردوینو uno استفاده کردم. بعد از راه اندازی سرعت دریافت اطلاعات از ماژول بلوتوث بشدت کم شد (تاخیر تا۱۰ ثانیه هم می رسید) و بعد از مدتی هم ماژول بلوتوث هیچ چیزی دریافت نکرد (اطلاعات ارسال میشه ولی دریافت نه) .
    حتی وقتی بلوتوث رو له تنهایی هم راه اندازی می کنم این مشکلش پابرجاست
    به نظرتون باید چکار کنم؟

    • با سلام
      عملکرد این دو با هم تداخلی نباید ایجاد کند. بهتر است سرعت بادریت برای انتقال دیتا را تغییر دهید.

      • سلام خسته نیاشید
        من تمام مراحل بالا به درستی انجام میدم اما زمان آپلود کد با این ارور مواجه میشم
        C:\Users\ASUS\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.cpp:42:10: fatal error: pgmspace.h: No such file or directory
        #include
        ^~~~~~~~~~~~
        compilation terminated.

        exit status 1

        Compilation error: exit status 1
        لطفا اگه میشه راهنمایی کنید
        خیلی ممنون

        • با سلام
          این ارور مرتبط با نصب کتابخانه است. دقت داشته باشید هر دو کتابخانه Adafruit SSD1306 و Adafruit GFX نصب شده باشد.
          بررسی و نتیجه را اعلام کنید.