اسکرول کردن متن 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 characters, start character =0
else first = last-16; // 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
}
هنگامیکه بیشتر از یک شرط وجود داشته باشد که نتیجه هرکدام متفاوت باشد، دستور if else کارآمدتر از دو دستور ()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
از این دستورات کارآمدتر هستند:
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) یک زیرمجموعه متشکل از اولین تا آخرین کاراکتر متن را ایجاد میکند.