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

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

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

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

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

تبلیغات
آخرین نظرات

۱ مطلب با کلمه‌ی کلیدی «آموزش جامع کار با lcd کاراکتری در ARDUINO» ثبت شده است

آموزش جامع کار با lcd کاراکتری در ARDUINO

ShahBaz | جمعه, ۱۹ شهریور ۱۳۹۵، ۰۸:۳۱ ب.ظ

به نام خدا

http://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-lcd-%da%a9%d8%a7%d8%b1%d8%a7%da%a9%d8%aa%d8%b1%db%8c-%d8%af%d8%b1-arduino/

آموزش جامع کار با lcd کاراکتری در ARDUINO : سلام خدمت شما دوستان گل ، تو این مطلب از آموزش آردوینو  میخوام نحوه راه اندازی lcd کاراکتری با آردوینو(آردینو) یه سری توضیحات بدم ، که من از سایت ARDUINO یادش گرفتم و دارم اینجا براتون آموزش میدم و چند تا پروژه آردوینو براتون میزارم(پروژه که نمیشه اسمش رو گزاشت ولی…بگذریم)

آموزش جامع کار با lcd کاراکتری در ARDUINO

کتابخانه lcd کاراکتری برای ARDUINO

این کتاب خونه ۲۰ تا تابع داره که در زیر میبینید ، و در زیر اینا توضیحشون میدم laugh

lcd.LiquidCrystal
lcd.begin
lcd.clear
lcd.home
lcd.setCursor
lcd.write
lcd.print
lcd.cursor
lcd.noCursor
lcd.blink

lcd.noBlink
lcd.display
lcd.noDisplay
lcd.scrollDisplayLeft
lcd.scrollDisplayRight
lcd.autoscroll
lcd.noAutoscroll
lcd.leftToRight
lcd.rightToLeft
lcd.createChar

 

LiquidCrystal Library

در اینجا میخوام تک تک توابع رو براتون بگم…

 

lcd.LiquidCrystal

lcd.LiquidCrystal : این تابع کارش تعیین اتصالات هستش ، یعنی این که هر کدوم از پایه های lcd کاراکتری ما به کدوم یک از پایه های برد آردوینو مون وصل هستش.

همچنین میتونیم توسط این تابع میتونیم تعیین کنیم که lcd رو تو مد ۴ بیتی راه اندازی کنیم یا ۸ بیتی.

 

سوال : داستان ۴ و ۸ بیتی چیه؟

جواب :  lcd کاراکتری رو اگه دیده باشین حدود ۱۶ تا پایه داره که از این ۱۶ تا ۸ تاشون پایه دیتا هستن ، به نام D0 تا D7 که اگه از D4 تا D7 (که میشه ۴ تا پایه) استفاده کنی میگن LCD رو تو مد ۴ بیتی راه اندازی کردی و اگه از هر ۸ تا پایه (D0 تا D7) استفاده کنیم میگن که LCD رو تو مد ۸ بیتی راه اندازی کردی

و با توجه به این که تو مد ۸ بیتی نسبت به مد ۴ بیتی به ۴ تا پایه بیشتر نیاز دارم تا به LCD اطلاعات رو بدیم لذا تو تمون پروژه ها LCD رو تو مد ۴ بیتی راه اندازی میکنن تا پایه کمتری از برد آردوینو مون مصرف بشه. lcd کاراکتری با ARDUINO

 

میگفتم ، این تابع lcd.LiquidCrystal رو میشه به ۴ حالت نوشت ، که در زیر میبینید۲ تای اول برا مد ۴ بیتی و ۲ تای آخر برا مد ۸ بیتی هستش.

به جای d0 , d1 , d2 , d3 , d4 , d5 , d6 ,d7 , enable , rw , rs باید عدد پایه مورد نظر از برد آردوینو رو قرار بدید ، مثلا به جای rs بنویسید ۵ که یعنی پایه شماره ۵ برد آردوینو باید به پایه rs نمایشگر مون (همون lcd منظورمه blum ) وصل بشه…. ok???

 

