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

آموزش اتصال LCD کاراکتری به آردوینو

سلام. آموزش جامع اتصال LCD کاراکتری به برد آردوینو (ایجاد متن متحرک در ال سی دی) را آماده کردیم.

آموزش اتصال ال سی دی کاراکتری به برد Arduino Uno

برای برقراری ارتباط بین انسان و دنیای ماشین ها ، نمایشگر ها نقش مهمی را ایفا میکنند. نمایشگر های بزرگ یا کوچک یا … با یک اصل کار میکنند. نمایشگر ال سی دی کاراکتری 16*1 دارای یک ردیف با 16 ستون است که میتوان در هر ستون آن یک کاراکتر قرار داد. ما در پروژه های آردوینو اغلب از ال سی دی کاراکتری 16*2 استفاده میکنیم که به ما اجازه نوشتن 32 کاراکتری را میدهد. هر کاراکتر 5*10=50 پیکسل دارد.

در قسمت قبلی سری آموزش های آردوینو ، ما به طور کامل با نحوه کنترل سرعت موتور DC با آردوینو آشنا شدیم.

قسمت قبل : آموزش کامل کنترل سرعت موتور DC با Arduino و پتانسیومتر 

در این آموزش آردوینو میخواهیم یک ال سی دی کاراکتری 16*2 را به آردوینو Uno متصل کنیم. برخلاف میکروکنترلر ها و برد های دیگر ، اتصال برد Arduino به LCD کاراکتری بسیار ساده است. در برد های آردوینو نیازی نیست که نگران ارسال و دریافت اطلاعات باشیم. ما فقط باید پین های LCD را تغریف کنیم و بقیه کار ها توسط Arduino انجام میشود.

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

ما این آموزش را نیز با استفاده از یک پروژه انجام میدهیم. قطعات مورد نیاز ، توضیحات مدار ، و سورس آردوینو به ترتیب در پایین قرار گرفته اند.

قطعات مورد نیاز برای این آموزش Arduino

برای اجرای این آموزش نیاز به یک سری قطعات داریم.

  1. برد آردوینو Uno
  2. منبع تغذیه 5 ولت
  3. ال سی دی کاراکتری 16*2
  4. خازن 100uf
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

مدار اتصال LCD به آردوینو

در صورت وجود بک لایت، در ال سی دی کاراکتری 16*2 ، 16 پین وجود دارد. و در صورت عدم وجود بک لایک 14 پین وجود خواهد داشت. در این پین ها ، 8 پین داده هستند که با D0 تا D7 مشخص میشوند. 2 پین برای تغذیه هستند که با GND , +5 یا VDD , VSS و یا 1 , 2 مشخص میشوند. پین 3 برای کنترل کنتراست است. همچنین 3 پین RS , RW و E برای کنترل هستند.

توضیحات مدار اتصال LCD به آردوینو

به تصویر مدار دقت کنید. ما فقط 2 پین را برای کنترل در نظر گرفته ایم زیرا پین کنتراست و RW اغلب استفاده نمیشوند. بنابراین میتوان آن ها را به GND متصل کرد.ما فقط باید پین E , RS را کنترل کنیم تا کاراکتر ها و داده ها را براساس آن ارسال کنیم.

مطلب پیشنهادی:  دستورات switch ... case در کد های آردوینو

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

  • PIN1 یا VSS به زمین GND متصل میشود.
  • PIN2 یا VDD یا VCC به +5 ولت متصل میشود.
  • PIN3 یا VEE به GND متصل میشود.
  • PIN4 یا RS به PIN0 آردوینو UNO متصل میشود.
  • PIN5 یا RW به GND متصل میشود.
  • PIN6 یا E  به PIN1 آردوینو UNO متصل میشود.
  • PIN11 یا D4 به PIN8 آردوینو UNO
  • PIN12 یا D5 به PIN9 آردوینو UNO
  • PIN13 یا D6 به PIN10 آردوینو UNO
  • PIN14 یا D7 به PIN11 آردوینو UNO

نرم افزار Arduino به کاربر اجازه میدهد تا از LCD در حالت 4 بیتی استفاده کند. این نوع ارتباطات کاربر را قادر میسازد که استفاده از پین های روی برد آردوینو را کاهش دهد. به طور پیشفرض آردوینو تنظیم شده است تا در حالت 4 بیتی ارتباط برقرار کند.

