پروژه راه اندازی LCD نوکیا 5110 با آردوینو

LCD نوکیا 5110 با آردوینو

پروژه راه اندازی LCD نوکیا 5110 با آردوینو

در این آموزش قراره پروژه ی راه اندازی LCD نوکیا 5110 با آردوینو رو آموزش بدیم که یک سری تصویر و کاراکتر روی lcd نمایش میدیم و با معرفی کتابخونه ، دستورات این lcd رو معرفی میکنیم و با نحوه اتصال پایه های lcd nokia 5110 به آردوینو هم آشنا میشیم.

ما برای استفاده از این آی سی از کتابخونه ی سایت adafruit استفاده میکنیم که و باید برای تعیین پایه های lcd برای آردوینو از تابع زیر استفاده کنیم:

دانلود کتابخانه LCD 5110:

برای راه اندازی این lcd به 3 کتابخونه نیاز داریم ، یکی spi که دیفالت روی نرم افزار آردوینو وجود داره و 2 کتابخونه ی زیر که بهتره از لینک زیر و از وبسایت github کتابخانه رو دانلود کنین تا اخرین ورژن اون رو داشته باشین.

دانلود کتابخانه Nokia 5110

و کتابخونه راه اندازی گرافیکی :

GFX Library

 

اسم display هم در تابع بالا ، درواقع کلاسیه که تعریف میکنیم و بقیه دستور هارو باید با display معرفی کنیم ، مثل تابع begin:

 

توابع کتابخانه  LCD نوکیا 5110 در آردوینو

تابع رسم خط

x0 و y0 : مختصات x و y ابتدای خط

x1 وy1 : مختصات x و y انتهای خط

Color : رنگ خط، BLACK یا WHITE میتونه بگیره

 ورودی Color  همیشه به همین شکله ، پس روی دستورات پایین تکرار نمیکنم که 2 حالت داره فقط 😉

تابع رسم نقطه

 

x و  y : مختصات نقطه

تابع رسم مستطیل تو خالی

 

x و y : مختصات نقطه بالا و گوشه سمت چپ مربع یا مستطیل

w : طول

h : عرض(ارتفاع)

تابع رسم مستطیل تو پر

 

x و y : مختصات نقطه بالا و گوشه سمت چپ مربع یا مستطیل

w : طول

h : عرض(ارتفاع)

تابع رسم دایره تو خالی

x و y : مختصات مرکز دایره

r : شعاع دایره

تابع رسم دایره تو پر

x و y : مختصات مرکز دایره

r : شعاع دایره

تابع  رسم مثلث تو خالی

x0 و y0 : مختصات راس اول مثلت

x1 و y1 : مختصات راس دوم مثلت

x2 و y2 : مختصات راس سوم مثلت

تابع رسم مثلث تو پر

x0 و y0 : مختصات راس اول مثلت

x1 و y1 : مختصات راس دوم مثلت

x2 و y2 : مختصات راس سوم مثلت

تابع رسم مربع با گوشه های گرد شده

 

x و y : مختصات نقطه بالا و گوشه سمت چپ مربع یا مستطیل

w : طول

h : عرض(ارتفاع)

radius برای تعیین میزان گردی گوشه های مربع

تابع رسم یه مربع تو پر با گوشه های گرد شده

 

x و y : مختصات نقطه بالا و گوشه سمت چپ مربع یا مستطیل

w : طول

h : عرض(ارتفاع)

radius برای تعیین میزان گردی گوشه های مربع

 

تابع تعیین اندازه متن

s : اندازه متن (0 تا 5)

 

تابع تعیین موقعیت مکان نما

x و y : مختصات مد نظر

تابع تعیین رنگ متن

c : رنگ متن

تابع تعیین رنگ متن و پس زمینه متن

c : رنگ متن

bg : رنگ پیش(پس!) زمینه متن

تابع تعیین نحوه نمایش اطلاعات(چرخش)

0 : بالا به پایین

1 : چپ به راست

2 : پایین به بالا

3 : راست به چپ

تابع نمایش متن و رفتن به خط بعدی

توضیح میخواد واقعا ؟ 😀

تابع نمایش متن

این هم؟ 😀

تابع نمایش تک کاراکتر

بجای عدد 70 میتونید کد اسکی کاراکتر مورد نظرتون رو بنویسین.