سوال : مثلا تو مد ۴ بیتی فرق مورد اول با دومی چیه؟؟؟
جواب : اگه توجه کنید مورد اول گزینه rw رو نداره ، یعنی ما باید پایه rw نمایشگر مون رو مستقیما به gnd وصل کنیم و دیگه نیازی نیست به یکی از پایه های برد آردوینو مون وصل کنیم و یه پایه رو اشتغال کنیم الکی (البته تو اکثر پروژه ها باس به زمین وصل بشه چون این پایه برا تعیین مد خوندن اطلاعات از نمایشگر یا نوشتن اطلاعات هستش که اگه به gnd وصل بشه یعنی lcd تو مد نوشتن هستش و ما میتونیم توش اطلاعاتمون رو بنویسیم و نمایش بدیم ، زیاد با مد خوندن اطلاعات کاری نداریم ما ، به همین خاطره که اگه مستقیم این پایه رو به gnd وصل کنیم بهتره و دیگه ۱ پایه از بردمون الکی اشغال نمیشه)

ولی اگه از حالت دومی(کد های بالا رو میگم) بخوایم استفاده کنیم باید پایه rw رو هم به آردوینو وصل کنیم و نمیتونیم دیگه به gnd وصلش کنیم.

که این داستان برا مد ۸ بیتی هم به همین منوال هستش.

نتیجه : بهتره که همیشه از راه اندازی lcd به صورت ۴ بیتی استفاده کنیم و از اون تابعی استفاده کنیم که گزینه rw رو نداره ، یعنی همیشه از کد زیر استفاده کنیم.

 

lcd.begin

lcd.begin : این تابع برا راه اندازی lcd مون هستش ، به وسیله این تابع اندازه lcd مون رو به آردوینو میگیم ، اینم بگم که این کتاب خونه میشه تمام lcd هایی که درایورشون(اون هسته مرکزی crazy رو میگم) hitachi HD44780 هستش رو راه اندازی کرد. و lcd هایی که درایورشون hitachi HD44780 هستش ماشاالله یکی دو تا نیستن که ، اندازه این lcd ها با هم فرق داره ، حالا ما هر کدوم رو که بخوایم راه اندازی کنیم اندازش رو مثل تابع زیر مینویسیم و تعیین میکنیم.

۱۶ یعنی تعداد ستون نمایشگر و ۲ یعنی تعداد سطر های نمایشگرمون.

اینم از این ، بریم سراغ تابع بعدی ، خدا رحم کنه ، هنوز ۱۸ تای دیگه مونده… bomb

 

lcd.clear

lcd.clear : این تابع برا پاک کردن نمایش گر هستش ، هر چی توی نمایشگر باشه پاک میشه و مکان نما به ۰،۰ میره(سطر ۰ و ستون ۰)

و به صورت زیر استفاده میشه(به صورت زیر باس بنویسیش rtfm )

 

lcd.home

lcd.home : بردن مکان نما به خانه crazy  >>> منظور از خانه همون سطر ۰ و ستون ۰ هستش ، وقتی lcd رو هم ریست میکنی مکان نما میرو خونه و هم وقتی که lcd رو به مبنع تغزیه وصل میکنی.

توجه : میشه گفت این تابع همون کار تابع زیر رو انجام میده(این تابع رو در زیر توضیح دادم که چیهblum)

 

lcd.setCursor

lcd.setCursor : این تابع کارش تعیین موقعیت نمایش گر برا نمایش اطلاعات هستش که به صورت زیر هستش ؛ که X ستون مورد نظر و Y هم سطر مورد نظر ما هستش ، وقتی بخوایم متنمون رو در یه جای خاص از LCD نشون بدیم از این تابع استفاد میکنیم.

مثلا وقتی یه متنی بخوایم به وسیله تابع lcd.print (در ادامه توضیحش میدم) تو LCD نمایش بدیم اگه قبلش از lcd.setCursor استفاده کرده باشیم و مثلا مختصات ۷,۰ (ستون ۷ و سطر ۰ ) رو داده باشیم ، متنمون از این مختصات شروع میکنه به نمایش داده شدن.

 

lcd.write

lcd.write : این تابع برا نمایش یه تک کاراکتر به کار میره (تک کاراکتر یعنی ۱ حرف ، مثلا  A یا c یا $ یا !   که هر کدوم از اینا یه دونه کاراکتر هستن)

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

 

lcd.print

lcd.print : نمایش یه رشته ، مثلا برا نمایش DMF313.IR تو LCD از این تابع به صورت زیر استفاده میکنیم

 

lcd.cursor و lcd.noCursor

lcd.cursor  و  lcd.noCursor : تابع lcd.cursor برا فعال کردن مکان نما هستش(وقتی از این تابع استفاده کنید مکانی که منتظر دریافت اطلاعات هستش و اگه اطلاعاتی به LCD داده بشه در اون مکان نمایش داده میشه توسط یه خط تیره تو LCD مشخص میشه برامون) و lcd.noCursor هم برا غیر فعال کردن این ویژگی(نماش مکان نما) هستش.

