شِفر (کود) جستجو

شیلد صفحۀ کلیدها LCD 1602: شِفر (کود) اساسی

شیلد صفحۀ کلیدها LCD 1602: شِفر (کود) اساسی

در این آموزش نحوه برنامه‌نویسی و استفاده از شیلد 1602 LCD Keypad با آردوینو را بررسی خواهیم کرد. این شیلد دارای نمایشگر 16 خصیصه ای در 2 سطر و یک صفحه‌کلید است که امکانات ورودی متنوعی را فراهم می‌کند. تا پایان این راهنما قادر خواهید بود پیام‌ها را نمایش دهید و به فشردن کلیدها به‌طور مؤثر پاسخ دهید.

تمرکز بر ایجاد یک برنامهٔ ساده خواهد بود که فشار دادن کلیدها را تشخیص می‌دهد و پیام‌های مربوطه را روی نمایشگر LCD نشان می‌دهد. برای مشاهدهٔ نمایش تصویری می‌توانید ویدیو را دنبال کنید (در ویدیو در 03:00).

سخت‌افزار تشریح‌شده

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

صفحه‌کلید با استفاده از یک ورودی آنالوگ کار می‌کند که Arduino آن را می‌خواند تا مشخص کند کدام دکمه فشرده شده است. هر دکمه مقاومت منحصربه‌فردی دارد که به میکروکنترلر اجازه می‌دهد بر اساس مقدار آنالوگ دریافتی از حساس(حس کننده)، دکمه را شناسایی کند.

جزئیات ورقۀ مشخصات

تولیدکنندهعمومی
شماره قطعهشیلد کیپد ال‌سی‌دی 1602
ولتاژ منطقی/ورودی-خروجی5 ولت
ولتاژ تغذیه5 ولت
جریان خروجی (برای هر کانال)۲ میلی‌آمپر
جریان پیک (برای هر کانال)20 میلی‌آمپر
راهنمای فرکانس PWMقابل اعمال نیست
آستانه‌های منطقی ورودی0.3 ولتسی‌سیتا 0.7 Vسی‌سی
افت ولتاژ / Rدرین-سورس (روشن)/ اشباعقابل اعمال نیست
محدودیت‌های حرارتی70 °C
بستهقالب سپر
یادداشت‌ها / انواعسازگار با آردوینو اونو

  • اطمینان حاصل کنید که ال‌سی‌دی با 5 V تغذیه می‌شود تا از آسیب دیدن آن جلوگیری شود.
  • در صورت نیاز از مقاومت‌های پول‌آپ مناسب برای کیپد استفاده کنید.
  • نوسانات ناشی از فشردن کلید را در شِفر (کود) حذف کنید تا از فعال شدن چندباره جلوگیری شود.
  • مراقب محدودیت‌های جریان باشید تا از گرم شدن بیش از حد جلوگیری کنید.
  • قبل از روشن کردن مدار، اتصالات را بررسی کنید.

دستورالعمل‌های سیم‌کشی

برای سیم‌کشی شیلد کی‌پد LCD 1602، کافی است آن را مستقیماً در تخت آردوینو قرار دهید. این شیلد طوری طراحی شده است که با پایه‌بندی آردوینو Uno هم‌راستا شود. اطمینان حاصل کنید که پایه‌ها به‌طور محکم متصل شده‌اند.

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

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

در شِفر (کود)، ابتدا کتابخانهٔ لازم برای کنترل نمایشگر LCD را وارد می‌کنیم:

#include <LCD4Bit_mod.h>

این کتابخانه برقراری ارتباط با نمایشگر LCD 1602 را تسهیل می‌کند. سپس یک نمونه از شیء LCD را با تعداد خطوط مشخص‌شده ایجاد می‌کنیم.

سپس ما ال‌سی‌دی را در ... مقداردهی اولیه می‌کنیمsetup()تابع:

lcd.init();

این خط LCD را برای استفاده آماده می‌کند. پس از راه‌اندازی، می‌توانیم یک پیام آزمایشی را با استفاده ازlcd.printIn()تابع.

در حلقهٔ اصلی، ورودی آنالوگ را می‌خوانیم تا فشردن کلیدها را تشخیص دهیم:

adc_key_in = analogRead(0);

این خط مقدار را از صفحه‌کلید می‌خواند. این مقدار به تعیین اینکه کدام کلید فشار داده شده کمک می‌کند با استفاده ازget_key()تابعی که مقدار ADC را به شماره کلید تبدیل می‌کند.

نمایش / چه انتظاری داشته باشید

وقتی شِفر (کود) را اجرا می‌کنید، فشردن دکمه‌ها پیام‌هایی را روی LCD نمایش می‌دهد که متناظر با کلیدی هستند که فشرده شده است. برای مثال، فشردن کلید راست پیام "Right Key OK" را روی نمایشگر نشان می‌دهد (در ویدئو در 05:30). اگر تشخیص کلید به‌درستی کار نمی‌کند، سیم‌کشی را بررسی کنید و مطمئن شوید کتابخانه‌های صحیح در Arduino IDE اضافه شده‌اند.

برچسب‌های زمانی ویدئو

  • 00:00- مقدمه
  • 03:00- نمای کلی شِفر (کود)
  • 05:30- نمایش فشردن کلید
18-Source code for a 602 LCD keypad shield for Arduino
زبان: C++
/*
 * متن خالی است.
 */
#include <LCD4Bit_mod.h>
 // یک شیء برای کنترل یک LCD بسازید.
 // تعداد خطوط در نمایش = ۱
LCD4Bit_mod lcd = LCD4Bit_mod(2);

 // پیام‌های کلیدی
char msgs[5][15] = {"Right Key OK ",
                    "Up Key OK    ",
                    "Down Key OK  ",
                    "Left Key OK  ",
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup() {
  pinMode(13, OUTPUT); // ما از LED اشکال‌زادی برای خروجی یک ضربان قلب استفاده خواهیم کرد.

  lcd.init();
 // به طور انتخابی، حالا تنظیمات نمایش خاص برنامه ما را تنظیم کنید و هر چیزی که LCD در lcd.init() انجام داد را نادیده بگیرید.
 // lcd.commandWrite(0x0F);// نشانه فعال، نمایش فعال، چشمک زدن فعال. (ناخوشایند!)
   lcd.clear();
  lcd.printIn("Robojax.com Testing");

}

void loop() {

	adc_key_in = analogRead(0); // مقدار را از حساس(حس کننده) بخوانید
  digitalWrite(13, HIGH);
  key = get_key(adc_key_in); // به کلید فشار تبدیل کن

	if (key != oldkey) // اگر فشار کلید شناسایی شود
	{
    delay(50); // منتظر زمان دیباونس باشید
		adc_key_in = analogRead(0); // مقدار را از حساس(حس کننده) بخوانید
    key = get_key(adc_key_in); // به کلید فشار تبدیل کن
    if (key != oldkey)
    {
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0); // خط = ۲، x = ۰
  			lcd.printIn(msgs[key]);
      }
    }
  }

 // تاخیر(1000);
  digitalWrite(13, LOW);





}

 // تبدیل مقدار ADC به شماره کلید
int get_key(unsigned int input)
{
	int k;

	for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{

    return k;
        }
	}

    if (k >= NUM_KEYS)
        k = -1; // هیچ کلید معتبری فشرده نشده است

    return k;
}

منابع و مراجع

فایل‌ها📁

هیچ فایلی موجود نیست.