آردوینو آردوینو Arduino Uno آموزش آردوینو نمایشگر LCD

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

Arduino-character-LCD-Display-digispark
نوشته شده توسط پریسا پوربلورچیان

در پروژه‌ها نمایش نتیجه و Result خروجی هر سنسور از اهمیت ویژه‌ای برخوردار است. بررسی وضعیت و نمایش داده‌های سنسور در هر ثانیه بسیار مهم است. از این رو نمایشگرهای مختلفی بر این اساس تولید شده‌اند که هر کدام دارای ویژگی‌های منحصر به فردی می‌باشند. از جمله نمایشگرهای کاراکتری با ابعاد مختلف، نمایشگرهای OLED ، نمایشگرهای مدل Nokia و بسیاری دیگر که آموزش‌های متنوعی در دیجی اسپارک منتشر شده است. در این بین نمایشگرهای کاراکتری پرطرفدار و پرمصرف می باشند. ال سی دی های کاراکتری در ابعاد متنوع و مدل‌های مختلف تولید می‌شوند. همچنین قیمت بسیار مناسبی نسبت به دیگر نمایشگرها داشته و از این رو بسیار پرکاربرد هستند. کاربران زیادی خواستار آموزش و راه اندازی هر سه مدل ال سی دی کاراکتری ۲*۱۶ با جزییات کامل را داشته اند که در این پست به این موضوع خواهیم پرداخت. در ادامه این پست کامل با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

 


 معرفی ال سی دی کاراکتری ۲*۱۶


LCD کاراکتری ۱۶*۲ یکی از پایه‌ای ترین نمایشگرهای الکترونیکی می‌باشد. این LCD در بسیاری از مدارها کاربرد دارد. یکی از دلایل پر مصرف بودن این مدل ال سی دی در مقابل نمایشگرهایی همچون سون سگمنت، عدم محدودیت در نمایش کاراکترها می‌باشد. همچنین توانایی ساختن کارکترهای دلخواه را دارند. برای نمایش مقادیر و متن در کد نرم افزار آردوینو Arduino IDE نیاز به معرفی و تعریف چند تابع در کدها داریم. در ابتدا به معرفی پایه‌های ال سی دی LCD و سپس دستورات لازم برای نمایش کاراکتر در ال سی دی LCD می‌پردازیم.

 

معرفی پایه‌های ال سی دی LCD