مثال برای این دو تابع

 

lcd.blink و lcd.noBlink

lcd.blink  و  lcd.noBlink : این دو تا تابع هم مثل دو تا تابع بالایی هستن با این تفاوت که تابع بالایی مکان نما رو با یه خط تیره نشون میداد و این توابع با یه مستطل که هی چشمک میزنده نمایش میده.

مثال برای این دو تابع

 

lcd.display و lcd.noDisplay

lcd.display  و  lcd.noDisplay : این دو تا تابع هم برا روشن و خاموش شدن نمایش اطلاعات روی LCD به کار میره.

مثلا در صورت استفاده از تابع lcd.display اطلاعات روی نمایشگر پنهان میشوند(پاک نمیشوند و از بین نمیروند.) برخلاف تابع lcd.clear که میزد هر چی تو LCD بود رو پاک میکرد ، این تابع lcd.display فقط اطلاعات رو غیب میکنه(انگار که هیچی تو LCD نیست) فقط همین و توسط تابع lcd.noDisplay دوباره میتونیم اطلاعات رو نمایش بدیم.

مثال برای این دو تابع

 

lcd.scrollDisplayLeft و lcd.scrollDisplayRight

lcd.scrollDisplayRight : هر بار که این تابع اجرا بشه کل اطلاعات روی نمایشگر یه واحد به سمت راست شیفت داده میشن(یعنی ۱ واحد میرن سمت راست crazy ).

lcd.scrollDisplayLeft : هر بار که این تابع اجرا بشه کل اطلاعات روی نمایشگر یه واحد به سمت چپ شیفت داده میشن.

مثال برای این دو تابع

 

lcd.leftToRight و lcd.rightToLeft

lcd.leftToRight : چپ به راست کردن نوشتن متن ها

lcd.rightToLeft : راست به چپ کردن نوشتن متن ها

توجه : تو حالت عادی متن ها توی lcd به همین طریق نوشته میشوند یعتی عنگام نمایش متن روی نمایشگر از سمت چپ به سمت راست حرکت میکنیم یعنی از ستون ۰ میریم به سمت ستون آخر یعنی ستون ۱۵ ولی تو تابع lcd.rightToLeft از سمت راست میریم به سمت چپ یعنی از آخرین خونه به سمت خونه ۰ حرکت مینیم و اگه مثلا متنی بخوایم بنویسیم از ستون ۱۵ شروع به نمایش دادن میشه به سمت ستون ۰ نمایشگرمون

 

lcd.autoscroll و lcd.noAutoscroll

lcd.autoscroll و lcd.noAutoscroll : این دو تابع هم برا حرکت(و عدم حرکت) خود کار متن هستش که تقریبا مثل ۲ تابع lcd.scrollDisplayLeft
lcd.scrollDisplayRight هستش.

وقتی از تابع lcd.autoscroll استفاده کنیم (و بازم وقتی تابع lcd.leftToRight فعال باشه که تو حالت عادی فعال هستش مگه این که تغیرش بدین) تو این حالت اگه بخواین یه متنی نشون بدیدن در یه مکان خاص…از اون مکان خاص شروع به حرکت میکنه و به سمت چپ میره( و وقتی تابع lcd.rightToLeft فعال باشه متن به سمت راست میره) >>> برا این گزینه به پروژه ای که در ته مطلب گزاشتم حتما توجه کنید….اون قسمت از پروژه که از این ۲ تا تابع استفاده کردم رو منظورمه smile

 

 

lcd.createChar

تو lcd های کاراکتری میشه ۸ تا کاراکتری جدید تعریف کرد ، که روال کار این طوریه که یه آرایه تعریف میکنیم که شامل اطلاعات کاراکترمون هستش(کاراکترمون رو یه ماتریس ۵*۸ در نظر بگیرید که ۵ تا ستون و ۸ تا سطر داره حالا باید تو این آرایه مون ۸ تا مقدار بهش بدیم…..اون خونه هایی از این ماتریس که قراره روشن بشه رو ۱ فرض میکنیم و بقیه رو صفر اون وقت میایم و آرایمون رو ایجاد میکنیم)

سوال : آرایه رو چطور مقدار دهی کردی؟؟؟

