Arduino NodeMcu

راه اندازی OLED با استفاده از کتابخانه ThingPulse

در این آموزش در خصوص OLED صحبت کردیم و درگاه I2C صحبت کردیم و توسط کتابخانه نوشته شده توسط Adafruit چند نمونه برنامه نوشتیم. در این آموزش قصد داریم مستقیما برویم سراغ کتابخانه ThingPulse و چند نمونه برنامه بنویسیم. مدار مورد استفاده همان مداری است که برای کتابخانه Adafruit استفاده کردیم که تصویر آن را در زیر مشاهده می کنید:

نصب کتابخانه ThingPulse

جهت نصب کتابخانه مراحل ذیل را دنبال کنید:

  • ابتدا کتابخانه را از این لینک دانلود کنید
  • به منوی Sketch->Include Library->Add .ZIP Library بروید و فایل فشرده ای که در مرحله قبل دانلود کردید به کتابخانه های Arduino IDE اضافه کنید.

یک پروژه جدید در Arduino IDE ایجاد کنید سپس دکمه ای که در گوشه راست و در بالای IDE قرار دارد مطابق شکل زیر کلیک کرده و گزینه New Tab را انتخاب کنیدو نام زبانه جدید را Fonts.h انتخاب کنید. همین رویه را جهت ایجاد به زبانه دیگر به نام Images.h تکرار کنید

در این مثال قصد داریم علاوه بر نمایش متن هم یک فونت جدید به برنامه اضافه کنیم و هم یک تصویر Bitmap را بر روی صفحه نمایش دهیم. این دو زبانه جدید را هم به همین منطور اضافه کردیم که کد برنامه تمیز تر باشد.

اضافه کردن فونت به برنامه

برای ساخت یک فونت جدید به این آدرس مراجعه کنید.

همه چیز واضح و مشخص است. فیلد اول مربوط به اندازه نمایشگر است. با توجه اینکه ما از نمایشگر ۰٫۹۶ استفاده می کنیم، آن را در حالت پیشفرض رها می کنیم. در فیلد Font Family می توانید از میان انبوهی از فونت ها فونت مورد نظر خود را انتخاب کنید. در فیلد Style میزان ضخامت فونت و مایل بودن و یا نبودن آن را انتخاب کنید. فیلد Size که مسلما اندازه فونت و فیلد آخر مربوط به نسخه کتابخانه مورد استفاده می باشد. که نیازی تغییر ندارد. دکمه Create را کلید کنید و کد تولید شده در زیر فرم را در زبانه Fonts.h کپی و پیست کنید. بر حسب فونتی که انتخاب کرده اید نام آرایه مربوط به فونت متفاوت است. می توانید آن را به نامی دلخواه تغییر دهید و یا بدون تغییر رها کنید. از آنجائیکه فونتها قرار نیست در طول اجرا برنامه تغییر کنند از کلمه const در تعریف آرایه فونت استفاده شده است. همچنین جهت صرفه جویی حافظه رم و قرار گرفتن کد فونت بر روی حافظه برنامه از کلمه کلیدی PROGMEM استفاده شده است.

اضافه کردن تصویر به برنامه

برای اضافه کردن تصویر این رو مد نظر داشته باشید که شما قرار است تصویر را در نمایشگر ۱۲۸×۶۴ پیکسل نمایش دهید بنابراین توقع چندانی از نتیجه حاصل نباید داشته باشید حال آنکه تصویر در بیشتر موارد بصورت تک رنگ نمایش داده میشوند ( شاید چند رنگ هم بشه … من امتحان نکردم نمی دونم). با توجه به شرایط ذکر شده است اگر خودتان اهل فن هستید , به هنر Pixel Art تسلط دارید بهتر است در یک نرم افزار گرافیکی یک تصویر در ابعاد ۱۲۸×۶۴ ایجاد کنید و طرح خود را بصورت تک رنگ در آن ایجاد کنید. یا اگر مثل من اهل هنر نیستید یک تصویر را به همان ابعاد , در حالت تک رنگ تبدیل کنید. اگر نتیجه رضایتبخش نبود سعی کنید آن را روتوش کنید و بعد اینکه از نتیجه کار راضی بودید مرحله بعد را دنبال کنید. من یک تصویربا گرافیک معمولی از نقشه کشور عزیزمان ایران رو تبدیل کردم که نتیجه تقریبا قابل قبول بود اما اگر شما نسبت به گرافیک برنامه خود وسواس دارید می توانید زمان بیشتری برای ایجاد یک گرافیک عالی صرف کنید. از آنجائیکه من در این وبلاگ اهداف آموزشی را دنبال می کنم خیلی در این زمینه وسواسی عمل نمی کنم.