پایه های ال سی دی کاراکتری از چپ به راست به صورت زیر است:

  • VSS = زمین  GND
  • VCC = تغذیه ۵ ولت
  • (VO (Display Contrast Pin = تنظیم شدت نور صفحه
  • (RS (Register Select = انتخاب رجیستر
  • (RW (Read/Write = پایه Read و Write
  • E = پایه Enable
  • D0 – D7 = پایه های دیتا
  • A = پایه Anode
  • K = پایه Cathode

 

اتصال ال سی دی به Arduino UNO

برای اتصال ال سی دی LCD به آردوینو همانطور که در بالا گفته شده است، پایه VSS را به پایه GND، پایه VCC را به ۵ ولت، پایه VO را به پایه GND اتصال می‌دهیم. در صورت نیاز می‌توانید یک پتانسیومتر جهت تنظیم شدت نور بین دو پایه قرار دهید. پایه RS را به یکی از پایه های دیجیتال، پایه RW را به پایه GND، پایه E را به یکی از پایه‌های دیجیتال آردوینو متصل می‌کنیم. پایه‌های D0 -D7 را به پین دیجیتال آردوینو و در نهایت پایه Anode را به ۵ ولت و پایه Cathode را به پایه GND وصل کنید.

انواع دیگر آردوینو

برای آردوینو مگا Mega2560 و آردوینو نانو Nano هم به همین ترتیب عمل کنید و از پایه‌های دیجیتال برای اتصال به آردوینو استفاده کنید.

 

نکته مهم برای اتصال پایه‌های ال سی دی LCD به پایه های دیجیتال Digital آردوینو، توجه به یک نکته اهمیت دارد. هر یک از پایه‌هایی که انتخاب می‌کنید باید در کد برنامه معرفی شود. به عنوان مثال اگر از پایه‌های ۱۲,۱۱,۵,۴,۳,۲ آردوینو استفاده می‌کنید، باید به صورت زیر در کد آردوینو تعریف شود:

LiquidCrystal lcd (12,11,5,4,3,2);

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

 


به روزرسانی آموزش در مهرماه ۹۹


با توجه به اینکه عده ای از کاربران پس از انجام اتصالات و آپلود برنامه با کادرهای مربعی در ال سی دی مواجه شده اند، جهت برطرف شدن مشکل نیاز به اتصال مقاومت به پایه V0 داریم.  جهت تنظیم شدت نور صفحه یا همان کنتراست از پایه V0 در ال سی دی استفاده می‌شود. برای اتصال پایه V0 به برد آردوینو به یک مقاومت ۱۰ کیلو نیاز داریم. یک سر مقاومت را به پایه V0 وصل کرده و به GND برد آردوینو اتصال دهید. سر دیگر مقاومت ۱۰ کیلو بدون اتصال باشد.پیشنهاد می‌شود. لینک انواع مقاومت و ولوم برای راه اندازی ال سی دی کاراکتری را مشاهده کنید.

همچنین در صورتیکه باز هم مشکل برطرف نشد، پایه شماره ۱۵ یا همان A آند را به از یک سر به مقاومت ۲۲۰ اهم اتصال داده و سپس به ۵ ولت آردوینو متصل کنید.

 

 


معرفی تابع فراخوانی ال سی دی LCD


۱: liquid Crystal

برای شروع باید یک متغیر از انواع مختلف Liquid Crystal بسازید. در این متغیر می‌توانید بین ۴ تا ۸ پایه از دیتا را معرفی کنید. در زیر چند نمونه متغیر معرفی می‌کنم. بسته به انتخاب پایه‌های آردوینو  Arduino می‌توانید از یکی متغیرهای زیر استفاده کنید.

LiquidCrystal(rs,en,d4,d5,d6,d7)
LiquidCrystal(rs,rw,en,,d4,d5,d6,d7)
LiquidCrystal(rs,en,d0,d1,d2,d3,d4,d5,d6,d7)
LiquidCrystal(rs,rw,en,d0,d1,d2,d3,d4,d5,d6,d7)
  • RS: یکی از پایه های آردوینو به پایه RS ال سی دی LCD متصل می‌شود.
  • EN: یکی از پایه های آردوینو به پایه EN ال سی دی LCD متصل می‌شود.
  • RW: پایه GND آردوینو به پایه RW ال سی دی LCD متصل می‌شود.
  • d0,d1,d2,d3,d4,d5,d6,d7 : با توجه به تعریف متغیر در کد برنامه از پایه های D0 تا D7 ال سی دی به پایه های آردوینو متصل می‌شود.

 

۲: ()Begin

قبل از شروع نوشتن کدهای ال سی دی نیاز به معرفی ال سی دی LCD و مشخص کردن ابعاد مورد استفاده دارید. از اینرو سطر Begin اهمیت خاصی دارد. دستور معرفی ال سی دی همانند زیر است. cols جهت مشخص کردن تعداد ستون و row برای مشخص کردن تعداد سطر می‌باشد.

lcd.begin(cols, rows)

به عنوان مثال اگر ال سی دی مورد استفاده از نوع ۱۶*۲ باشد، همانند زیر در کد آردوینو فراخوانی می‌شود.

lcd.begin(16,2)

 

۳: ()clear

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

lcd.clear()

 

۴: ()home

توسط تابع home مکان نما در بالا سمت چپ ال سی دی قرار می‌گیرد. تابع ()home به صورت زیر در برنامه فراخوانی می‌شود.

lcd.home()

۵: ()setcursor

توسط تابع setcursor یک موقعیت خاص در ال سی دی برای مکان نما انتخاب می‌کنیم. سپس در تابع سطر row و ستون cols مورد نظر را وارد می‌کنیم. تابع cursor به صورت زیر در برنامه فراخوانی می‌شود.

lcd.setCursor(col, row)

۶: ()write

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

lcd.write(data)

۷: ()print

از تابع print برای نمایش کاراکتر در ال سی دی LCD اسنفاده می‌شود. تابع print به صورت زیر در برنامه فراخوانی می‌شود.

lcd.print(data)

۸: ()cursor و ()nocursor

از تابع cursor برای نمایش به صورت زیر خط underscore استفاده می‌شود. در واقع یک خط زیر کاراکتر کشیده می‌شود. همچنین برای عدم نمایش underscore از تابع nocursor استفاده می‌کنیم. هر دو تابع cursor و nocursor به صورت زیر در برنامه فراخوانی می‌شود.

lcd.cursor()
lcd.noCursor()

۹: ()blink و ()noblink

توسط تابع blink مکان نما به صورت چشمک زن در ال سی دی نمایش داده می‌شود. همچنین توسط تابع noblink از حالت چشمک زن خارج می‌شود. هر دو تابع blink و noblink به صورت زیر در برنامه فراخوانی می‌شوند.

lcd.blink()
lcd.noblink()

۱۰: ()display و ()nodisplay

توسط تابع display ال سی دی روشن و همچنین توسط تابع nodisplay ال سی دی خاموش می‌شود. هر دو تابع display و nodisplay به صورت زیر در برنامه فراخوانی می‌شوند.

lcd.display()
lcd.nodisplay()

۱۱: ()scrolldispalyleft و ()scrolldisplayright

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

lcd.scrolldisplayleft()
lcd.scrolldisplayright()

۱۲: ()autoscroll و ()noAutoscroll

توسط تابع autoscroll حرکت اتوماتیک محتوا فعال می‌شود. به این صورت که اگر جهت نمایش در ال سی دی به صورت چپ به راست است، با فراخوانی این تابع صفحه نمایش به سمت چپ حرکت می‌کند و برعکس؛ همجنین از تابع noautoscroll برای غیر فعال کردن این حالت استفاده می‌شود. هر دو تابع به صورت زیر در برنامه فراخوانی می‌شوند.

lcd.autoscroll()
lcd.noautoscroll()

۱۳: ()LeftToRight و ()RightToLeft

توسط تابع LeftToRight یک مسیر چپ به راست برای نوشتن متن در ال سی دی مشخص شده و محتوا از چپ به راست نوشته می‌شود. همچنین توسط تابع RightToLeft محتوا از راست به چپ در صفحه نمایش نوشته می‌شود. هر دو تابع به صورت زیر در برنامه فراخوانی می‌شود.

lcd.LeftToRight()
lcd.RightToLeft()

۱۴: ()CreatChar

از تابع creatchar برای نمایش یک کاراکتر خاص مانند smiley در ال سی دی استفاده می‌شود. تابع creatchar به صورت زیر در برنامه فراخوانی می‌شود:

lcd.creatchar(num,data)

 

فراخوانی کتابخانه LiquidCrystal

برای راه اندازی ال سی دی کاراکتری نیاز به کتابخانه LiquidCrystal داریم. هچنین کتابخانه ال سی دی کاراکتری در صفحه محصول ال سی دی کاراکتری LCD 2×۱۶ در قسمت دانلود قرار دارد. با کلیک بر روی لینک کتابخانه LiquidCrystal را دانلود کرده و مجددا در مسیر Arduino / Library کپی کنید. اگر هم شیوه افزودن کتابخانه به نرم افزار آردوینو را نمیدانید از آموزش نصب کتابخانه در آردوینو که قبلا توسط همکارم نوشته شده، استفاده کنید. حال تا اینجا توابع مهم برای فراخوانی یک ال سی دی کاراکتری ۲*۱۶ را فرا گرفتیم. در ادامه به بررسی ال سی دی گرافیکی ۱۶*۲ با راه انداز I2C می‌پردازیم.

 


معرفی LCD کاراکتری ۱۶*۲ با I2C


مدل دیگری از ال سی دی کاراکتری با درایور راه انداز I2C ارائه شده است. ماژول راه انداز LCD با تراشه PCF8574 و رابط I2C مناسب برای مدیریت ال سی دی‌های کاراکتری است. همچنین به دلیل استفاده از تنها ۴ پایه باعث کاهش حجم سیم کشی در طی پروژه شده است. راه انداز LCD کاراکتری با رابط I2C دارای ۴ پایه SCL , SDA, VC , GND است. در ادامه اتصال ال سی دی LCD به آردوینو را توضیح خواهم داد.

آموزش کار با انواع ال سی دی کاراکتری LCD توسط برد آردوینو Arduino

 

راه اندازی lcd کاراکتری با i2c

راه انداز I2C دارای ۴ پایه SCL, SDA, VCC, GND است. اتصال پایه ها در مدل های مختلف آردوینو متفاوت است. در ادامه برای نمایش محتوا در ال سی دی LCD نیاز به معرفی چند تابع در کد آردوینو داریم که به معرفی آن خواهیم پرداخت.

  1. آردوینو UNO:  پایه SCL به پایه A5, پایه SDA به پایه A4 متصل می‌شود.
  2. آردوینو Mega2560: پایه SCL به پایه ۲۰، پایه SDA به پایه ۲۱ متصل می‌شود.
  3. آردوینو Nano: پایه SCL به پایه A5،پایه SDA به پایه A4 متصل می‌شود.
  4. پایه VCC و GND هم به ترتیب به ۵ ولت و GND آردوینو متصل می‌شود.

 


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


۱: LiquidCrystal_I2C

در تابع crystalLiquid_I2C باید نوع ال سی دی LCD استفاده شده را مشخص کنید. به عنوان مثال برای استفاده از ال سی دی ۱۶*۲ تابع را به صورت زیر فراخوانی می‌کنیم.

LiquidCrystal_I2C lcd (0x27, 16, 2);

 

۲: ()write begin

تابع write begin کتابخانه wire را اجرا می‌کند و پروتکل I2C را فرامیخواند. این تابع تنها یک بار در برنامه فراخوانده می‌شود.

Wire.begin();

 

۳: ()backlight و ()nobacklight

از این دو تابع برای روشن شدن و خاموش شدن ال سی دی استفاده می‌شود. تابع backlight و nobacklight به صورت زیر فراخوانی می‌شود.

lcd.backlight();
lcd.nobacklight();

 

فراخوانی کتابخانه LiquidCrystal_I2C

برای راه اندازی ال سی دی کارکتری نیاز به فراخوانی کتابخانه LiquidCrystal_I2C داریم. لینک دانلود کتابخانه LiquidCrystal_I2C در صفحه محصول راه انداز LCD کاراکتری LCD Driver PCF8574 با رابط I2C در قسمت دانلود قرار دارد. کتابخانه را دانلود و در مسیر arduino/Library کپی کنید. همچنین برای راه اندازی ال سی دی نیاز به کتابخانه wire خواهیم داشت که به صورت پیش فرض در لیست کتابخانه Arduino قرار دراد. تنها کافیست از مسیر Sketch/ Include Library کتابخانه wire را فراخوانی کنید.

 

 

 


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


 

۱:  نمونه کد آردوینو نمایش متن در LCD ساده کاراکتری

#include <LiquidCrystal.h>
LiquidCrystal lcd (12,11,5,4,3,2);
void setup(){
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Digispark.ir"); 
}
void loop(){
lcd.noBlink();
  delay(1000);
   // Turn on the blinking cursor:
  lcd.blink();
  delay(1000);
}

 

۲: کد آردوینو نمایش متن LCD کارکتری I2C

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);

void setup(){
  Wire.begin();
  lcd.begin(16, 2);
  lcd.clear();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Digispark.ir");
  lcd.setCursor(0, 1);
  lcd.print("Check it");
  //lcd.noBacklight();
}

void loop(){
}

حال طبق آموزش اتصالات هر دو مدل ال سی دی ساده و همراه با درایور I2C را برقرار کنید. کدها را در نرم افزار آردوینو کپی کنید. سپس هر یک از کدها را جداگانه آپلود کنید. در هر دو مدل ال سی دی ساده و همراه با راه انداز I2C، محتوای متنی Digispark.ir در صفحه نمایش داده خواهد شد.

 

وسایل مورد نیاز

ال سی دی ۲*۱۶ 

ال سی دی ۲*۱۶ به همراه درایور راه اندازی I2C

شیلد ال سی دی آردوینو LCD Shield Arduino

برد آردوینو arduino UNO

 


شیلد Arduino Shield 2*16 LCD


شیلد ال سی دی آردوینو Arduino Shield 2*16 LCD مخصوص آردوینو با استفاده از پرکاربردترین ال سی دی کاراکتری و ۶ میکروسوئیچ به برد آردوینو Arduino نصب می‌شود. از نقاط مثبت شیلد ال سی دی آردوینو Arduino Shield 2*16 LCD دارا بودن ۶ میکروسوئیچ به ترتیب SELECT,LEFT,DOWN, UP, RIGHT,RESET است. این ۶ کلیدجهت انجام فعالیت مختلف در پردازش‌ها می‌باشد. این مدل ال سی دی به صورت شیلد بر روی آردوینو arduino قرار می‌گیرد.راه اندازی شیلد ال سی دی کاراکتری با آردوینو Arduino lcd shield

 

فراخوانی کتابخانه

برای راه اندازی شیلد ال سی دی نیاز به فراخوانی کتابخانه‌های LiquidCrystal و DFR_LCD_Keypad داریم. لینک دانلود کتابخانه LiquidCrystal در صفحه محصول ال سی دی کاراکتری LCD 2×۱۶ در قسمت دانلود قرار دارد. با کلیک بر روی لینک کتابخانه LiquidCrystal را دانلود کرده و مجددا در مسیر Arduino / Library کپی کنید. همچنین برای فعال سازی کلیدهای قرار گرفته شده بر روی شیلد ال سی دی نیاز به فراخوانی کتابخانه DFR_LCD_Keypad داریم. لینک دانلود کتابخانه DFR_LCD_KEYPAD در صفحه محصول شیلد ال سی دی ۲×۱۶ آردوینو در قسمت دانلود قرار دارد. کتابخانه را دانلود و در مسیر Arduino / Library کپی کنید.

 

معرفی پایه شیلد ال سی دی LCD Shield

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

  • A0 : پایه A0 برای فراخوانی ۶ کلید قرار گرفته شده بر روی شیلد ال سی دی است و توسط این پایه فرمان ارسال می‌شود.
  • DB4 – DB7 : پایه های D4 تا D7 برای ارسال دیتا بین آردوینو و شیلد ال سی دی استفاده می‌شود.
  • DB8: پایه DB8 یا همان Register برای انتخاب دیتا و سیگنال در نمایشگر استفاده می‌شود.
  • DB9: پایه Enable جهت فعال سازی ال سی دی استفاده می‌شود.
  • DB10: برای کنترل Backlight استفاده می‌شود.

 

معرفی توابع

 

()DFR_LCD_Keypad

برای فعال سازی ۶ کلید نیاز به معرفی تابع آن داریم. همانطور که گفته شد، پایه A0 جهت فراخوانی کلیدها استفاده می‌شود. تابع DFR_LCD_Keypad به صورت زیر فراخوانی می‌شود.

DFR_LCD_Keypad keypad(A0, &lcd);

در نهایت برای فراخوانی کلیدها و نمایش تغییرات در متن نیاز به معرفی متغیر سوییچ خواهیم داشت که با انتخاب هر یک از سوییچ ها، محتوا مورد نظر در نمایشگر نشان داده شود.

 

نمونه کد آردوینو نمایش متن در LCD Shield

 

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

 

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

 

 

حال کد سوم را در نرم افزار آردوینو کپی کنید. همانطور که بر روی شیلد ال سی دی مشخص است، دارای ۶ عدد میکروسوییچ است. کد را آپلود کنید. با فشردن کلید RIGHT عبارت Digispark.ir ، کلید UP عبارت Digispark، کلید DOWN عبارت Daneshjookit، کلید LEFT عبارت Theladypi و کلید SELECT عبارت Projects نمایش داده می‌شود.

 


راه اندازی ال سی دی کاراکتری ۲۰X2


WH2002A یک نمابشگر ال سی دی کاراکتری ۲۰X2 می‌باشد که از آی سی داخلی ST7066 در ساختار آن بهره می‌برد. رابط پیش فرض ال سی دی ۸۰۰ ۴/۸-bit موازی است. همچنین این مدل با آی سی RW1063 controller IC با پروتکل I2C و SPI در بازار موجود است و اتصالات و سیم کشی آن محدوتر خواهد شد. برعکس تمامی ال سی دی های گرافیکی در این مدل دو ردیف ۸ تایی در سمت راست ال سی دی برای لحیم کاری پایه ها در نظر گرفته شده است. ردیف اول پایه ۱ تا ۱۵ و ردیف دوم پایه ۲ تا ۱۶ است. ترتیب پایه ها بر اساس شماره پین به صورت زیر است:

 

پس با توجه به توضیحات و تصویر بالا، در ال سی دی گرافیکی ۲۰X2 فقط جای پایه ها تغییر کرده است و تفاوتی درنوع پایه، ساختار و ماهیت آن وجود ندارد. مطابق با تصویر پایه ها را تطبیق داده و اتصالات را انجام میدهیم.

 


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


جهت اتصال ال سی دی ۲۰X2 به آردوینو به پایه های دیجیتال و مقاومت نیاز داریم. مطابق با جدول پایه ها در تصویر بالا، ماهیت هر پایه را شناسایی کرده و طبق جدول زیر اتصالات را انجام دهید.

نکات اتصال

  • جهت تنظیم شدت نور صفحه یا همان کنتراست از پایه V0 در ال سی دی استفاده می‌شود. برای اتصال پایه V0 به برد آردوینو به یک مقاومت ۱۰ کیلو نیاز داریم. یک سر مقاومت را به پایه V0 وصل کرده و به GND برد آردوینو اتصال دهید. سر دیگر مقاومت ۱۰ کیلو بدون اتصال باشد.
  • پیشنهاد می‌شود پایه شماره ۱۵ یا همان A آند را به از یک سر به مقاومت ۲۲۰ اهم اتصال داده و سپس به ۵ ولت آردوینو متصل کنید.
  • انتخاب پایه های دیتا بین D0 تا D7 آزادنه است و فقط به ساختار آن در کدنویسی دقت کنید:
LiquidCrystal(rs,en,d4,d5,d6,d7)
LiquidCrystal(rs,rw,en,,d4,d5,d6,d7)
LiquidCrystal(rs,en,d0,d1,d2,d3,d4,d5,d6,d7)
LiquidCrystal(rs,rw,en,d0,d1,d2,d3,d4,d5,d6,d7)

 


کتابخانه Library


کتابخانه مورد استفاده برای ال سی همان Liquidcrystal است که در بخش اول آموزش روش نصب آن نوشته و آموزش داده شده است. با توجه به اینکه آخرین آپدیت این آموزش در مهرماه ۹۹ انجام شده است، آخرین ورژن معرفی شده برای کتابخانه liquidCrystal ورژن ۱٫۰٫۷ است:

 


کد آردوینو LCD20X2


پس از انجام اتصالات و اطمینان از نصب کتابخانه LiquidCrustal نوبت به تست یکی از برنامه های پیش فرض آردوینو است. کد زیر را کپی و به نرم افزار آردوینو Arduino انتقال دهید.

#include <LiquidCrystal.h>


const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  
  lcd.begin(20, 2);
  
  lcd.print("hello, world!");
}

void loop() {
 
 
  lcd.setCursor(0, 1);

  lcd.print(millis() / 1000);
}

 

جهت آپلود برنامه ابتدا نوع برد آردوینو و پورت را مشخص کرده و سپس برنامه را آپلود کنید. عبارت Hello World به همراه کانتر شماره انداز بر روی ال سی دی گرافیکی نمایش داده می‌شود. جهت تغییر متن در خط زیر عبارت مورد نظر را تغییر دهید:

 lcd.print("hello, world!");

انتخاب نوع ال سی دی مورد استفاده در این خط مشخص می‌شود:

 lcd.begin(20, 2);

جهت نمایش عدد و کانتر از دستور زیر استفاده شده است:

lcd.print(millis() / 1000);

 

با انجام تمامی این موارد ال سی دی راه اندازی شده و آماده تست پروژه است.

 


وسایل مورد نیاز


ال سی دی ۲*۱۶ 

ال سی دی ۲*۱۶ به همراه درایور راه اندازی I2C

شیلد ال سی دی آردوینو LCD Shield Arduino

برد آردوینو arduino UNO

ال سی دی ۲۰×۲ کاراکتری

 

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

 

 

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۸۴ دیدگاه

  • سلام واقعا این پست بسیار لازم بود تشکر از شما خانم مهندس که همیشه مطالب مفید قرار میدید

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

  • سلام
    برای ال سی دی ۲/۱۶ نیازی به پتانسیومتر نیست ؟ خیلی از دیتاشیت ها پتانسیومتر داره ولی شما استفاده نکردین واتفاقا خیلی هم نوشته ها واضحه !

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

    • سلام
      در حال حاضر تعریف نشده است. این موضوع بررسی و در صورت امکان پروژه تعریف خواهد شد.

  • سلام
    من یه شیلد LCD دارم پایه A0 طبق معمول رزرو خود شیلد میخوام یه نمایشگر ضربان قلب راه اندازی کنم یه پالس سنسور دارم اونم برا ارسال دیتا به پایه A0 نیاز داره دیتا رو تویه serial monitor دارم ولی رو نمایشگر نمیاد راه حلی برا این مشکل دارین ؟؟
    با تشکر

    • سلام
      پایه A0 در اختیار کلید های قرار گرفته بر روی شیلد است. برای رفع مشکل باید یکی از پایه های دیگر آنالوگ را تعریف کنید، که با تغییر در کد برنامه به راحتی امکان پذیر است.

  • سلام
    من تازه با این برد آشنا شدم و یه پک آموزشی خوب هم تهیه کردم ولی هر کاری کردم نتونستم lcd رو با i2c راه اندازی کنم .همه چیزو چندین بار چک کردم ، آموزش شما رو هم کلمه به کلمه خوندم ولی نمیشه.از هر کدوم ۴ تا داشتم که هیچکدوم جواب نمیده البته lcd ها بدون i2c کار میکنن.لطفا راهنمایی بفرمایید

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

  • سلام خانم مهندس خسته نباشید.
    من یک lcd از بازار تهیه کردم ولی محل قرار گیری پایه ها و تعدادشون منو به مشکل در دونستن شماره هر پایه مواجه کرد.
    بی زحمت بگید هر پایه پایه ی چندم هستش
    http://s8.picofile.com/file/8321790868/20180315_194227.jpg

    http://s8.picofile.com/file/8321791018/20180315_194241.jpg
    با تشکر…

    • سلام
      تشخیص پایه ها و بررسی آن به عهده خودتان است و برای این ال سی دی باید دیتاشیت کالا را مطالعه کنید.

    • سلام
      کتابخانه مربوط به Kepad را نصب کردید؟ اگر کلید را برای چند ثانیه نگه دارید، تغییری ایجاد می‌شود؟

  • با سلام
    برای متصل کردن سنسور به شفیلد LCD باید از چه دستوری استفاده نمود؟
    با تشکر.

    • سلام
      برای هر سنسور نیاز به کتابخانه مرتبط به آن است. کتابخانه سنسور مورد نظر را فراخوانی کنید و سپس کدها را ترکیب کنید.

  • سلام خسته نباشید دوتا سوال داشتم
    ١-چجوری می شه مقدار داده یک سنسور روی lcdنمایش داد
    ٢-در شیلد lcdکه داری ۶دکمه هم هست می شه استفاده نکنیم از کلید ها در بعضی از پروژه ها که نیازی نیست

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

    • سلام
      بله امکان پذیر است.
      برای دو ال سی دی کاراکتری ساده و کاراکتری همراه با درایور I2C دو کد یکسان است تنها باید کتابخانه مخصوص هر یک و نوع ال سی دی را فراخوانی کنید. برای کد سوم که مربوط به شیلد ال سی دی است، سوییچ ها و کتابخانه مربوط به آن تعریف شده است و باید تغییر دهید.

  • احسنت بر شما خانم مهندس که اینقدر کامل و با حوصله توضیح میدهید. انشاءالله توفیق یابید.

  • سلام
    من یک lcd 20*4 دارم
    وقتی یک داده ۲۴ بیتی رو دریافت میکنم و میخام روی lcd در سطر اول و دوم نشون داده بشه ، ۲۰ بیت اول بدون مشکل در سطر اول قرار میگیره اما ۴ بیت اخر به جای سطر دوم ، روی سطر سوم قرار میگیره .
    من چیکار کنم که ۴ بیت اخر بیاد روی سطر دوم ؟

    • سلام
      در این خصوص باید تابع (lcd.setcursor(col,row را تغییر دهید و موقعیت مکان نما را بر روی صفحه نمایش مشخص کنید.

      • من از این تابع استفاده کردم ، مشکل اینجاست که دیتای من ۲۴ بیت و ۲۰ بیت اول در سطر اول قرار گرفته و مشکلی نیست. اما ۴ بیت اخر به جای اینکه بیاد سطر دوم ، رفته سطر سوم.

        من که نمیتونم جداگانه برای ۴ بیت اخر دوباره از تابعی که شما گفتید استفاده کنم!

        • سلام مجدد
          بنده بررسی نکرده‌ام. ولی مواردی از جمله اینکه پروتکل ارتباطی I2C است یا بدون I2C و همچنین در قسمت lcd.begin(16, 2); موارد را درست وارد کرده باشید. از دیگر کاربران که در این زمینه تجربه مشابهی دارند، تقاضا دارم تا در این بحث شرکت کنند.

          • سلام،دو کد دستوری زیر برای هر چهار سطر تعریف شود:
            ;(lcd.setCursor(col, row
            ;(lcd.print(“text
            می توانید مثال display در کتابخانه liquid cristal را الگو قرار دهید و این تغییرات را در آن اجرا کنید.در هر صورت محدودیت ۲۴ کاراکتر وجود دارد،و حروف اضافه در فضای خالی سطرهای دیگر تاثیر گذارند.

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

      • با قرار دادن این دستور ها با خطا در خط بعدش مواجه میشم.

        Arduino: 1.8.1 (Windows 10), Board: “Arduino/Genuino Uno”

        C:\Users\Asus\Desktop\lcd_shild\lcd_shild.ino: In function ‘void loop()’:

        lcd_shild:36: error: expected ‘;’ before ‘case’

        case KEY_RIGHT:

        ^

        Multiple libraries were found for “LiquidCrystal.h”
        Used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
        Not used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal.library.daneshjookit
        Multiple libraries were found for “DFR_LCD_Keypad.h”
        Used: C:\Users\Asus\Documents\Arduino\libraries\DFR_LCD_Keypad-master
        Not used: C:\Program Files (x86)\Arduino\libraries\DFR_LCD_Keypad-master
        exit status 1
        expected ‘;’ before ‘case’

        This report would have more information with
        “Show verbose output during compilation”
        option enabled in File -> Preferences.

  • این قسمت از برنامه ای که آقای قربانی نوشتند را در برنامه شما قرار دادم، ولی عدد ۱۲۳۴۵۶ یک بار از چپ و بار دیگه از راست نوشته شد. ولی با این حال ثابت بود و حرکتی نمی کرد.

    delay(1000);
    lcd.clear();
    lcd.rightToLeft();//راست به چپ کردن
    lcd.setCursor(15, 0);
    lcd.print(“123456”);

    lcd.leftToRight(); //چپ به راست کردن
    lcd.setCursor(0, 0);
    lcd.print(“123456”);

    delay(2000);

    • سلام مجدد
      دقت کنبد برای جا به جایی متن حتما باید تابع های lcd.scrollDisplayLeft و lcd.scrollDisplayRight فراخوانی کنید.

    • خطا

      Arduino: 1.8.1 (Windows 10), Board: “Arduino/Genuino Uno”

      C:\Users\Asus\Desktop\lcd_shild\lcd_shild.ino: In function ‘void setup()’:

      lcd_shild:16: error: ‘lt’ was not declared in this scope

      for (int thisChar = 0; thisChar < 10; thisChar++) {

      ^

      lcd_shild:16: error: expected ‘)’ before ‘;’ token

      for (int thisChar = 0; thisChar < 10; thisChar++) {

      ^

      lcd_shild:16: error: ‘thisChar’ was not declared in this scope

      for (int thisChar = 0; thisChar < 10; thisChar++) {

      ^

      lcd_shild:28: error: a function-definition is not allowed here before ‘{‘ token

      {

      ^

      lcd_shild:76: error: expected ‘}’ at end of input

      }

      ^

      Multiple libraries were found for “LiquidCrystal.h”
      Used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
      Not used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal.library.daneshjookit
      Multiple libraries were found for “DFR_LCD_Keypad.h”
      Used: C:\Users\Asus\Documents\Arduino\libraries\DFR_LCD_Keypad-master
      Not used: C:\Program Files (x86)\Arduino\libraries\DFR_LCD_Keypad-master
      exit status 1
      ‘lt’ was not declared in this scope

      This report would have more information with
      “Show verbose output during compilation”
      option enabled in File -> Preferences.

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

    • دقت کنید هر دستور for برای تعداد حرکت به سمت راست یا جپ می‌باشد. کدها را باید تحلیل کنید و سپس جایگزین کنید. مجددا موارد گفته شده را تست کنید و نتیجه را اعلام کنید حتما راهنمایی خواهم کرد.

  • سلام من دستورات lcd to i2c رو نوشتم ولی روی ال سی دیم چیزی نمایش نداد
    ممنون میشم راهنماییم کنید اتصالات رو هم درست انجام دادم

    • سلام
      آیا مطابق با متن آموزش پیش رفته اید؟ برای اتصال i2c باید کتابخانه crystalLiquid_I2C را فراخوانی کنید. سپس باید نوع ال سی دی مشخص شود.
      موارد را چک و اعلام کنید تا راهنمایی کنم.

    • بسیار عالی
      در صورت برخورد به مشکل از همین طریق اقدام نمایید تا راهنمایی کنم.

      • با سلام و خسته نباشید. تشکر از آموزش های خوبتون.
        من ماژول ارتباط سریال I2C برای LCD کاراکتری رو با برد آردوینو UNO میتونم راه اندازی کنم ولی با برد آردوینو Mega 2560 هیچی نمیاره، از کنتراستشم نیست. پایه های SDA رو به پایه ۲۰ و SCL رو به پایه ۲۱ وصل کردم (بر عکسم وصل کردم) هیچی نمیاره.
        لطفا راهنمایی فرمایید. با سپاس

        • سلام
          از توجه شما ممنونم.
          بررسی کردم و مشکلی در نمایش متن با آردوینو مگا۲۵۶۰ نیست. پتانسیومتر را تغییر دهید و از نمونه کد همین آموزش استفاده و سپس نتیجه را اعلام کنید.
          عکس را ضمیمه کردم، مشاهده کنید.

          ال سی دی 2x16 با آردوینو مگا2560

          • با سپاس از راهنماییاتون.
            مشکل از برد آردوینو مگا من بود با یکی دیگه تست کردم مشکلی نداشت و نشون داد.
            با تشکر

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

  • خسته نباشید ؛
    در تابع; ()lcd.clear کل صفحه پاک میشه.
    اگه بخواهیم قسمتی از صفحه حذف شود از چه تابعی استفاده کنیم.. ؟

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

  • سلام.ممنون از آموزشتون.
    من وقتی کد راه انداز با ic2 رو آپلود می کنم فقط اول عبارات ینی c , d رو فقط نمایش می ده
    می شه راهنمایی کنید مشکل از کجاست؟

    • سلام
      از توجه شما ممنونم.
      با استفاده از پتانسیومتر بر روی ال سی دی کنتراست را تنظیم کنید. اتصالات را مجددا چک کنید. نتیجه را اعلام کنید تا در صورت برطرف نشدن مشکل راهنمایی کنم.

  • سلام خانم
    چقدر اون بخش معرفی توابع عالی و خوب بود دمتون گرم، امیدوارم این نحوه آموزش (معرفی جزئیات) بیشتر بشه.

  • سلام من میخوام از دکمه های up و down شیلد lcd به عنوان تنظیم کننده سطح رطوبت استفاده کنم ولی وقتی داخل دستور switch و مثلا KEY_UP میگم :
    if(moistureSet!=100)moistureSet++; عمل نمیکنه
    قبلشم مقدار انالوگ سنسور رو با دستور map بصورت درصد تعریف کردم و MOISTURE_SET با define 0 گذاشتم و با static int اینارو برابر قرار دادم
    به نظر شما چیکار کنم؟

  • با عرض سلام و احترام خدمت سرکار خانم مهندس

    ضمن تشکر از مطالب مفید شما من یک مشکل داشتم، من شیلد LCD و keypad را به برد Arduino UNO وصل میکنم و ارتباط کامل برقرار می شود و متن بر روی LCD نمایش داده می شود اما زمانی که به برد Wemos D1 وصل میکنم متن نمایش داده نمی شود
    لطفا در صورت امکان راهنمایی فرمایید

    باتشکر از شما

    • سلام
      دقت کنید برای راه اندازی با Wemos نیاز به فراخوانی دو کتابخانه خواهید داشت.
      ArduinoJson
      ESP8266WiFi

  • سلام
    برای اتصال lcd 2*16 به اردوینو حالا متن یا اون کاراکتری رو که میخام نشون نمیده همش مربع از پتانسیومتر استفاده کردم فقط همون مربع ها کمرنگ و پرنگ شدن
    ممنون میشم راهنمایی کنید

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

  • سلام، من باوجود درست بودن کدها و هم چنین اتصالات مربوط به برد آردوینو ولی موقع آپلود خروجی نمی گیرم. میخواستم بدونم مشکل از چیه؟

  • سلام
    من scl رو به a5 و sda رو به a4 وصل کردم vcc و gnd هم متصل کردم
    کتابخانه ها هم نصب هستند lcd هم ۱۶۰۲ هست حتی کد همین بخش روهم استفاده میکنم اما بعد از اپلود فقط lcd ابی میشه و هیچ کاراکتری نمایش نمیده پتانسومتر هم تغییر میدم ولی بازم هم چیزی نشون نمیده
    کاری هست که بتونم انجام بدم این مشکل حل شه؟

    • سلام
      اگر از آردوینو UNO و LCD با درایور I2C استفاده می‌کنید، پایه SCL به پایه A5, پایه SDA به پایه A4 متصل می‌شود.
      تست کنید و نتیجه را از همین طریق اعلام کنید.

      • بله اول هم عرض کردم اینارو به همین شکل متصل کردم
        lcd هم به دستور ها عمل میکنه و طبق کد backlight و nobacklight رو باهمون delay که بش وارد شده انجام میده اما کاراکتر هارو نشون نمیده
        خود lcd رو هم چک کردم بدون درایور عمل میکنه

        • با توجه به توضیحات شما، مشکلی اتصالات نیست. دقت کنید nobacklight به عنوان کامنت اضافه شده است و نباید دستور باشد. همین کد را بدون تغییر کپی کنید و یک عکس ضمیمه کنید تا بررسی کنم.

  • سلام وقت بخیر
    ضمن تشکر از زحمات شما ممکنه بفرمایید چطور میتونم ادامه متنم به خط بعدی منتقل کنم؟
    از دستور for به این شکل استفاده کردم
    for(Serial.available()=1,Serial.available()>17,Serial.available()++){
    lcd.setCursor(2,0);
    { lcd.write(Serial.read());
    for(Serial.available()=16,Serial.available()>33,Serial.available()++){
    lcd.setCursor(2,0);
    } lcd.write(Serial.read());
    اما گویا درست نیست و ارور میده
    ممنون میشم مشکل رو اصلاح بفرمایید

      • ببینید میخوام با ارتباط سریال یه پیام رو که بیشتر از ۱۶ کاراکتر هست رو lcd نمایش بدم اما طبیعتا همش نمایش داده نمیشه دیگه
        برای همین میخوام از خط دوم lcd هم برای نمایش بقیه متن استفاده کنم به طوری که کاربر متن مثلا ۲۰ کاراکتری رو ارسال کنه و خودکار ۱۶ کاراکتر در خط اول قرار بگیره و ۴ کاراکتر دیگه بجای حذف شدن به خط بعد منتقل بشه

        • کد برنامه ناخوانا است و امکان تحلیل وجود ندارد. به عنوان مثال اگر متن مورد نظر شما بیش از ۳۲ کاراکتر است، باید آن را جدا کنید و برای اینکار باید از تابع()string.length و (string.substring(from, to استفاده کنید.

  • ببخشید من برای یک پروژه که آردیونو همیشه باید روشن باشد از lcd استفاده کردم که اولش همه چی خوبه ولی بعد تقریبا ۴ ساعت دیگه هیچی رو lcd نشون نمیده وقتی هم پایه هاشو قطع و وصل میکنم که شاید درست شه فقط یه سری علامت سوال و فلش و اینا میاره یعنی همه چی خوب کار میکنه و درسته فقط هیچی رو صفحه نشون نمیده وقتی که آردیونو رو ریست میکنم دوباره درست میشه .
    به نظر شما چیکار میتونم بکنم که بدون ریست کردن همیشه درست کار کنه؟

        • در این خصوص باید تغذیه را بررسی کنید.
          هیچ مشکلی در مدت زمان بالا برای برد و اتصالات به وجود نخواهد امد و این مورد قبلا توسط بنده تست شده است.
          از چه تغذیه ای استفاده می‌کنید؟

          • من یه دونه شلید کنترل موتور گذاشتم رو برد آردیونو همون که کتابخونش AFMotor هست بعد ورودی ۱۲ ولت ۵۰۰ آمپر رو به همون شیلده وصل کردم .

          • من یه دونه شلید کنترل موتور گذاشتم رو برد آردیونو همون که کتابخونش AFMotor هست بعد ورودی ۱۲ ولت ۵۰۰ میلی آمپر رو به همون شیلده وصل کردم .

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

              • بله مشکل نرم افزاری بود
                یه متغیر تو برنامه هی تا ۷۲۰۰ میرفت بعد دوباره صفر میشد که اول با int تعریفش کرده بودم بعد که سرچ کردم و اینا به این نتیجه رسیدم که با unsigned long شاید درست شه که تا حالا مشکلی نداشته امیدوارم که دوباره اونطور نشه 🙂 راستی تو این پروژه خیلی آموزش های مختلفتون کمکم کرد میخواستم ازتون تشکر کنم

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

                  حمایت از دیجی اسپارک

                  روش دریافت بن ارسال رایگان دانشجو کیت

    • بسته به ال سی دی مورد استفاده، فراخوانی دستورات کتابخانه ال سی دی متفاوت است. در این آموزش نحوه‌ی راه اندازی ۳ مدل ال سی دی گفته شده است.
      از چه ال سی دی استفاده می‌کنید تا بتوانم راهنمایی کنم.

      • lcd 16*2 کارکتری……میخوام که اطلاعات کارت rfid ک تو سریال مانیتور برنامه اردینو نمایش داده میشه روی lcdهم بتونم ببینم…ایا میشه؟

        • بله هیچ محدودیتی ندارد.
          باید طبق همین آموزش کتابخانه و توابع LCD را در کد برنامه اضافه کنید.
          از کدهای همین آموزش به راحتی می‌توانید استفاده کنید.

          • ۱-پایه های دیجیتال اردینو پرشده و فقط ۴ تا خالی هست…با این چهارتا پایه و یا پایه های انالوگ اردینو،میتوان lcd را متصل کرد؟
            ۲-هم چنین ماژول i2c ندارم.بدون این ماژول میشود؟

            • در خصوص سوال اول کامل در متن آموزش توضیح داده شده است:
              برای اتصال پایه‌های ال سی دی LCD به پایه های دیجیتال Digital آردوینو، توجه به یک نکته اهمیت دارد. هر یک از پایه‌هایی که انتخاب می‌کنید باید در کد برنامه معرفی شود. به عنوان مثال اگر از پایه‌های ۱۲,۱۱,۵,۴,۳,۲ آردوینو استفاده می‌کنید، باید به صورت زیر در کد آردوینو تعریف شود:
              (LiquidCrystal lcd (12,11,5,4,3,2 دقت داشته باشید می‌توانید از همان پایه های اشتراک بگیرید و به ال سی دی متصل کنید.
              سوال دوم : بله می‌توانید از ماژول lcd کاراکتری استفاده کنید.

  • سلام
    آموزش خوبی بود
    من کد هارو با ال سی دی با i2c آپلود کردم ولی فقط یک حرف رو نمایش میده خط اول D و خط دوم C نمیدونم مشکلش چیه
    خودم هم هر جور نوشتم فقط حرف اولو تایپ کرد
    بردم آردوینو نانو هست

  • سلام، بنده هنگام کامپایل کد، روی خط
    lcd.begin(16, 2);
    ارور میگیرم.
    No matching function for call to ‘LiquidCrystal_I2C::begin(int, int)

    وقتی پارامتر های ورودی فانکشن رو حذف میکنم برنامه کامپایل میشه ولی روی Lcd چیزی نشان داده نمیشود.

    • سلام
      همانطور که در متن آموزش بخش معرفی توابع راه اندازی ال سی دی توضیح دادم، طبق دستورات کتابخانه Liquid crystal باید نوع ال سی دی و کد I2C آن مشخص گردد. به عنوان مثال من در این آموزش از ال سی دی ۲*۱۶ استفاده کرده ام و کد I2c به صورت ۰X27 است.

  • سلام
    برای اینکه دمای نمایش داده شده روی lcd بعداز ٣٠ ثانیه شیفت پیدا کنه به خط پایینی باید چه کدی نوشت؟ و دمای جدید روی خط اول نمایش داده بشه

    • سلام
      در این خصوص باید ابتدا از delay استفاده کنید و زمان مورد نظر خود را تعیین کنید. سپس برای انتقال متن به خط بعدی از دستور ;(lcd.setCursor(col, row استفاده نمایید.

  • سلام مهندس.خسته نباشید.
    من برای ساخت یه دستگاه از lcd 16×۲ کارکتری استفاده کردم.
    و البته شامل فتوسل و lm35 و mq7 وماژول بلوتوث و رله هم هست.
    مشکلم اینجاست که نور فونت ال سی دی اغتشاش داره.و واقعا کلافه شدم.
    میخواستم راهنماییم کنید و احتمال های موجود برای این اتفاق بهم بگید؟
    و اینکه آیا میتونه مشکل از برد اردوینو نانو و کامپایل اشتباهی باشه؟
    ممنون

    • سلام
      برای بررسی مشکل تغذیه مورد استفاده را بیان کنید. همچنین از کدام یک از مدل های LCD استفاده می‌کنید؟ کاراکتری ساده یا I2C?

      • از رابط usb ولی حتی با باتری کتابی هم تست کردم بدتر شد که بهتر نشد.
        اما بقیه اجزای مدار کاملا درست عمل میکنند.
        از ال سی دی کاراکتری ساده(سبز رنگ) با اتصال ۱۲پین از ۱۶پین.

        • با توجه به اتصالات شما و ماژول هایی که در پروژه استفاده کرده اید و اینکه از رابط usb برای تغذیه استفاده می‌کنید به نظر می‌رسد جریان کافی در مدار وجود ندارد و سبب نویز می‌گردد. در این مدار نیاز به جریان کافی دارید و یک باتری پاسخگو نیست. نتیجه را از همین طریق اعلام نمایید.

  • سلام مجدد
    از من خواستید که مشکل ام رو اینجا مطرح کنم.
    من از سنسور MQ135 برای گاز CO2 استفاده میکنم و میخوام مقدار گاز روی نمایشگر نشان داده بشه.
    نمایشگر من به درستی کار می کنه و نوشته رو نشان میدهد و با سنسور DHT22 هم به درستی کار میکنه
    حالا من دستورات سنسور MQ135 رو که وارد میکنم نمایشگر دیگه هیچی نشون نمیده ولی کماکان مقادیر رو توی سریال مانیتور میبینم.
    تاکید کنم که فقط وقتی اولین دستور MQ135 رو وارد میکنم این اتفاق می افته.
    ممنون میشم راهنمایی کنید که چه کاری کنم؟

    • سلام مجدد
      از توجه شما ممنونم.
      با توجه به اینکه نمایشگر با کدهای دیگر همانند DHT به درستی مقادیر را نمایش می‌دهد، به نظر میرسید کد آردوینو پروژه MQ135 دارای ایراداتی باشد.
      منظور از اولین دستور MQ135 چیست؟

        • البته اینجا کد به درستی نیومد 🙁
          ولی منظور این که برای اینکه بفهمم ایراد از کجاس خط به خط کد ها رو تست کردم و فقط وقتی این مشکل رو دارم که یکی از دستور های مربوط به کتابخانه MQ135 اجرا بشه

          • برای تست ال سی دی از نمونه کد آموزش زیر که مربوط به راه اندازی سنسور MQ5 است استفاده کنید. در این آموزش مقدار گاز خوانده شده بر روی ال سی دی نمایش داده می‌شود. کد را تست و نتیجه را اعلام کنید.

            آموزش ساخت کیت هشدار نشت گاز شهری با سنسور MQ5 بر پایه آردوینو

            • این پست از I2C استفاده کردین
              LCD ام به صورت مستقیم (از پایه های دیتا مثل آموزش DHT 11 ) وصل شده.

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

                • انجام دادم.
                  کالیبریشن روی نمایشگر انجام میشه.
                  پیغام SENSOR ACTIVE میاد ولی بعدش دیگه هیچی نشون نمیده.
                  کماکان سریال مانیتور مقادیر رو نشون میده.
                  (من یه تستی هم کردم اونم این بود که به جای دستور int gasSensor = analogRead(gasPin); مقدار ثابت گذاشتم یعنی int gasSensor = 10; در این حالت همه چی به صورت نرمال کار میکنه …….)

                  • تشکر فراوان از پیگیریی که انجام دادین .
                    الان مشکل من حل شد 🙂
                    – با جابجا کردن پایه ی VSS و اتصال اون به یک GND دیگه مشکل حل شد-
                    ولی اینکه چه ارتباطی داره رو میدونین؟

                    • خواهش میکنم.
                      بله همانطور که گفتم اتصالات را باید چک کنید. در آموزش راه اندازی ال سی دی نحوه‌ی اتصال کامل توضیح داده شده است. برای اتصال حتما باید به تغذیه VCC و GND متصل گردد.

                  • این تغییری ارتباطی به نمایش مقادیر در ال سی دی ندارد و تنها شروع مقادیر اولیه برای نمایش را تغییر می‌دهید.
                    برای برطرف شدن مشکل باید اتصالات و یا کدهای پروژه را بررسی کنید.

        • این دستور یک تعریف متغیر و فراخوانی آن است و برای نمایش داده با رقم اعشار استفاده می‌شود و تاثیری بر نمایش و عدم نمایش محتوا ندارد.

  • با سلام
    من با یگ مشکل روبرو شدم
    اینکه بعد از آ\لود کردن برنامه فقط کاراکتر اول روی lcd نمایش داده میشه و مابقی کاراکتر ها نمایش داده نمی شه
    علت چی میتونه باشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

  • باسلام
    وقتی از مبدل i2c استفاده می کنم بعد از آ\لود کردن برنامه فقط کاراکتر های اول نمایش داده میشه و مابقی کاراکتر ها نمایش داده نمیشه؟؟؟

    • با سلام
      ممکن است اتصالات به درستی انجام نشده باشد. از مبدل جداگانه استفاده می‌کنید؟

  • بله از مبدل جداگانه استفاده میکنم توی انجمن آردینو سرچ کردم میگن مشکل از کتابخونه است الان کتابخونه برای شما بدونه مشکله پس نباید اینجا ایجاد مشکل کنه

  • سلام من از ال سیدی ۴*۲۰ استفاده می کنم ولی برای ارتباط دو سیمه مشکل دارم …ال سی دی هیچی نشون نمیده …… بتانسیومتر رو تغییر دادم ولی فایده نداشت … آدرس رو هم تغییر دادم هم ۰x27 و هم ۰x3f v رو استفاده کردم بازم فایده نداشت . اتصالات هم درست هست … کدها رو هم درست زدم …. مشکل از کجاست ؟

  • سلام ببخشید من به یه مشکلی بر خوردم میخوام اگه میتونید راهنمایی کنید.من میخوام تو ال سی دی کاراکتری یه کلمه مثل (HELLO) نشون بدم بعد با فشردن یه کلید این کلمه از رو ال سی دی پاک بشه بعد به مدت ۳ ثانیه کلمه دیگه ای مثل(START) نمایان بشه بعد باز ال سی دی پاک بشه و دوباره همون کلمه (HELLO) رو نمایش بده. میخوام بدونم چی کار باید کنم یعنی چه برنامه ای بنویسم که این کارو انجام بده

    • با سلام
      در این خصوص بایستی از دستور switch case استفاده کنید. برای هر مرحله یک case تعریف کرده و دستورات را بنوسید.

  • سلام ببخشید من به یه مشکلی بر خوردم میخوام اگه میتونید راهنمایی کنید.من میخوام تو ال سی دی کاراکتری یه کلمه مثل (HELLO) نشون بدم بعد با فشردن یه کلید این کلمه از رو ال سی دی پاک بشه بعد به مدت ۳ ثانیه کلمه دیگه ای مثل(START) نمایان بشه بعد باز ال سی دی پاک بشه و دوباره همون کلمه (HELLO) رو نمایش بده. میخوام بدونم چی کار باید کنم یعنی چه برنامه ای بنویسم که این کارو انجام بده

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

  • عرض سلام و خسته نباشی
    ببخشید من مراحلی که گفتید برای راه اندازی ال سی دی قدم به قدم اجرا کردم نمیدونم چرا ال سی دی روشن میشه و شانزده کارکتر سطر اول به صورت مربعی روشن میشه اگه میشه راهنمایی کنید ممنون

        • سلام مجدد
          از منو نرم افزار آردوینو وارد شده و سپس از منو Sketch گزینه include library بر روی manage libraries کلیک کنید. سپس در کادر فیلتر عبارت liquidcrysal سرچ کنید. در صورتیکه گزینه آپدیت وجود دارد، کتابخانه را آپدیت نمایید.
          بررسی و نتیجه را از همین طریق اعلام فرمایید.

  • سلام
    من شیلد آردونیو Arduino Shield 2*16 LCD ( نمونه سوم همین مقاله ) رو تهیه کردم . برای تست عین کد های شما رو داخل اردونیو آپلود کردم اما با زدن کلید ها هیچ تصویری نشون داده نمیشه فقط lcd روشن هست .
    مشکل رو چطوری میتونم برطرف کنم ؟
    درایور های شیلد رو هم همانند خود نمونه از لینک فروشگاه دانلود کردم و داخل فولدر library کپی کردم .
    هیچ خطایی هم نمیگیرم

  • سلام،برای راه اندازی مثالها در IDE این کد دستوری را کپی میکنم:
    LCD(12,10,11,5,4,3,2)
    در صورتی که پایه R/W معرفی نشود نمایشگر ۴*۲۰ بنده بالا نمی آید و دلیل آن هنوز برایم نامعلوم است.LCD(12,11,5,4,3,2)
    لطفا راهنمایی فرمایید.(علی اکبر برسلانی)

    • سلام، با توجه دقیق تر به مطالب ارائه شده شما و توجه دقیق تر به توضیحاتIDE ابهام بنده رفع شد.
      درحالت lcd(12,11,5,4,3,2) باید پایه R/W را به GND وصل میکردم.

      • سلام،لطفا در مورد سه عددی که در معرفی ورژن نرم افزار وجود دارد توضیح دهید.
        مثلا (۱٫۸٫۹ ) ولطفا بفرمایید جهت نصب ide در سیستم، باید به چه مواردی از سیستم خودمان و ورژن انتخابی توجه داشته باشیم؟
        نیز بفرمایید آخرین ورژن موجود را چگونه میتوان استعلام کرد.

        • با سلام
          این سه عدد مربوط به ورژن نرم افزار آردوینو می‌باشد. در حال حاضر اگر نسخه شما ۱٫۸٫۹ است آخرین نسخه از آن می‌باشد. جهت اطلاع از ورژن های جدید نرم افزار آردوینو از طریق پیام در نرم افزار به شما اطلاع رسانی خواهد کرد.

  • سلام وقت بخیر
    من از LCD کاراکتری ۱۶*۲ با I2C استفاده کردم و با روشن شدن مهتابی ال سی دی هنگ میکنه!
    چه کنم؟

  • میشه لطفا اتصالات پایه های ال سی دی نوع سوم را برای ساخت فاصله سنج بگید و اینکه به کدام کد ها نیاز دارد

    • با سلام
      جهت اتصال شیلد ال سی دی به آردوینو تنها کافیست همانند تصویر ال سی دی را روی پایه های آردوینو قرار دهید. در ویدیو هم نشان داده شده است. برای راه اندازی شیلد ال سی دی همانطور که در متن آموزش گفته شده است بایستی دو کتابخانه LiquidCrystal و DFR_LCD_Keypad را به کدها اضافه کنید که در نمونه کد قرار گرفته شده هم مشخص شده است. همچنین کدنویسی این برنامه بر عهده خودتان می‌باشد. تنها کافیست با در اختیار داشتن دو نمونه کدهای سایت آن ها را تعمیم دهید. بررسی و از همین طریق سوالات خود را بپرسید تا راهنمایی شود.

  • با عرض سلام و خسته نباشید
    در راه اندازی ال سی دی با I2C ، نوشته مورد نظر روی LCD نشون داده میشه ولی نور صفحه بشدت کمه. پتانسیومتر رو هم بیشتر میکنم بازم نور ضفحه کمه و نوشته به زور خونده میشه. حتی نور دور حاشیه LCD هم خاموشه. چراغ قرمز رنگ پشت LCD هم همیشه روشنه.
    اگه راهنماییم کنین یک دنیا ممنون میشم. سپاسگزارم

  • سلام من با i2c راه اندازی کردم ولی اصلا کار نکرد هم ارر می زارم هم عکس
    Arduino: 1.8.10 (Windows 10), Board: “Arduino/Genuino Uno”

    C:\Users\PAIA\AppData\Local\Temp\arduino_modified_sketch_533461\sketch_jan15f.ino: In function ‘void setup()’:

    sketch_jan15f:7:17: error: no matching function for call to ‘LiquidCrystal_I2C::begin(int, int)’

    lcd.begin(16,2);

    ^

    In file included from C:\Users\PAIA\AppData\Local\Temp\arduino_modified_sketch_533461\sketch_jan15f.ino:2:0:

    C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: candidate: void LiquidCrystal_I2C::begin()

    void begin();

    ^~~~~

    C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

    Multiple libraries were found for “Wire.h”
    Used: C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\hardware\arduino\avr\libraries\Wire
    Multiple libraries were found for “LiquidCrystal_I2C.h”
    Used: C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\Arduino-LiquidCrystal-I2C-library-master
    exit status 1
    no matching function for call to ‘LiquidCrystal_I2C::begin(int, int)’

    Invalid library found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\libraries: no headers files (.h) found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\libraries
    Invalid library found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\tools: no headers files (.h) found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\tools
    Invalid library found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\libraries: no headers files (.h) found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\libraries
    Invalid library found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\tools: no headers files (.h) found in C:\Users\PAIA\Desktop\arduino-1.8.10-windows\arduino-1.8.10\libraries\tools

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    عکس :[URL=http://uupload.ir/view/y9x0_screenshot_(7).png][IMG]http://uupload.ir/files/y9x0_screenshot_(7)_thumb.png[/IMG][/URL]

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

  • سلام و عرض خسته نباشید خدمت شما یه آردینو UNO دارم که بهش LCD Keypad shield رو روی بردم جایگزاری کردم منتها هیچی نشون نمیده ممنون میشم راهنمایی کنید

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

  • با سلام
    من واسه یه پروژه نیاز هست تا از آردینو راه انددازی بکنم.
    تخصصی تو زمینه برق ندارم . مراحل بالا را عینا اجرا کردم ولی LCD ( I2C ) روشن میشه ولی هیچ چیز نمایش نمیده.
    عیب کار کجاست به نضر شما؟

  • سلام ممنون از آموزش زیباتون من چجوری می تونم بیه آردوینو بگم یه متنی رو نمایش بده و بعد از چند ثانیه دیگه نمایش نده

    • با سلام
      از توجه شما ممنونم. به عنوان مثال میتوانید پس از نمایش متن مورد نظر توسط تابع Delay زمان مورد نظر را تعریف کرده و پس از آن از دستور lcd.clear() استفاده کنید.

  • سلام آموزش شما واقعا عالی هست من یه سوال داشتم اون هم اینکه فرق بین وصل کردن نمایشگر به صورت ۴ بیتی و۸ بیتی در آردوینو چیه

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

  • تمام موارد رو انجام دادم برای LCD keypad Shield

    avrdude: Version 6.3-20190619
    Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
    Copyright (c) 2007-2014 Joerg Wunsch

    System wide configuration file is “/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf”
    User configuration file is “/Users/nima/.avrduderc”
    User configuration file does not exist or is not a regular file, skipping

    Using Port : /dev/cu.usbmodemFD121
    Using Programmer : arduino
    Overriding Baud Rate : 115200
    AVR Part : ATmega328P
    Chip Erase delay : 9000 us
    PAGEL : PD7
    BS2 : PC2
    RESET disposition : dedicated
    RETRY pulse : SCK
    serial program mode : yes
    parallel program mode : yes
    Timeout : 200
    StabDelay : 100
    CmdexeDelay : 25
    SyncLoops : 32
    ByteDelay : 0
    PollIndex : 3
    PollValue : 0x53
    Memory Detail :

    Block Poll Page Polled
    Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
    ———– —- —– —– —- —— —— —- —— —– —– ———
    eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
    flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
    lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
    signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

    Programmer Type : Arduino
    Description : Arduino
    Hardware Version: 3
    Firmware Version: 4.4
    Vtarget : 0.3 V
    Varef : 0.3 V
    Oscillator : 28.800 kHz
    SCK period : 3.3 us

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.00s

    avrdude: Device signature = 0x1e950f (probably m328p)
    avrdude: reading input file “/var/folders/bj/_7d2wn8102l11wkxmv2b3tth0000gn/T/arduino_build_731189/sketch_jun11b.ino.hex”
    avrdude: writing flash (2440 bytes):

    Writing | ################################################## | 100% 0.41s

    avrdude: 2440 bytes of flash written
    avrdude: verifying flash memory against /var/folders/bj/_7d2wn8102l11wkxmv2b3tth0000gn/T/arduino_build_731189/sketch_jun11b.ino.hex:
    avrdude: load data flash data from input file /var/folders/bj/_7d2wn8102l11wkxmv2b3tth0000gn/T/arduino_build_731189/sketch_jun11b.ino.hex:
    avrdude: input file /var/folders/bj/_7d2wn8102l11wkxmv2b3tth0000gn/T/arduino_build_731189/sketch_jun11b.ino.hex contains 2440 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 0.33s

    avrdude: verifying …
    avrdude: 2440 bytes of flash verified

    avrdude done. Thank you.

    اما چیز بهم نشون نمیده !!

  • سلام خانم پوربلورچیان ،طبق آموزشتون من پایه vo را به گراند اردینو وصل کردم و … متن به طوراصلا واضح نیست و ال سی دی به طور کامل مربع های پرشده نشون میده چرا؟؟؟

    • با سلام
      در این خصوص در صورت عدم ارتباط از یک پتانسیومتر ۱۰ کیلو برای این پایه میتوانید استفاده کنید.

  • درود بر شما
    ببخشید من از ال سی دی نوع دوم استفاده میکنم
    کد خودتون رو آپلود می کنم اما توی قسمت ; ( lcd.begin(16,2
    این ارور رو میده:: error: no matching function for call to ‘LiquidCrystal_I2C::begin(int, int)’

    • با سلام
      در این خصوص ممکن است کتابخانه نصب نشده باشد. بررسی و نیتجه را اعلام فرمایید.

  • سلام خسته نباشید
    ببخشید من lcd کاراکتری رو با رابط i2c راه اندازی کردم و لحیم کردم و لحیم ها هیچ کدوم به یک دیگه نخوردن ولی برنامه رو اپلود میکنم فقط تصویر اول که چند تا مستطیل هست بالا میاد
    چیکار باید بکنم
    کمکم کنید
    ممنون

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

  • سلام
    من کد نمونه کد آردوینو نمایش متن در LCD ساده کاراکتری روی اردویونو ریختم و ال سی دی رو به درایورش وصل کردم ولی فقط تو خط اول مکعب های سیاه نشو داد

  • سلام وقت بخیر
    من یک ال سی دی کاراکتری ۱۶ *۲ رو به آردوینو uno وصل کردم و وقتی کدو آپلود میکنم فقط صفحه نمایش روشن میشه و هیچ چیزو نمایش نمیده..ممنون میشم اگه راهنمایی کنید
    در ضمن کتابخونه هم نصبه

  • سلام ممنون از پست خوبتون. من۱۶*۲ lcdرو که راه اندازی کردم به صورت خونه های مربع مربع متن مورد نظرمو نمایش میده مشکل از کجاست؟ از پتانسیومتر هم استفاده کردم ولی مشکل رفع نشد تغذیه هم ۵ ولت از اردوینو گرفتم.ممنون از راهنمایی شما

    • با سلام
      در صورتیکه مربع نمایش داده می‌شود پیشنهاد می‌شود از مقاومت ۲٫۲ کیلو بین پایه V0, GND استفاده کنید.

  • سلام. وقت شما بخیر. میخوام یک عدد رو در سریال مانیتور مجازی نمایش بدم. virtual terminal و ماژول یونو رو در پروتئوس به همدیگه وصل کردم اما بعد از نوشتن برنامه در نرم افزار آردوینو هنگام کامپایل کردن خطای serial wasn’t declared in this scope میده. برای رفع این خطا باید چکار کرد؟

    • با سلام
      کاربر گرامی سوال شما مرتبط با این آموزش نیست و این مورد توسط بنده تست نشده است.

  • سلام دوستان مشکل نمایش ندادن نوشته در I2C رو خیلیا مثل من داشتن ولی من یک راه حلی دارم که مشکل خیلیارو حل میکنه! اگر در حالت استفاده از I2C همه چیز درست کار میکرد ولی کاراکتر نمایش داده نمیشد شما باید یک پیچ که بر روی ماژول I2C هست رو بچرخونید تا تصویر واضح و شفاف بشه و نمایش داده بشه.

    • با سلام
      کاربر گرامی از اینکه تجربیات خود را با دیگر کاربران به اشتراک می‌گذارید سپاسگزاریم.

    • با سلام
      در این خصوص اتصالات شما قطعا اشتباه است و یا کابل های مورد استفاده ممکن است قطعی داشته باشد. همچنین رنج مقاومت هم بین ۱ تا ۱۰ کیلو بایستی باشد.

  • سلام. ببخشید در مورد نمایشگر های ریپ رپ ۱۲۸۶۴ فول گرافیک اسمارت کنترلر که برای پرینتر سه بعدی استفاده میشه به یه مشکلی برخوردم اونم این که تصویر ال سی دی میاد ولی نوشته هاش نمیاد. اگه کمک ممنون میشم

    • با سلام
      کاربر گرامی این مورد توسط بنده تست نشده است. از دیگر کاربرانی که در این مورد اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.

  • سلام میشه یه راهنمایی کنین راجب اینکه کدوم پین ال سی دی ۲ در ۱۶ بدون i2c رو به آردوینو وصل کنم

    • با سلام
      جدول اتصالات در متن آموزش با عنوان تغییرات سال ۹۹ اضافه شده است. طبق جدول اتصالات را انجام دهید.

  • سلام
    میخوام تجربه کاریم رو که الان بهش برخوردم بگم

    من از دانشجوکیت شیلد LCD رو خریدم بعد برنامه رو که لود کردم دیدم صفحه همونطوری روشن مونده دریغ از یه حرف
    بعدش کلی سرچ فلان
    فهمیدم کار کار همون پتانسیومتر مخصوص بکلایته
    کمترش کردم دیدم چیزایی نشون میده
    و الان کار میکنه!
    خیلی ناامید بودم یهو درست شد

    • با سلام
      کاربر گرامی از اینکه تجربه ی خود را با دیگر کاربران به اشتراک گذاشته اید، صمیمانه سپاسگزاریم.
      امیدواریم این آموزش مفید واقع شده باشد.

  • با درود ، با چه دستوری میتوان ، وقتی یک ورودی دیجیتال را که به اردواینو متصل است high شود ، ال سی دی وارد صفحه جدید شود ؟

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

  • سلام اگه بخوام این کد هارو ب پروژه رطوبت خاک اضافه کنم باید ترتیپ کد داشته باشه یا ن فقط کپی پیست کنم

    • با سلام
      قطعا بایستی دستورات فراخوانی ال سی دی را به ترتیب در حلقه های void setup و void loop قرار دهید. در صورتیکه آموزش را کامل مطالعه کنید روش اجرا بسیار ساده خواهد بود.

  • سلام اگه بخوام این کد هارو ب پروژه رطوبت خاک اضافه کنم باید ترتیپ کد داشته باشه یا ن فقط کپی پیست کنم؟؟؟؟

    • با سلام
      قطعا بایستی دستورات فراخوانی ال سی دی را به ترتیب در حلقه های void setup و void loop قرار دهید. در صورتیکه آموزش را کامل مطالعه کنید روش اجرا بسیار ساده خواهد بود.

  • سلام.من فقط چراغ ال سی دی روشن میشه … کاراکتر را نشون نمیده…از مقاومت های ۱۰k و۲۲۰ یا پتانسیومتر هم استفاده کردم ولی فایده نداره

  • من از شیلد LCD 2*16 استفاده میکنم که آموزش راه اندازیشم گذاشتین .. کتابخونه رو ادد کردم و برنامه رو که آپلود میکنم فقط صفحه ی آبی نمایش میده. مشکل چیه ؟!

  • سلام ببخشید من یدونه شیلد ال سی دی خریدم و کد های شما رو روش آپلود کردم ولی فقط ال سی دی روشن میشه و هیچ متنی بالا نمیاد چیکار باید بکنم ممنون

    • با سلام
      در این خصوص از آپدیت کتابخانه مطمئن شوید. سپس از پتانسیومتر قرار گرفته بر روی شیلد برای افزایش شدت نور ال سی دی استفاده کنید.

        • با سلام
          در منو Arduino بر روی tools کلیک کنید. سپس بر روی manage libraraies کلیک کنید. در صفحه ی باز شده کتابخانه ی مورد نظر را سرچ کنید.
          اگر در کتار اسم آن گزینه update باشد. میتوانید آپدیت کنید.

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

  • سلام و خسته نباشید
    ممنون بابت اظلاعات خوبتون
    اگر بخوام که چند متغیر را باهم نشان بدهم چجوری باید انجام بدم مثلا برای نوشتن ساعت در ccs مینویسم:
    printf(lcd_putc,”%d:%d:%d”,h,m,s);
    اما در آردوینو که %d را میزنم ایراد میگیره آیا روشی هست که بشه اینطور نشون داد مثل ساعت؟؟؟؟

    • با سلام
      همین مورد در کتابخانه DS3231 در مثال های پیش فرض قرار دارد. تفکیک داده ها و سپس نمایش بر روی ال سی دی

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

    • با سلام
      برای نمایش دیتا روی ال سی دی از دستور LCD.PRINT در کد برنامه استفاده می‌شود. در همین آموزش کامل توضیح داده ام.

  • سلام آجی.
    عزیزم بی زحمت هر موقع تایم داشتی آموزشِ اتصال نمایشگر ۱۶*۲ به آردوینو برای پروژه‌ی تسترِ قطعات الکترونیکی رو هم با کلام و نوشتارِ شیوا و فصیحِ خودت آموزش بده.
    رشته‌ام الکترونیکه،
    برای پروژه‌ی دانشگاهم دارم میسازمش.
    به اینجور کانفیگ‌ها Component Tester گفته میشه.
    مرسی عجقم.

    • با سلام
      کاربر گرامی سپاس از همراهی شما
      بررسی و در صورت امکان آموزش خواهم داد.

  • با سلام و خسته نباشید ،سوالی داشتم و اینکه اگه چندتا ال سی دی مثلا ۸تا ۲در۲۰ ال سی دی را چطور به اردینو متصل میشوند ، و بعد برنامه نویسی آن چگونه خواهد بود ، مثلا LCD1,LCD2, LCD3, چطور بهم وصل مولتی پلکس میشوند و چطور برنامه نویسی میشوند به حساب آدرس دهی میشوند هرکدام از دل سی دی کارکتر خودش را دریافت کند مثل بهم بستن چند دات ماتریس ، هست یا نمیشه ال سی را بهم وصل کرد ممنون

    • با سلام
      برای اتصال چندین ال سی دی میتوانید از پایه های دیتا اشتراک گرفته و به آردوینو اتصال دهید و در کد برنامه برای هر ال سی دی کلاس منحصر به فرد فراخوانی کنید مانند:
      LiquidCrystal lcd1(12, en1, 5, 4, 3, 2);
      LiquidCrystal lcd2(12, en2, 5, 4, 3, 2);

  • سلام خسته نباشید
    خیلی مطلب خوبی بود دستتون درد نکنه
    فقط میشه از اتصالات عکس بهتری بزارید ؟ ممنون جوری که ادم بتونه ببینه چی به کجا خورده

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

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

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

    • با سلام
      در این خصوص بایستی ولتاژ و جریان مدار را بررسی کنید.

  • سلام .
    خسته نباشید میگم خدمت شما استاد عزیز که آموزش‌های ارائه داده شده توسط شما واقعا عالی و خیلی کامل ارائه شده. ممنونم از تمام زحمات شما