شیلد ال سی دی آردوینو 16*2
شیلد ال سی دی ( Lcd 16*2 Keypad ) یکی از محبوب ترین شیلدهای آردوینو می باشد.
این شیلد شامل امکانات زیر می باشد:
- یک Lcd کاراکتری 2×16 با بک لایت آبی رنگ
- 6 عدد کلید فشاری
- یک عدد Led پاور که با اعمال تغذیه روشن خواهد شد
- یک عدد پتانسیومتر که برای تنظیم کنتراست نمایشگر استفاده می شود.
- ترمینال ICSP که برای پروگرام کردن میکرو مورد استفاده قرار می گیرد.
- ترمینال های واسطه که به میکرو کنترلر متصل می باشند و برای اضافه کردن شیلد های دیگر مورد استفاده قرار می گیرند.
در زیر شماتیک مدار شیلد LCD آردوینو را می بینید:
شیلد آردوینو با بردهای Uno, Diecimila, Duemilanove و بردهای دیگر آردوینو که از نظر ابعادی مشابه آردوینو Uno می باشند سازگار می باشد،
به این معنی که به وسیله هدرهایی که در این برد قرار دارد می توان به برد های آردوینو متصل کرد و بدون هیچ رابطی از آن استفاده نمود.
ارتباط شیلد LCD Keypad آردوینو با میکروکنترلر در برد آردوینو Uno به صورت زیر میباشد:
قسمت اول LCD
در ابتدا می توانید برای مشاهده مشخصات برد آردوینو Uno به اینجا مراجعه نمایید
همانطور که میدانید Lcd کاراکتری را در دو مد 4 بیتی و 8 بیتی می توان راه اندازی نمود که در این برد ( شیلد ال سی دی آردوینو ) از مد 4 بیتی استفاده شده است.
همچنین برای کنترل نور زمینه شیلد ال سی دی آردوینو یک عدد ترانزیستور قرار دارد که توسط میکرو می توان بک لایت آن را روشن یا خاموش نمود.
نحوه اتصال پایه های LCD Keypad shield به میکروکنترلر به صورت زیر می باشد:
همانطور که در مدار شکل بالا مشاهده می کنید یک عدد پتانسیومتر به پایه VO متصل شده است
که شدت نور کاراکترهای موجود در را کم یا زیاد می کند.
نکته: در صورتی که روی شیلد Lcd Keypad آردوینو هیچ کاراکتری ظاهر نمی شود یا تمامی کاراکترهای آن یکدست روشن هستند،
برای رفع این مشکل ابتدا از پروگرام بودن صحیح میکرو مطمئن شوید
و بعد با تنظیم این پتانسیومتر شدت نور کاراکترهای Lcd را روی مقدار دلخواه تنظیم نمایید.
همچنین ترانزیستور Q1 به پایه کااتد بک لایت lcd متصل شده که بیس آن به پایه D10 برد آردوینو متصل شده است
و با یک کردن این پایه بک لایت روشن و بالعکس با صفر کردن خاموش خواهد شد.
نکته دیگری که درباره این مدار مشاهده می شود پایه R/W lcd می باشد که به میکرو متصل نشده است
و مستقیما به زمین متصل شده است که مشخص می کند Lcd همیشه در حالت Write می باشد و اطلاعاتی از آن خوانده نمی شود.
قسمت دوم Keypad
در شیلد ال سی دی آردوینو تعداد 6 عدد کلید فشاری یا Push Button وجود دارد
که یکی از آنها برای ریست میکرو بوده و 5 عدد آن توسط میکروکنترلر قابل دسترس می باشد.
نکته ای که در مورد این کلید ها وجود دارد این است که کلیدهای شیلد Lcd Keypad به یک پایه ADC میکرو (ورودی آنالوگ به دیجیتال) متصل شده است.
همانطور که در مدار شکل زیر مشاهده می کنید
این 5 کلید به همراه مقاومت هایی که با یکدیگر سری شده اند به پایه AD0 میکرو متصل خواهند شد.
طرز کار این مدار به این صورت است که با فشردن هر کدام از این کلیدها محل اتصال آن کلید با مقاومت زمین شده
و در نهایت پس از خلاصه کردن مدار یک تقسیم ولتاژ مقاومتی خواهیم داشت.
برای مثال در صورتی که کلیدی زده نشده باشد روی پایه ADC میکرو 5 ولت خواهد بود
و اگر کلید Right را بزنیم مقدار آن صفر ولت خواهد شده،
و اگر کلید Up را بزنیم یک تقسیم مقاومت شامل مقاومت های 2 کیلو اهم و 330 اهم می شود
که مقدار ولتاژ این پایه حدود 0.7 خواهد شد
به همین ترتیب برای مابقی کلیدها می توانید مقدار ولتاژ تحویلی به میکرو را محاسبه نمایید
و با خواندن مقدار ADC میکرو کلید فشرده شده را بیابید.
مثال برنامه آردوینو:
راه اندازی شیلد Lcd در برنامه آردوینو:
در مثال زیر با فشرده شدن کلیدها نام کلید در سطر دوم نمایشگر نشان داده خواهد شد.
برای آشنایی و نحوه اولین راه اندازی برد آردوینو به اینجا مراجعه نمایید.
دانلود فایل txt برنامه تست Lcd و Keypad شیلد آردوینو.
//Sample using LiquidCrystal library
#include
#include
/*******************************************************
This program will test the LCD panel and the buttons
Mark Bramwell, July 2010
********************************************************/
// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// define some values used by the panel and buttons
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
#define repeat 6
// read the buttons
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741
// we add approx 50 to those values and check to see if we are close
if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE; // when all others fail, return this...
}
void setup()
{
lcd.begin(16, 2); // start the library
lcd.setCursor(0, 0);
lcd.print(" ideaELEC.com "); // print a simple message
}
void loop()
{
lcd_key = read_LCD_buttons(); // read the buttons
lcd.setCursor(0, 1); // move to the begining of the second line
switch (lcd_key) // depending on which button was pushed, we perform an action
{
case btnRIGHT:
{
lcd.print("Right key ");
break;
}
case btnLEFT:
{
lcd.print("Left Key ");
break;
}
case btnUP:
{
lcd.print("Up Key ");
break;
}
case btnDOWN:
{
lcd.print("Down Key ");
break;
}
case btnSELECT:
{
lcd.print("Select Key ");
break;
}
case btnNONE:
{
lcd.print("Push the buttons");
break;
}
case repeat:
break;
}
}
نقد و بررسیها
هنوز بررسیای ثبت نشده است.