راه اندازی LCD متنی با استفاده از Arduino

قسمت 60
راه اندازی LCD متنی با استفاده از Arduino
مشاهده سایر جلسات آموزش
22 بازدید
۱۴۰۵-۰۷-۲۰
7 دقیقه
  • نویسنده: حسین زنجانی زاده
  • درباره نویسنده: ---

در قسمت قبل از آموزش آردوینو با کنترل دستگاه‌های خارجی توسط Arduino آشنا شدیم و دیدیم چگونه می‌توان یک دستگاه AC مجهز به ریموت کنترل را بدون اتصال مستقیم آردوینو به برق شهر کنترل کرد. همچنین در قسمت 60 آموزش آردوینو وارد فصل جدیدی می‌شویم و به سراغ یکی از پرکاربردترین تجهیزات در پروژه‌های الکترونیکی یعنی نمایشگرها می‌رویم.

در این قسمت ابتدا با نمایشگرهای LCD و LED آشنا می‌شویم و سپس نحوه راه‌اندازی LCD متنی با آردوینو را با استفاده از کتابخانه LiquidCrystal بررسی می‌کنیم.

آشنایی با نمایشگرها در آردوینو

نمایشگرهای کریستال مایع یا LCD و نمایشگرهای LED راهی ساده، کاربردی و نسبتاً ارزان برای ایجاد رابط کاربری در پروژه‌های Arduino هستند. با استفاده از این نمایشگرها می‌توان اطلاعات مختلفی مانند مقادیر سنسورها، وضعیت سیستم، پیام‌ها، اعداد و داده‌های پردازش‌شده توسط Arduino را مستقیماً به کاربر نمایش داد. در این فصل از آموزش، نحوه اتصال و استفاده از نمایشگرهای متنی و گرافیکی LCD و LED بررسی می‌شود.

LCD متنی HD44780 چیست؟

یکی از رایج‌ترین نمایشگرهای متنی مورد استفاده در پروژه‌های Arduino، نمایشگرهایی هستند که بر پایه کنترلر Hitachi HD44780 یا کنترلرهای سازگار با آن ساخته شده‌اند. این نمایشگرها معمولاً دارای دو یا چهار سطر هستند و در هر سطر می‌توانند 16 یا 20 کاراکتر نمایش دهند. مدل‌هایی با 32 یا 40 کاراکتر در هر سطر نیز وجود دارند، اما معمولاً قیمت بیشتری دارند.

Arduino به‌صورت پیش‌فرض کتابخانه‌ای برای کنترل این نمایشگرها در اختیار ما قرار می‌دهد. با استفاده از این کتابخانه می‌توان تقریباً مشابه کاری که با Serial.print() انجام می‌دهیم، متن و اعداد را روی LCD نمایش داد. دلیل شباهت این دو روش این است که نمایشگر LCD و خروجی Serial از توابع چاپ مشابهی در Arduino استفاده می‌کنند.

LCD فقط برای نمایش متن نیست

نمایشگرهای LCD متنی علاوه بر نمایش نوشته‌های ساده قابلیت‌های دیگری نیز دارند. برای مثال می‌توان متن را روی صفحه حرکت داد، بعضی نوشته‌ها را برجسته کرد و نمادها یا کاراکترهای خاص را روی صفحه نمایش داد.

همچنین امکان ساخت کاراکترهای سفارشی و گرافیک‌های ساده بلوکی در LCDهای متنی وجود دارد. اما اگر به نمایش جزئیات گرافیکی بیشتری نیاز داشته باشید، باید از نمایشگرهای گرافیکی استفاده کنید. نمایشگرهای گرافیکی LCD که معمولاً با نام GLCD شناخته می‌شوند و نمایشگرهای LED گرافیکی نیز برای چنین کاربردهایی در دسترس هستند.

نکته مهم درباره اتصال نمایشگرهای گرافیکی

نمایشگرهای گرافیکی ممکن است نسبت به بسیاری از مدارهای Arduino سیم‌های بیشتری برای اتصال داشته باشند. به همین دلیل یکی از رایج‌ترین دلایل کارنکردن آن‌ها، اشتباه در سیم‌کشی است. هنگام اتصال چنین نمایشگرهایی بهتر است تمام سیم‌ها و پایه‌ها را با دقت بررسی کنید. استفاده از یک مولتی‌متر ساده برای بررسی ولتاژها، اتصالات و مقاومت‌ها نیز می‌تواند در پیدا کردن مشکلات سیم‌کشی بسیار مفید باشد.

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

فرض کنید یک LCD متنی بر پایه کنترلر استاندارد HD44780 یا یک کنترلر سازگار با آن دارید و می‌خواهید متن و مقادیر عددی را روی آن نمایش دهید. Arduino برای این کار کتابخانه LiquidCrystal را در اختیار ما قرار داده است. این کتابخانه برای راه‌اندازی LCDهایی که بر پایه HD44780 ساخته شده‌اند استفاده می‌شود.