جواب : ابتدا نرم افزار زیر رو دانلود کنید و سپس کاراکترتون رو طراحی کنید (در قسمت آبی رنگ) سپس روی دکمه ی “دریافت کد” کلیک کنید و کد هایی رو که بهتون میده رو تو پروژه استفاده کنید(فقط اون عدد های داخل پرانتز رو کپی کنید.)

ساخت کاراکتر در lcd

دانلود نرم افزار تولید کد برای ایجاد کاراکتر جدید در lcd

 

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

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

که اون عدد صفر شماره کاراکتر تعریف شده توسط ما هستش.(۸ تا کاراکتر میتونیم تعریف کنیم که مقادیر ۰ تا ۷ رو بهشون باید اختصاص بدیم)

 

توجه : تو پروتئوس مثل این که خونه های lcd اندازشون ۵*۷ هستش ولی تو عمل که من تست کردم نمایشگرم اندازش ۵*۸ بود.(عگس زیر رو ببینید)

LiquidCrystal Library

مثال برای این تابع

 

 

پروژه آردوینو

پروژه های سایت Arduino.cc

LiquidCrystal Library

  • Hello World: Displays “hello world!” and the seconds since reset.
  • Blink: Control of the block-style cursor.
  • Cursor: Control of the underscore-style cursor.
  • Display: Quickly blank the display without losing what’s on it.
  • TextDirection: Control which way text flows from the cursor.
  • Scroll: Scroll text left and right.
  • Serial input: Accepts serial input, displays it.
  • SetCursor: Set the cursor position.
  • Autoscroll: Shift text right and left.

 

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

به نظرم بهتره حداقل یه بار کد های پروژه رو در عمل یا در پروتئوس عملکردشون رو بیبنید تا با توابع بهتر آشنا بشید….پروژه رو از ته همین قسمت میتونید دانلود کنید.

شماتیک پروژه

پروژه lcd با Arduino

 

کد های پروژه

 

دانلود پروژه این قسمت

 

اینم یه عکس از مدار که در عمل بستم

پروژه آردوینو

 

فیلم پروژه

فیلمش چیز خاصی نداره ، اگه پروژه رو تو پروتئوس اجرا کنید همون چیزی رو میبینید که تو فیلم هست….گزاشتم که گزاشته باشم rofl

 

 

 

قابل توجه بعضیا : برادران copy_paste لطفا اگه مطلب رو کپی میکنن منبعش رو هم بگن ، جان داداش نه باعث کسر شان میشه و نه کسی بابت این کارت بهت چیزی جایزه میده (دیدم که بعضا ها مطالبم رو کپی میکنن که دارم این حرف رو میزنم)

قابل توجا اونایی که وقت ندارن : دادا نظر ندی یه وقت ، میگن گناه داره ، اونم از نوع کبیره ، از ما گفتن بود. dash

سوالات : دوستان حتما سوالاشون رو بپرسن ، ما هم حتما در حد توانمون سعی میکنیم جواب بدیم.

توجه : انشاالله اگه عمری باشه در آینده پروژه هایی با LCD با aRDUINO براتون میزارم….

فعلا یا علی


دیگر اموزش ها

http://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-lcd-%da%a9%d8%a7%d8%b1%d8%a7%da%a9%d8%aa%d8%b1%db%8c/

http://dmf313.ir/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%85%d8%aa%d9%86-%d9%85%d8%aa%d8%ad%d8%b1%da%a9-%d8%b1%d9%88%db%8c-lcd/

http://dmf313.ir/%d9%86%d9%88%d8%b4%d8%aa%d9%86-%d9%85%d8%aa%d9%86-%d9%81%d8%a7%d8%b1%d8%b3%db%8c-%d8%af%d8%b1-lcd-%d9%87%d8%a7%db%8c-%da%a9%d8%a7%d8%b1%d8%a7%da%a9%d8%aa%d8%b1%db%8c/

http://dmf313.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%b4%d9%85%d8%a7%d8%b1%d9%86%d8%af%d9%87-%d8%b9%d8%af%d8%af-%d8%af%d8%b1-lcd/

http://dmf313.ir/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d8%b9%d8%af%d8%af-%d8%af%d8%b1-lcd-%d8%a8%d8%a7-%d8%b5%d9%81%d8%ad%d9%87-%da%a9%d9%84%db%8c%d8%af/

http://dmf313.ir/%d9%86%d9%85%d8%a7%db%8c%d8%b4-%d9%85%d8%aa%d9%86-%d8%af%d8%b1-lcd/

  • ShahBaz