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

0

چگونگی تنظیم کنتراستLCD کاراکتری با PWM، اسکرول کردن متن، موقعیت‌یابی مکان‌نمای LCD

تنظیم کنتراست LCD کاراکتری با PWM

کنتراست LCD کاراکتری می‌تواند با مدولاسیون پهنای باند (PWM) تنظیم‌شده، با یک خازن ۱۰۰ میکروفاراد (۰.۱ میلی فاراد) تنظیم شود. کنتراست LCD کاراکتری با کاهش PWM افزایش می‌یابد.

 خازن‌های الکترولیتی قطبیده می‌شوند و آند باید در ولتاژی بالاتر از کاتد باشد (شکل.1). در سمت کاتد خازن یک علامت “-” و یک نوار رنگی وجود دارد.

تنظیم کنتراست با PWM
شکل 1. تنظیم کنتراست با PWM

پایه تنظیم کنتراست LCD کاراکتری ، V0، با یک خازن بین خروجی PWM و زمین به پایه PWM آردوینو متصل می‌شود. به این منظور باید سه دستور زیر را به انتهای تابع ()void setup اضافه کرد.

int contrast = 9; // PWM pin for contrast
pinMode(contrast, OUTPUT); // define contrast pin as OUTPUT
analogWrite(9, 80); // PWM value of 80 (maximum is 255)

کاهش مقدار PWM کنتراست LCD را کاهش می‌دهد. نور صفحه نمایش LCD به ترتیب با دستورات ()lcd.backlight و () lcd.noBacklight روشن یا خاموش می‌شود.

نمایش متن متحرک بر روی LCD

بجای نمایش متن در یک مکان ثابت بر روی LCD، می‌توان متن را برروی صفحه نمایش LCD اسکرول کرد. زیررشته‌هایی با حداکثر ۱۶ کاراکتر چاپ‌شده و ستون شروع نمایش از سمت راست به سمت چپ منتقل می‌شود. هنگامی‌که اولین زیررشته ۱۶ کاراکتری بر روی LCD نمایش داده شد، اولین کاراکتر حذف و کاراکتر جدید بعدی به زیررشته اضافه می‌شود. این فرآیند حذف یک کاراکتر و اضافه کردن کاراکتر دیگر تکرار می‌شود. متن نوشته شده در کدها در IDE آردوینو بر روی LCD نمایش داده می‌شود.

#include  // include the LiquidCrystal library
int LCDcol = 16; // number of LCD columns
int LCDrow = 4; // number of LCD rows
LiquidCrystal lcd(2,3,4,5,6,7); // define LCD pins RS, E and D4 to D7
int first; // position of first letter in 16 character substring
int last = 0; // position of last letter in 16 character substring
int row = 1; // row of LCD to display text
int col;
String text = "The quick brown fox jumps over the lazy dog \
contains every letter of the alphabet."; // line continuation with \
// character
void setup()
{
lcd.begin(LCDcol, LCDrow); // define LCD dimensions
text = text + " "; // add space at end of text as a buffer
}
void loop()
{
if(last>text.length()+15) last=1; // set first column of substring
if(last<17) first = 0; // substring=17 chars, start char = last-16
if(last>16) col = 0; // substring>16 characters, start column = 0
else col = 16-last; // substring<=16 chars, start col = last-16
lcd.setCursor(col,row); // set cursor position
lcd.print(text.substring(first, last)); // print substring
last = last +1; // increment last
delay(250); // delay 250ms
} 

هنگامی‌که بیش‌تر از یک شرط وجود داشته باشد که نتیجه هرکدام متفاوت باشد، دستور else if کارآمدتر از دو دستور ()if است.

برای مثال، اگر چهار شرط متفاوت وجود داشته باشد، که هرکدام نتیجه خاص خود را دارد چهار دستور زیر 

 if (condition A is true) outcome A

else if (condition B is true) outcome B

else if (condition C is true) outcome C

else  outcome D // if conditions A, B and C 

are not true then outcome D

  از دستورات زیر کارآمدتر هستند:

if (condition A is true) outcome A
if (condition B is true) outcome B
if (condition C is true) outcome C
if (condition D is true) outcome D

هنگامی‌که یک شرط else if درست باشد، بجای بررسی همه دستورات else باقی‌مانده کد به دستور بعدی می‌رود، که کارآیی بیش‌تری نسبت به بررسی هر دستور if در یک مجموعه از دستورات if دارد. برای مثال، اگر شرط B درست باشد، نیازی به بررسی شرط C نیست.

تابع ()text.length طول رشته text را مشخص می‌کند. تابع text.substring(first, last) یک زیررشته متشکل از اولین تا آخرین کاراکتر متن را ایجاد می‌کند.

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

Choose your Reaction!
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

redronic.com