پس با توجه به مطالب بالا نتیجه میگیریم که ما 6 پین ال سی دی کاراکتری را به میکروکنترلر متصل میکنیم. در این 6 پین ، 4 پین دیتا و 2 پین کنترل هستند.

کد راه اندازی LCD کاراکتری با آردوینو

در ابتدای کد ما کتابخانه LiquidCrystal.h را فراخوانی میکنیم. این کتابخانه اعمال مربوط به ال سی دی کاراکتری را برای ما انجام میدهد. در خط بعدی کد ما پین های ال سی دی کاراکتری را معرفی میکنیم.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
#include <LiquidCrystal.h>
LiquidCrystal lcd(0, 1, 8, 9, 10, 11); 
//ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN

سپس به تابع Void Setup میرسیم. در این تابع کار سختی نداریم و فقط باید تعداد ردیف ها و ستون های LCD را معرفی کنیم.

void setup()
{
lcd.begin(16, 2);
}

آموزش ایجاد متن متحرک در ال سی دی کاراکتری

حالا میرسیم به قسمت اصلی آموزش ، یعنی نمایش متن ثابت و حرکت دادن آن. همه این کارها را در تابع void loop اعمال میکنیم. توضیحات خط به خط کد را در باکس زیر بخوانید. میتوانید متن ها را تغییر بدهید یا متن های دیگری اضافه کنید.

void loop()
{
lcd.print("Irenx");//نمایش نام Irenx
lcd.setCursor(0, 1); // نمایش متن در ستون دوم
lcd.print("www.irenx.ir");//نمایش www.irenx.ir
delay(750);//به مدت 750 میلی ثانیه
lcd.scrollDisplayLeft();// دستور شیفت (متحرک) شدن متن روی نمایشگر 
lcd.setCursor(0, 0);// تنظیم مکان متن
} 

در صورت حذف کد زیر ، افکت متن متحرک حذف میشود و متن به صورت ثابت نمایش داده میشود.

lcd.scrollDisplayLeft();// دستور شیفت (متحرک) شدن متن روی نمایشگر 

کد کامل پروژه

#include <LiquidCrystal.h>
LiquidCrystal lcd(0, 1, 8, 9, 10, 11);
void setup()
{
lcd.begin(16, 2);
}
void loop()
{
lcd.print("irenx");
lcd.setCursor(0, 1);
lcd.print("www.irenx.ir");
delay(750);
lcd.scrollDisplayLeft();
lcd.setCursor(0, 0);
}

قسمت بعد : نحوه استفاده از شیفت رجیستر در آردوینو