تابع نمایش  تصویر

x , y : مختصات شروع نمایش عکس(مختصات نقطه گوشه سمت چپ بالای عکس)

W : طول عکس

H : عرض(ارتفاع) عکس

 

تابع پاک کردن اطلاعات از صفحه نمایش

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

 

حالا با توجه به این تابع ها 2 پروژه زیر رو میبندیم :

پروژه LCD نوکیا 5110 با آردوینو

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

 

 

سعی کردم کد رو خیلی ساده بنویسم تا مبتدی ها هم به مشکل نخورن ، در بعد از استفاده از هر تابع یک تابع تاخیر و دستور پاک کردن lcd اومده که اگر میخواین کدتون حرفه ای تر بنظر برسه و مرتب تر باشه میتونین اون کد هارو یک تابع تعریف کنین و هر دفعه بجای 3 خط کد ، اون تابع رو صدا بزنین.

پروژه نمایش تصویر LCD نوکیا 5110 با آردوینو

برای نمایش تصویر باید یک تصویر رو در سایز 88*44 داشته باشین یا ضریبی از این سایز و اون رو با نرم افزار paint با فرمت BMP ذخیره کنین.

سپس اون رو در نرم افزار زیر باز کنین:

LCD Assistant

اگر تصویرتون عمودیه در نرم افزار گزینه Vertical رو انتخاب کنین و در صورتی که افقیه گزینه ی Horizontal رو انتخاب کنین.

horizontal-bmp-for-lcd-nokia-5110

تصاویر و خروجی نرم افزار کد زیر رو میتونین ازین جا دانلود کنین:

دانلود فایل ها

بعد از ذخیره کردن ، خروجی کدی هست که باید به شکل زیر در کد قرار بدین:

فیلم از نحوه کار lcd : (میزم خیلی نا مرتب بود ، ببخشید برای فیلم برداری بد 😀 )

 

 

آموزش راه اندازی LCD نوکیا 5110 جلسه اول به پایان رسید ، در جلسه آینده کد هارو حرفه ای تر میزنیم و  این lcd رو با آی سی لاجیک کانورتر طراحی میکنیم ، بدون این آی سی تصویر برای مدت های طولانی پایدار نیست و برای کاربرد غیر آزمایشگاهی خیلی مناسب نیست (که خیلی از سایت های فارسی اصلا این رو ذکر نکردن در آموزش هاشون!)

پس جلسه دوم رو هم از دست ندین!

آرزوی موفقیت برای همه 🙂

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

مطالب مرتبط