نکته: بیشتر LCDهای متنی که برای Arduino عرضه می‌شوند با کنترلر HD44780 سازگار هستند. اگر درباره مدل نمایشگر خود مطمئن نیستید، دیتاشیت آن را بررسی کنید. اگر پشت LCD یک برد رابط یا Backpack نصب شده باشد، ممکن است بتوانید با تعداد سیم‌های بسیار کمتری و از طریق یک رابط سریال با آن ارتباط برقرار کنید.

اتصالات موردنیاز LCD

برای راه‌اندازی نمایشگر باید پایه‌های تغذیه، داده و کنترل LCD به Arduino متصل شوند. همچنین برای تنظیم کنتراست صفحه به یک پتانسیومتر نیاز داریم. اگر نمایشگر دارای نور پس‌زمینه یا Backlight باشد، پایه‌های نور پس‌زمینه نیز باید متصل شوند و بسته به مشخصات نمایشگر ممکن است به یک مقاومت محدودکننده جریان نیاز داشته باشند.

مدار زیر نحوه اتصال متداول یک LCD متنی به Arduino را نشان می‌دهد.

راه اندازی LCD متنی با استفاده از Arduino
شکل 60-1 – نحوه اتصال LCD متنی HD44780 به Arduino

قبل از انجام سیم‌کشی حتماً دیتاشیت LCD خود را بررسی کنید؛ زیرا محل قرارگیری یا شماره‌گذاری پایه‌ها ممکن است در برخی مدل‌ها متفاوت باشد. LCD مورد استفاده در این مثال دارای 16 پایه است. مدل‌هایی که نور پس‌زمینه ندارند معمولاً 14 پایه دارند.

جدول اتصال پایه‌های LCD به Arduino

پایه LCD وظیفه اتصال به Arduino
1 GND / Vss GND
2 +5V / Vdd 5V
3 Vo / Contrast پتانسیومتر 10K
4 RS 12
5 R/W GND
6 E 11
7 D0 بدون اتصال
8 D1 بدون اتصال
9 D2 بدون اتصال
10 D3 بدون اتصال
11 D4 5
12 D5 4
13 D6 3
14 D7 2
15 A / Anode +5V
16 K / Cathode GND

چرا پایه‌های D0 تا D3 وصل نشده‌اند؟

LCDهای مبتنی بر HD44780 را می‌توان در حالت انتقال داده 4 بیتی یا 8 بیتی استفاده کرد. در این آموزش از حالت 4 بیتی استفاده می‌کنیم. در نتیجه فقط پایه‌های D4 تا D7 نمایشگر به Arduino متصل می‌شوند و پایه‌های D0 تا D3 بدون اتصال باقی می‌مانند.

مزیت این روش آن است که چهار پایه Arduino برای کاربردهای دیگر آزاد باقی می‌مانند. استفاده از حالت 8 بیتی از نظر تئوری سرعت بیشتری دارد، اما طبق توضیح کتاب این تفاوت در این کاربرد آن‌قدر قابل‌توجه نیست که استفاده از چهار پایه اضافی Arduino را توجیه کند.

تنظیم کنتراست LCD با پتانسیومتر

برای تنظیم کنتراست صفحه به یک پتانسیومتر 10 کیلو اهم نیاز داریم. یک سر پتانسیومتر به GND و سر دیگر آن به 5V متصل می‌شود. پایه وسط پتانسیومتر نیز به پایه شماره 3 LCD یعنی Vo متصل می‌شود. اگر ولتاژ مناسب به این پایه اعمال نشود، ممکن است هیچ نوشته‌ای روی LCD دیده نشود.

اتصال تغذیه LCD

برای تغذیه نمایشگر، پایه شماره 1 LCD به GND و پایه شماره 2 به 5V Arduino متصل می‌شود.

هشدار: قبل از روشن‌کردن مدار، اتصالات تغذیه LCD را دوباره بررسی کنید. اتصال اشتباه پایه‌های تغذیه می‌تواند به نمایشگر آسیب برساند.

اتصال نور پس‌زمینه LCD

بسیاری از LCDها دارای نور پس‌زمینه داخلی یا Backlight هستند. برای اینکه بدانید نور پس‌زمینه نمایشگر شما به مقاومت خارجی نیاز دارد یا خیر، باید دیتاشیت آن را بررسی کنید. بسیاری از مدل‌ها برای جلوگیری از آسیب‌دیدن LEDهای نور پس‌زمینه به مقاومت محدودکننده جریان نیاز دارند.

در مدار کتاب از یک مقاومت 220 اهم استفاده شده است. نور پس‌زمینه دارای قطب مثبت و منفی است. پایه 15 یا A آند و پایه 16 یا K کاتد نور پس‌زمینه است.

اجرای مثال Hello World روی LCD