4.3 (41 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

31 نظر

  1. سلام این ایمیل من است اگر کسی در راه اندازی آردوینو مهارت دارد من یک پروژه دارم و نیاز به کمک دارم لطفا به من ایمیل بزند matinsharafat1397@gmail.com

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

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

  3. من ال سی دی و متصل میکنم همه چی درست انجام میدم ولی همه پیکسلهای ال سی دی سفید میشن و نوشته های من دیده نمیشن

    1. سلام عزیز
      احتمالا اتصالات را به درستی انجام نداده اید. بهتر هست تصویر مدار را در انجمن بگذارید تا بررسی شود.

    2. سلام برای من هم این اتفاق افتاد و من متوجه شدم که پایه ی RW را به منفی وصل نکرده بودم

  4. سلام ببخشید دوباره سوال میپرسم . چطور میشه که کاراکتر هارو روی ال سی دی پاک کنیم؟مثلا فرد یک عدد وارد کرده میخواد پاکش کنهبا زدن دکمه. ممنون میشم راهنمایی کنید.

    1. سلام عزیز
      یک شرط تعیین کنید در صورت فشردن دکمه دستور lcd.clear() اجرا شود.

  5. سلام این کد ها با پایه های 22 به بعد برای برد اردوینو مگا کار میکنه؟

  6. ممنون از شما. دوستانی که از جلو lcd براشون مربع مربع نشون داده میشه تو زاویه های دیگه نگاه کنید به lcd متن رو می بینید. برای اینکه درست بشه پایه کنتراست رو مستقیما به gnd وصل نکنید بلکه با یه مقاومت این کار رو بکنید تا تصویر بهتر نشون داده بشه.

    1. سلام.
      من نیاز به یه برنامه دارم که با اون گرم کن و سرد کن خودرو طراحی کنم.
      اگر برنامه رو بگین ممنون میشم.
      و فکر میکنم که خیلی استقبال بشه.
      با این توضیحات

      نمایش ولتاژ ورودی
      نمایش دمای تنظیم شده و دمای لحظه‌ای سنسور ۲
      تنظیم دمای یخچال با دو عدد میکرو سوییچ و سپس استارت.
      حالت سرد(دمای کمتر از ۱۵ درجه)
      تا زمانیکه دمای سنسور ۲ به دمای تنظیم شده برسد رله ۱_۲_۳ فعال.
      وقتی دمای سنسور ۲ به دمای مد نظر رسید رله ۲ غیر فعال و رله ۳ دو دقیقه بعد غیر فعال.
      در صورت اختلاف دما سنسور ۲ (بیشتر از ۵ درجه) با دمای تنظیم شده رله های ۲_۳ فعال.
      سنسور ۱ بالای ۹۰ درجه ، رله ۲ غیر فعال تا زمانیکه دمای سنسور ۱ کمتر از ۹۰ درجه شود.

      حالت گرم (دمای بالای ۳۰ درجه)
      تا زمانیکه دمای سنسور ۲ به دمای تنظیم شده برسد رله ۱_۴ فعال.
      وقتی دمای سنسور ۲ به دمای مد نظر رسید رله ۴ غیر فعال.
      در صورت اختلاف دما سنسور ۲ ( بیشتر از ۵ درجه) با دمای تنظیم شده رله ۴ فعال.
      در صورت افت ولتاژ (کمتر از ۱۰ ولت) قطع تمام رله ها و بوق هشدار و در صورت بازگشت به ولتاژ بالای ۱۰ ولت ادامه روند کار.

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

  7. با سلام

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

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

  8. سلام ؛ اگر بخوام سطر اول متنش ثابت باشه و سطر دوم متحرک باید چجوری اینکارو انجام بدم
    for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft();
    // wait a bit:
    delay(400);
    }
    این کدو که میزنم هر دو سطر متحرک میشه
    ممنون میشم راهنمایی کنید

  9. سلام جناب آقای مهندس
    اول خیلی تشکر میکنم بخاطر مطالب مفیدی که توی سایتتون گذاشتید . من که خیلی استفاده میکنم. یه سوال هم دارم و اون اینکه وقتی یک کتابخانه را فراخوانی میکنیم چطور باید ازش استفاده کنیم . یعنی اون کد دستورهایی که برای استفاده از کتابخانه تعریف شده را از کجا باید بفهمیم .چی هستن ؟

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

    1. سلام عزیز
      بعضی از کتابخانه ها سایتی برای راهنمایی دارند و بعضی دیگر رو هم در سایت آردوینو توضیحاتشون رو میتونید پیدا کنید

  10. من کد رو زدم همه چیز هم درسته اما روی ال سیدی چیزی نمینوسه با موفقیت ولی اپلود شد و فقط رو ال سی دی همون مستطیل ها هست

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

  11. سلامی دوباده
    ایا کدی هست که با ان بتوان ستون اول ال سی دی ثابت بماند ولی ستون دوم متحرک شود
    ممنون از کمکتون

  12. مقاومتی که تو عکس هست چند اهم هست
    ممنون می شم اگه کمکم کنید

    1. سلام جناب. میتونید از مقاومت 220 اهم یا 1 کیلو اهم استفاده کنید.

  13. سلام
    بخشید خازن 100μf
    کجای این پروژست چون تو تصویر مقاومت میبینیم و آیا نیاز به پتانسیومتر 10 کیلو نیست ؟

    1. سلام جناب. بله نیازی به خازن نیست. از پتانسیومتر میتونید استفاده کنید تا کنتراست متن رو تنظیم کنید.

  14. با سلام من کد کامل پروژتون رو اپلود کردم ولی چیزی نشون نمیده

    1. سلام جناب. کد صحیح هست اتصالاتتون رو بررسی بفرمایید.

  15. سلام خسته نباشیدازاینکه این مطالب را برای مایه اشتراک می‌گذارید تشکر میکنم مطالب خیلی آموزنده وباحاله من خودم تابااین برنامه آشنا شدم خیلی پیشرفت کردم بازم ممنون

    1. سلام جناب. خوشحالم که از سایت راضی هستید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *