در پستهای قبلی راهاندازی ماژول نمایشگر OLED با پروتکل I2C را آموزش دادیم.با توجه به فیدبکهای دریافت شده مشاده کردیم که این آموزش مورد استقبال قرار گرفته و برای کاربران بسیار مفید و موثر بوده. ولی در مقابل پی بردیم که درصد بسیار از کاربران در راهاندازی این ماژول که از طریق پروتکل SPI استفاده میکنند ،در راهاندازی این نمایشگر ما مشکل مواجه هستند.از این رو امروز تصمیم گرفتم به نحوه اتصال نمایشگر OLED SPI با آردوینو و هنچنین نحوه کد نویسی آن بپردازیم.در ادامه آموزش با مرجع تخصصی آردوینو ، دیجی اسپارک همراه باشید.
اتصالات ماژول نمایشگر OLED
ماژول OLED را طبق تصویر زیر به آردوینو متصل میکنیم:
پین vcc به ۵ ولت DC و GND به زمین مدار
CLK پین سورس کلاک ماژول میباشد و باید به SCK آردوینو متصل شود
MOSI ماژل نیز باید به MOSI آردوینو متصل شود
پین CS بر روی ماژول له منظور select کردن آن میباشد و به پین شماره ۱۰ متصل میشود
پین D/C بر روی ماژول برای این است که ماژول را آگاه کنیم که آیا برای آن داده میفرستیم یا دستور.
پروتکل SPI در سایر آردوینوها به صورت زیر میباشد:
شمارش پیکسل در ماژول نمایشگر OLED
در عرض این نمایشگر ۱۲۸ پیکسل قرار دارد که شمارش آن از ۰ در سمت چپ شروع میشود و به راست تا پیکسل شماره ۱۲۷ ادامه مییابد. و همچنین در طول این نمایشگر ۶۴ پیکسل قرار دارد که از شماره صفر شروع میشود و به سمت پایین تا شماره ۶۳ ادامه مییابد.
کدنویسی ماژول نمایشگر OLED
کتابخانه U8glib را از لینک زیر دانلود کنید و سپس طبق آموزش زیر آن را به نرمافزار آردوینو اضافه کنید. دانلود کتابخانهU8glib چنانچه روش نصب کتابخانه در آردوینو را نمیدانید، به آموزش نصب کتابخانه در آردوینو مراجعه کنید. سپس سوالات تکمیلی را در همان قسمت مطرح بفرمایید. اکنون کدهای زیر را بر روی آردوینو آپلود کنید.
#include <U8glib.h> U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10,D / C = 9 void setup(void) { } void loop(void) { // picture loop u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); delay(50); } void draw(void) { // graphic commands to redraw the complete screen should be placed here u8g.setFont(u8g_font_unifont); //u8g.setFont(u8g_font_osb21); u8g.drawStr( 15, 40, "digispark.ir"); }
اگر اتصالات درست باشد و کارهای گفته شده را به درستی انجام داده باشید نتیجهی زیر را مشاهده میکنید.
شرح برنامه ماژول نمایشگر OLED
پس از فراخوانی کتابخانه U8glib توسط دستور زیر به برنامه اعلام میکنیم که از یک عدد OLED 128*64 با استفاده از رابط SPI استفاده میکنیم .سپس باید طبق اتصالات آرگمانها را تکمیل کنیم.
U8GLIB_SH1106_128X64 u8g(SCK, MOSI,CS, D/C);
اتصالات پینها به صورت تصویر زیر میباشند.
پس آرگمانها را اینگونه باید تکمیل کنیم:
U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10,D / C = 9
drawStr(u8g_uint_t x, u8g_uint_t y, const char *s)
توسط این تابع ، نوشته بر روی صفحه نمایش OLED نمایش داده خواهد شد.پاراکترهای این تابع به صورت زیر میباشد:
x : موقعیت نمایش در راستای محور Xها
Y:موقعیت نمایش در راستای محور y ها
s: رشتهای که قصد نمایش آن را داریم.
در کتابخانههایی که برای LCDهای گرافیکی و OLED ها استفاده میشود اصطلاحی وجود دارد به نام “حلقه رسم”. “حلقه رسم توسط دستور زیر شروع میشود.
u8g.firstPage();
و توسط دستور زیر به پایان میرسد:
u8g.nextPage()
پس حلقهی رسم به صورت زیر میباشد که باید تمام دستورات گرافیکی در آن قرار بگیرد:
u8g.firstPage(); do { //دستورات گرافیکی در این قسمت قرار میگیرد } while ( u8g.nextPage() );
” حلقه رسم ” برای اجرای دستورات گرافیکی در OLED نیاز میباشد و تمام دستورات گرافیکی در میان این حلقه قرار میگیرد. و ما نیز تابع draw را نیز در میان این حلقه قرار دادهایم.
در این آموزش با اصول راه اندازی OLED SPI آشنا شدید . آموزش توابع تکمیلی این کتابخانه در پستهای زیر در درسترس میباشند.
آموزش ماژول نمایشگر OLED بخش دوم
آموزش ماژول نمایشگر OLED بخش سوم
آموزش ماژول نمایشگر OLED بخش چهارم
آموزش ماژول نمایشگر OLED بخش پنجم
آموزش ماژول نمایشگر OLED بخش ششم
آموزش نمایش لوگو در نمایشگر OLED
سخت افزار مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
بسیار عالی بود مثل همیشه فوق العاده بود.
جای آموزش GLCD خالیه.پیر شدیم و این آموزش را یادمون ندادید.
ولی منهای شوخی مطالبتون عالیه
با تشکر
سلام ممنون از راهنمایی هاتون
من یک ماژول OLED تهیه کردم که علاوه بر پایه های بالا پایه ریست هم داره وبرنامه شما روی اون جواب نمیده میتونید راهنمایی کنید؟
سلام
ممنون از راهنمایی هاتون
من یک ماژول OLED تهیه کردم که علاوه بر پایه های بالا پایه ریست هم داره وبرنامه شما روی اون جواب نمیده میتونید راهنمایی کنید؟
خیلی عالی بود
سلام
روی oled که من خریدم پایه ها به ای شکله
DC- RES- D1- D0- VCC- GND
میشه راهنمایی بفرمایید اتصال پایه ها به چه صورته
با سلام
اگر کالای شما با کالایی که در این آموزش به کار رفته، متفاوت است، باید از فروشنده جهت رفع عیب درخواست بفرمایید. به علت تنوع زیاد و اینکه ممکن است درایور آن به روش خاصی راه اندازی شود، حتما از همان طریق پیگیری بفرمایید.
سلام
آیا امکانش هست این صفحه نمایش رو به attiny85 که آموزش هم دادید، وصل کنیم؟
سلام
بله محدودیتی برای اینکاروجود ندارد. تنها باید با توجه به تراشه OLED، کتابخانه مورد نیاز جهت راه اندازی attiny با OLED را فراخوانی نمایید.
روی oled که من خریدم پایه ها به ای شکله
DC- RES- D1- D0- VCC- GND
میشه راهنمایی بفرمایید اتصال پایه ها به چه صورته
تراشه oled و نوع آن باید مشخص باشد.
تنها چیزی که روی oled هست: RIT 253 و spi
و پایه ها هم همونطور که در پست قبل خدمتتون عرض کردم
طبق توضیحات همین آموزش، باید پایه های SCL, SDA را به پایه های SDA و SCL برد Attiny85 متصل کنید. باز هم پیشنهاد میکنم دیتاشیت پایه های Attiny را بررسی نمایید.
سلام وقت بخیر
جهت شرکت در دوره اردونیو دقیقا چه مدلی ار برد را باید تهیه کرد ؟
مرسی
سلام
اطلاعات کامل در صفحه کارگاه کاربردی آردوینو Arduino قرار گرفته شده است. مطالعه کنید.
در خصوص تهیه برد، لینک آن را در زیر قرار میدهم، تهیه نمایید.
آردوینو Uno R3
با سلام و خسته نباشید ، اگر بیش از یک oled با ارتباط i2c و مشابه هم باشد آیا با پایه CS میشه oled مورد نظر را انتخاب کرد و دسترسی داشت با برنامه نویسی یعنی باید برای هر پایه CS جداگانه به پینهای اردینو وصل بشوند و تو برنامه نویسی تعریف بشوند، مثل همون دات ماتریس مشابه که چند تا شون بهم وصل میشدند اینها هم بهم وصل میشوند
با سلام
برای ارتباط i2c میتوانید از چندین رابط استفاده کنید. فقط دقت داشته باشید پایه های I2c به صورت SDA, SCL است.