18 دیدگاه‌

  1. جواد گفت:

    سلام
    در پی سوالات گذشته درمورد فارسی نویسی:
    نظرتون در مورد کدنویسی اردوینو در کدویژن و پروگرام کردن اردوینو توسط این نرم افزار چیه؟
    فکر می کنم با کد ویژن میشه روی فارسی نویسی کار کرد
    چون کتاب خانه هاش موجود هست
    راستی یه سوال دیگم در رابطه با اتصال locgic levelconverterدوکاناله به ال سی دی
    همینی که اموزششو گذاشتین
    ببخشید ولی من نفهمیدم کدوم پایه اردوینو و کدوم پایه ال سی دی هش وصل میشه

    • سلام .
      اینم یک راه هست که میتونین امتحان کنین ، ولی خب ممکنه یک نفر کدویژن بلد نباشه…

      +چون گفتم شکل پایه ها در lcd متفاوته متوجه نشدین احتمالا. توی شکل مدار lcd 5110 نیست و lcd 3110 استفاده شده ، تفاوتی باهم در چیپست ندارن ، فقط پایه های 3310 طبق توضیح زیر تصویره .یعنی باید به این نکته توجه کنین که ترتیب پایه های lcd در 5110 تفاوت داره.

  2. ramin گفت:

    بخشید .ایا تابعی است که برای نوشتن متن(از نظر کمرنگی یا پر رنگی)داشته باشه؟
    ممنون

    • سلام! یعنی میخاین با چند کنتراست بنویسین؟
      برای تغییر کلی کنتراست چند خط توی کتابخونه هست ک میشه تغییرش داد ولی همزمان ۲نوع کنتراست داشتن شدنی نیست!

  3. جواد گفت:

    سلام
    من فکر کردم که باید برای فارسی نویسی متن فارسی رو تبدیل به کد هگز کرد واون رو توی دستورprintln(“کد هگز متن فارسی ”)قرارداد آیا درست فکر کردم؟
    این کار رو انجام دادم ولی نمایشگر عینا حروف هگز رو نمایش داد( به طور مثال: میخوام عبارت به نام خدا رو نمایش بدم کدهگزش هست=>d8-a8-d9-87-20-d9-86-d8-a7-d9-85-20-d8-ae-d8-af-d8-a7-)
    نمایشگر همین کد رو عینا نمایش داد
    نمی دونم چی کار کنم کل پروژه گیر همین متن فارسیه
    اگه بخوام از عکس استفاده کنم هم به دلایلی مطلوب برای پروژه نیست
    کتاب خانه ای چیزی نداره که فارسی رو بشناسه؟
    همین الان وقتی تو دستور println(“Matn”)متن فارسی مینویسم به صورت حروف نمدونم چینیه ژاپنیه خط خطیه نمایش میده خخخ
    print(“Matn”) هم همین جوریه
    میدونم سرتون شلوغه ولی ممنون میشم اگه راهنماییم کنین

    • سلام.همه چیو تست کردی 😀 فکر میکنم منظورم رو بد رسوندم . منظورم از همون کد های هگز تبدیل عکس به تابع ای از کد های هگز بود.
      غیر از استفاده از تصویر فقط یک راه وجود داره(شاید راه دیگه ای هم وجود داره که من اشنا نباشم) اونم استفاده از متغیر های String هستش. یادمه این کارو با Avr انجام میدادم و راحت میشد فارسی نمایش داد اما متاسفانه الان نمیتونم برای آردوینو تستش کنم..
      این کتابخونه رو تست کن:
      https://github.com/arduino/Arduino/issues/5724

      از صحت عملکرد کتابخونه خبر ندارم ، امیدوارم جواب بده ؛ اگه نده کتابخونه ی مشابه در Avr وجود داره ، باید مشابه همون برای آردوینو نوشته بشه.

  4. YYYYYXX گفت:

    با سلام و تشکر . من کدی که شما(کد نمایش تصویر)که گذاشته بودید را اپلود کردم و مشکلی نداشت.اما وقتی میخواهم عکس مورد نظر خودم را نشان دهم,عکسی نقطه ای یا همان دون دونی می اید.مشکل این چیه؟ با تشکر

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

  5. جواد گفت:

    سلام
    من درحال ساخت پروژه هستم
    میشه بفرمایید تابع فارسی نویسیش چه طور هست؟؟
    خسته نباشید

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

  6. جواد گفت:

    سلام
    اگه بخوایم از بورد اردوینو نانو استفاده کنیم کدوم بایه ها رو باید به ال سی دی متصل کنیم؟
    ممنونم اگه جواب بدید

    • سلام.
      تفاوتی نداره
      مثل Uno
      طبق آموزش باید با پایه های دیجیتال کارکنین و با دستور
      Adafruit_PCD8544();
      مشخص کنین lcd به کدوم پایه ها متصل شده.

  7. یزدان گفت:

    خیلی متشکر از شما .واقعا از شما متشکرم.مشکل حل شد اما متاسفانه مینویسد که برد من (اردینوUNO) حافظه کافی ندارد اما برنامه بی نقص بود.

    • خواهش میکنم.
      اونو نمیشه کاریش کرد دیگه !اگه امکان داره باید حجم برنامتون رو کم کنین یا از حافظه جانبی یا برد دیگه استفاده کنین.
      موفق باشین

  8. یزدان گفت:

    با سلام و تشکر . بسیار عالی و واضح بود ولی برنامه این ارور را میدهد:Arduino: 1.8.4 (Windows 10), Board: “Arduino/Genuino Uno”

    Error compiling for board Arduino/Genuino Uno.

    در ضمن تمام کتابخانه هایی که گذاشته بودید را بطور کامل نصب کردم.
    با تشکر.

    • سلام ، خواهش میکنم.
      متن ارور کامل نیست فکر میکنم.
      لینک کتابخونه هارو توی مطلب تغییر دادم. ان شا ا.. مشکلتون حل میشه. تست کردم مشکل نداشت 🙂

  9. raghb گفت:

    بسیار جامع بود ممنون