Arduino IDE یک مثال آماده برای آزمایش LCD در کتابخانه LiquidCrystal دارد. در Arduino IDE می‌توانید از مسیر زیر به این مثال دسترسی پیدا کنید:

کد زیر نسخه‌ای از مثال Hello World است که برای یک LCD با 16 ستون و 2 سطر تنظیم شده است.

بررسی کد راه‌اندازی LCD

ابتدا کتابخانه LiquidCrystal به برنامه اضافه می‌شود:

سپس تعداد سطرها و ستون‌های نمایشگر مشخص می‌شود:

در این مثال یک LCD 16×2 داریم؛ یعنی نمایشگر دارای دو سطر و 16 کاراکتر در هر سطر است.

معرفی پایه‌های LCD به کتابخانه LiquidCrystal

در خط زیر مشخص می‌کنیم که پایه‌های کنترلی و داده LCD به کدام پایه‌های Arduino متصل شده‌اند:

مطابق مدار، پایه‌های RS و E و همچنین چهار خط داده D4 تا D7 به Arduino متصل شده‌اند.

راه‌اندازی نمایشگر در setup

در تابع setup() ابتدا تعداد ستون‌ها و سطرهای LCD به کتابخانه اعلام می‌شود:

سپس عبارت Hello, World! روی اولین سطر LCD نوشته می‌شود:

نمایش زمان سپری‌شده روی سطر دوم

در تابع loop() ابتدا مکان‌نما به ستون صفر و سطر دوم منتقل می‌شود:

شماره‌گذاری سطرها و ستون‌ها در کتابخانه از صفر شروع می‌شود. بنابراین سطر شماره 1 در واقع دومین سطر LCD است. سپس تعداد ثانیه‌های سپری‌شده از زمان اجرای برنامه روی LCD چاپ می‌شود:

تابع millis() مدت‌زمان سپری‌شده از شروع برنامه را بر حسب میلی‌ثانیه برمی‌گرداند. با تقسیم این مقدار بر 1000، زمان بر حسب ثانیه نمایش داده می‌شود.

خروجی برنامه روی LCD

بعد از اجرای برنامه باید عبارت Hello, World! را روی سطر اول LCD مشاهده کنید. در سطر دوم نیز عددی نمایش داده می‌شود که تقریباً هر یک ثانیه یک واحد افزایش پیدا می‌کند.

اگر چیزی روی LCD نمایش داده نشد چه کنیم؟

اگر سیم‌کشی را بررسی کرده‌اید اما هنوز هیچ متنی روی نمایشگر دیده نمی‌شود، اولین موردی که باید بررسی کنید تنظیم کنتراست است. پتانسیومتر را به‌آرامی بچرخانید. در یک سمت معمولاً کنتراست به بیشترین مقدار می‌رسد و باید بلوک‌های مربوط به موقعیت کاراکترها روی نمایشگر دیده شوند. در سمت دیگر ممکن است صفحه کاملاً خالی به نظر برسد.

مقدار مناسب کنتراست می‌تواند به عواملی مانند زاویه دید و دمای محیط وابسته باشد؛ بنابراین پتانسیومتر را تا رسیدن به بهترین حالت تنظیم کنید. اگر در هیچ حالتی حتی بلوک‌های پیکسلی نیز ظاهر نشدند، اتصالات و پایه‌هایی را که LCD از طریق آن‌ها کنترل می‌شود دوباره بررسی کنید.

کتاب تأکید می‌کند که بسیاری از مشکلات LCDها ناشی از اتصال اشتباه یا لحیم‌کاری نامناسب سیم‌ها و هدرها است.

جمع بندی

در قسمت 60 آموزش آردوینو وارد فصل نمایشگرها شدیم و با LCDهای متنی مبتنی بر کنترلر HD44780 آشنا شدیم. دیدیم که چگونه نمایشگر را در حالت 4 بیتی به Arduino متصل کنیم، کنتراست آن را با یک پتانسیومتر 10K تنظیم کنیم و با استفاده از کتابخانه LiquidCrystal متن و اعداد را روی LCD نمایش دهیم.

همچنین مثال Hello World را بررسی کردیم که عبارت ثابت را روی سطر اول و تعداد ثانیه‌های سپری‌شده را روی سطر دوم نمایش می‌دهد. در قسمت بعدی آموزش، به سراغ قالب‌بندی متن و تعیین محل نمایش نوشته‌ها روی LCD خواهیم رفت.

اطلاعات
22
0
0
اشتراک و حمایت
جلسات دیگر
آردوینو

هک‌کردن یک ریموت کنترل بی‌سیم و کنترل دستگاه‌های...

profile نویسنده: حسین زنجانی زاده متخصص الکترونیک

مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

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

ارسال مقاله
become a writer
نویسنده شو !

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

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

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

ارسال مقاله
become a writer
نویسنده شو !

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

ارسال مقاله