مقدمه
در این آموزش نحوه کار با شیلد نمایشگر 2×16 آردوینو را با انجام 3 پروژه کاربردی خواهید آموخت.
آنچه در این آموزش یاد میگیرید
- نحوه راه اندازی ساده و شناسایی کلیدها
- نحوه اسکرول کردن متن
- نحوه نمایش کاراکترهای خاص
شیلد نمایشگر 1602 آردوینو
نمایش اطلاعات در پروژه های الکترونیکی همیشه از ضرروی ترین مسئله ها بوده است. روش های مختلفی برای نمایش اطلاعات وجود دارد. از روش های ساده مانند استفاده از LED و 7segment تا روش های جذاب تر مانند استفاده از LCDها یا نمایش روی کامپیوتر. استفاده از LCDها همیشه جزو محبوب ترین روش ها برای نمایش اطلاعات بوده است، LCDها به دو دسته کلی کاراکتری و گرافیکی تقسیم می شوند.
یکی از رایج ترین، ارزان ترین و ساده ترین LCD های موجود، LCD کاراکتری می باشد، این LCD شامل چند سطر و ستون می باشد و حروف و اعداد را در خانه های ایجاد شده بوسیله سطرها و ستون ها می نویسد. بعنوان مثال LCD کاراکتری 16×2 دارای 2 سطر و 16 ستون می باشد پس می تواند 32 کاراکتر را به نمایش بگذارد.
نحوه کار با این LCD ها بسیار ساده می باشد. همچنین این نمایشگرها با همه میکروکنترلرها و بوردهای پردازنده سازگاری کامل دارند. برای استفاده راحت تر از این LCD ها مدل 16×2 آن به همراه 4 کلید برای ساخت منو، بصورت شیلد سازگار با بوردهای آردوینو تهیه شده است. این شیلد کلید(بالا، پایین، راست، چپ و انتخاب) برای ساخت منو دارد.
نحوه استفاده از شیلد LCD آردوینو
برای استفاده از شیلد نمایشگر آردوینو لازم است ابتدا پایه های آن و نحوه ارتباط آن با آردوینو را بدانید.
Arduino Pin | Shield Pin |
---|---|
8 | LCD RS |
9 | LCD Enable |
7 | LCD D7 |
6 | LCD D6 |
5 | LCD D5 |
4 | LCD D4 |
10 | LCD Backlight |
A0 | Buttons |
از باقی پایه های آردوینو که توسط شیلد اشغال نشده اند می توانید برای سایر قسمتهای پروژه خود استفاده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
چگونه کلیدها را بخوانیم؟
در این شیلد برای صرفه جویی در مصرف پایه های دیجیتال، همه 4 کلید به پایه آنالوگ 0 متصل شده اند و برای خواندن آنها باید از روش ADC استفاده کنیم. کلیدها هنگام فشرده شدن با توجه به مدار تقسیم مقاومتی داخلی که دارند مقداری را برروی پایه A0 برمی گردانند که با توجه به آن مقدار نوع کلید را شناسایی می کنیم.
Key | A0 Value |
---|---|
RIGHT | 0-60 |
UP | 60-200 |
DOWN | 200-400 |
LEFT | 400-600 |
SELECT | 600-800 |
/*
Arduino 2x16 LCD - Detect Buttons
modified on 18 Feb 2019
by Saeed Hosseini @ Electropeak
Home
*/
#include <LiquidCrystal.h>
//LCD pin to Arduino
const int pin_RS = 8;
const int pin_EN = 9;
const int pin_d4 = 4;
const int pin_d5 = 5;
const int pin_d6 = 6;
const int pin_d7 = 7;
const int pin_BL = 10;
LiquidCrystal lcd( pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Electropeak.com");
lcd.setCursor(0,1);
lcd.print("Press Key:");
}
void loop() {
int x;
x = analogRead (0);
lcd.setCursor(10,1);
if (x < 60) {
lcd.print ("Right ");
}
else if (x < 200) {
lcd.print ("Up ");
}
else if (x < 400){
lcd.print ("Down ");
}
else if (x < 600){
lcd.print ("Left ");
}
else if (x < 800){
lcd.print ("Select");
}
}
بگذارید نگاهی عمیق تر به کد بیاندازیم:
#include <LiquidCrystal.h>
کتابخانه مورد نیاز برای کار با LCD کاراکتری.
LiquidCrystal LCD( pin_RS, pin_EN, pin_d4, pin_d5, pin_d6, pin_d7);
تعریف شی LCD با توجه به پایه های متصل شده به آردوینو.
lcd.begin(16, 2);
پیکربندی اولیه LCD با مشخص کردن تعداد ستون ها و سطر های آن، آرگومان اول تعداد ستون ها و آگومان دوم تعداد سطرها.
برخی از مهمترین توابع کار با LCD:
Function | Description |
---|---|
lcd.clear(); | Clear LCD screen |
lcd.print(data); | Display informations in string or number |
lcd.setCursor(col,row); | Change the start point position |
lcd.scrollDisplayLeft(); | Shift the cursor one block to the left |
lcd.scrollDisplayRight(); | Shift the cursor one block to the right |
lcd.creatChar(num,data); | Create a desired character(character number,character string) |
شما می توانید در سایت آردوینو توابع بیشتری ببینید.
چگونه یک متن را اسکرول کنیم؟
با استفاده از توابع بالا می توانیم براحتی این کار را انجام دهیم:
/*
Arduino 2x16 LCD - LCD Scroll
modified on 18 Feb 2019
by Saeed Hosseini
Home
*/
#include <LiquidCrystal.h>
const int RS = 8;
const int EN = 9;
const int d4 = 4;
const int d5 = 5;
const int d6 = 6;
const int d7 = 7;
const int pin_BL = 10; // arduino pin wired to LCD backlight circuit
LiquidCrystal lcd( RS, EN, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
lcd.print("Electropeak");
delay(1000);
}
void loop() {
// scroll 11 positions ("Electropeak" length) to the left
for (int positionCounter = 0; positionCounter < 11; positionCounter++) {
lcd.scrollDisplayLeft();
delay(400); //Scrolling speed
}
// scroll 27 positions ("Electropeak" length + display length) to the right
for (int positionCounter = 0; positionCounter < 27; positionCounter++) {
lcd.scrollDisplayRight();
delay(400);
}
// scroll 16 positions (display length) to the left
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(50);
}
delay(1000);
}
چگونه یک کاراکتر خاص را نمایش دهیم؟
شما می توانید در هر خانه از LCD کاراکتر مدنظر خود را بسازید. برای این کار ابتدا می بایست کاراکتر مورد نظر را به آرایه ای از کدها تبدیل کنید سپس این آرایه را در LCD نشان دهید. برای تبدیل کاراکتر به کد می توانید از سایت های آنلاینی نظیر این استفاده کنید، کاراکتر خود را طراحی کنید سپس آرایه تولید شده را در کد خود قرار دهید.
/*
Arduino 2x16 LCD - LCD Special Char
modified on 18 Feb 2019
by Saeed Hosseini
Home
*/
#include <LiquidCrystal.h>
const int RS = 8;
const int EN = 9;
const int d4 = 4;
const int d5 = 5;
const int d6 = 6;
const int d7 = 7;
const int pin_BL = 10; // arduino pin wired to LCD backlight circuit
LiquidCrystal lcd( RS, EN, d4, d5, d6, d7);
// smily face
byte smiley[8] = {
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
// Battery sign
byte battery[] = {
B01110,
B01010,
B11011,
B10001,
B11111,
B11111,
B11111,
B11111
};
// arrow right
byte R_arrow[8] = {
B00000,
B00100,
B00010,
B11111,
B00010,
B00100,
B00000,
B00000
};
// arrow left
byte L_arrow[8] = {
B00000,
B00100,
B01000,
B11111,
B01000,
B00100,
B00000,
B00000
};
// Ohm sign
byte ohm[8] = {
B00000,
B01110,
B10001,
B10001,
B10001,
B01010,
B11011,
B00000
};
// Heart
byte heart[8] = {
B00000,
B01010,
B10101,
B10001,
B10001,
B01010,
B00100,
B00000
};
int i = 0;
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, smiley);
lcd.createChar(1, battery);
lcd.createChar(2, R_arrow);
lcd.createChar(3, L_arrow);
lcd.createChar(4, ohm);
lcd.createChar(5, heart);
lcd.createChar(6, ohm);
for (int n = 0; n < 6; n++)
{
lcd.setCursor(n * 2, 0);
lcd.write(n);
}
}
void loop() {
}
lcd.createChar
آرایه شما را در خانه ای از حافظه ذخیره می کند و lcd.write
آنرا نمایش می دهد. پروژه نمونه برای شیلد نمایشگر 1602 آردوینو
یک گام جلوتر
- سعی کنید یک منو با قابلیت انتخاب گزینه ها بسازید.
Comments (2)
سلام اگه بشه یه اموزش بدون شیلد یا lcd ساده بزارید وبه ایمیلم بفرستید
با سلام
تمامی کدهای قرار داده شده در سایت ،درزمان کپی شدنشون در نرم افزار آردویینو خطای LCD.print (“Select”); یا #include میدن…
ممنون میشم بررسی و راهنمایی بفرمایید .