اکنون که تصویر خود را آماده کرده اید به این آدرس مراجعه کنید.

همانطور که در تصویر فوق مشاهده می کنید انواع قالب های تصویری را می تواند به فرمت XBM که همان آرایه تصویری مورد نظر ماست توسط این سرویس آنلاین تبدیل کنید. دکمه Choose File را انتخاب کنید و پس از Upload تصویر دکمه Convert and Download را کلیک کنید. پس از کلیک یا فایل با پسوند xbm تحویل می گیرید. فایل را باز کرده و محتویات آن را در زبانه Images.h کپی و پیست کنید. اما آن را همانگونه رها نکنید. همانطور که در اول فایل مشاهده می کنید تعاریف مربوط به نام طول و عرض تصویر با یک عدد طولانی همراه شده است. آن اعداد را پاک کنید و کلمات با معنی مثل نام فایل تصویری که آن را تبدیل کردید استفاده کنید. ادامه می توانید آرایه مربوط به نقشه ایران را ملاحظه کنید.

برنامه اصلی

اکنون همه چیز برای نوشتن برنامه اصلی آماده است. در ادامه کد مربوط به برنامه را ملاحظه می کنید. توضیحات خط به خط در ادامه برنامه آورده شده است.

در خط اول و دوم کتابخانه های مربوط به I2C و OLED را به برنامه اضافه می کنیم.

در خط ۳ هدر فایلی که آرایه مربوط به فونت جدید که در مراحل قبل ایجاد کردیم را به برنامه اضافه می کند.

در خط ۴ هدر فایل مربوط به آرایه تصویر نقشه ایران را به برنامه اضافه می کنیم.

در خط یک نمونه از کلاس نمایشگر به نام oled ایجاد می کنیم. متد سازنده کلاس SSD1306 یه آزگومان را از ما قوبل میکند. آرگومان اول مربوط به آدرس نمایشگر که همانطور قبلا ذکر کرده بودیم ۰x3C است و دو آرگومان دیگر مربوط به پین های باس I2C است. که ما اینجا از شماره پایه استفاده کردیم که معادل همان D2 و D3 است.

در خط ۹ و در بخش setup نمایشگر را راه اندازی اولیه یا همان Initialize می کنیم.

در خط ۱۳ توسط متد clear بافر مربوط اطلاعات صفحه نمایش را پاک می کنیم.

در خط ۱۴ توسط متد setTextAlignment و پاس دادن TEXT_ALIGN_CENTER به آن چیدمان متن را وسط چین می کنیم.

در خط ۱۵ توسط متد setFont و پاس دادن نام فونت، فونت نمایشی را تنظیم می کنیم. در اینجا ما از نامی آرایه ای که در هدر فایل مربوط فونت که در مراحل قبل ایجاد کردیم، استفاده می کنیم.

در خط ۱۶ توسط متد drawString متن مورد نظر خود را در مختصات مد نظر چاپ می کنیم. دو پارامتر اول مربوط به مختصات و پارامتر سوم رشته ای است که می خواهیم رو صفحه نمایش چاپ شود.

در حالت معمول بر خلاف کتابخانه Adafruit وقتی با کتابخانه ThingPulse برنامه می نویسید تصاویر برعکس نمایش داده می شود. بسته به وضعیت قرار گرفتن نمایشگر می توانید با استفاده از تابع flipScreenVertically تصاویر را به طور عمودی چرخانده یا flip کنید که ما در خط ۱۷ از آن استفاده کرده ایم.

در خط ۱۸ محتویات بافر را به روی نمایشگر منتقل می کنیم.

در خطوط ۲۱ الی ۳۰ دستورات تکرار دستورات قبلی است فقط از یکی از فونت های پیش فرض کتابخانه ThingPulse استفاده شده است.

در خط ۳۴ با استفاده از متد drawXbm تصویری که در مراحل قبل ایجاد کردیم را نمایش می دهیم. این متد ۵ آرگومان قبول می کند. دو آرگومان اول مربوط به نقطه شروع نمایش تصویر است. دو پارامتر بعدی مربوط به ابعاد تصویر است و آرگومان نام آرایه ای است که برای تصویر تصویر تبدیل شده استفاده کردیم.

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

ساعد

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


− 1 = چهار