วิธีการใช้งาน LCD 1602 KEYPAD SHIELD กับ Arduino UNOวิธีการใช้งาน LCD 1602 KEYPA

Advertisement


หน้า: [1]
  พิมพ์  
ผู้เขียน หัวข้อ: วิธีการใช้งาน LCD 1602 KEYPAD SHIELD กับ Arduino UNOวิธีการใช้งาน LCD 1602 KEYPA  (อ่าน 360 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
raraymondas
Drift King
*****

การ์ม่า: +0/-0
ออฟไลน์ ออฟไลน์

กระทู้: 37247


ดูรายละเอียด










« เมื่อ: สิงหาคม 06, 2017, 07:32:24 am »



ล้อแม็ก แม็ก แม็กซ์แต่งรถ

↑ ลงทะเบียนรับข่าวสาร

ล้อแม็ก

Advertisement

LCD-1602-KEYPAD-SHIELD-Arduino-UNO
วิธีการใช้งาน LCD 1602 KEYPAD SHIELD กับ Arduino UNO
[/b]วิธีการใช้งาน LCD 1602 KEYPAD กับ Arduino UNO[img width=700,height=505]http://www.star-circuit.com/article/Arduino/LCD%201602%20KEYPAD%20SHIELD.jpg[/img]
เป็นโมดูลจอ 16 ตัวอักษร 2 บรรทัด มาพร้อมกับสวิตช์ 5 ตัว และมีสวิตช์ รีเซ็ต อีก 1 ตัว
สวิตช์ 5 ตัวประกอบด้วย select, up, right, down และ left
หลักการของสวิตช์ คือใช้วงจร voltage divider แบ่งแรงดัน และส่งระดับแรงดันเข้าไปที่ ช่องอนาล็อก A0 เพียงช่องเดียวทำให้ประหยัด IO เอาใว้ใช้งานอย่างอื่นได้
มีวอลลุ่ม 10 k Ohm สำหรับปรับความสว่างของหน้าจอ LCD 
โหมดการเชื่อมต่อของจอแบบ 4 Bit
ใช้เสียบเข้าบอร์ด Arduino UNO ได้เลย                                                                                               
PinFunctionโปรแกรมตัวอย่างพร้อมอธิบาย LCD 1602 KEYPAD กับ Arduino UNO
#include  //นำไลบารี่ LCD เข้ามา
// การตั้งค่าขาอาดูโน่ตามนี้ สำหรับ LCD panel 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //rs, enable, d4, d5, d6, d7
// ประกาศตัวแปร และค่าคงที่ สำหรับ ปุ่มกด
int lcd_key = 0; // เก็บค่า key
int adc_key_in = 0; // เก็บค่า ที่อ่านได้ จาก ขา A0
#define btnRIGHT 0 //ประกาศค่าคงที่ ปุ่ม RIGHT
#define btnUP 1 //ประกาศค่าคงที่ ปุ่ม UP
#define btnDOWN 2 //ประกาศค่าคงที่ ปุ่ม DOWN
#define btnLEFT 3 //ประกาศค่าคงที่ ปุ่ม LEFT
#define btnSELECT 4 //ประกาศค่าคงที่ ปุ่ม SELECT
#define btnNONE 5 //ประกาศค่าคงที่ NONE ถ้าไม่มีการกด
// ฟังชั้นอ่านค่าจากสวิตช์
int read_LCD_buttons() // ประกาศชื่อฟังชั่นเป็นตัวแปรแบบอินทริเจอร์
{
adc_key_in = analogRead(0); // อ่านค่าจากขาอนาล็อก A0 
// เมื่อเรากดปุ่มจะได้ค่าอนาล็อกดังนี้: RIGHT=0, UP=144, DOWN=329, LEFT=504, SELECT=741
if (adc_key_in > 1000) return btnNONE; // ถ้าอ่านค่า A0 ได้เกิน 1000 ให้ return btnNONE กลับไป
if (adc_key_in < 50) return btnRIGHT; // ถ้าอ่านค่า A0 ได้น้อยกว่า 50 ให้ return btnRIGHT กลับไป
if (adc_key_in < 250) return btnUP; // ถ้าอ่านค่า A0 ได้น้อยกว่า 250 ให้ return btnUP กลับไป
if (adc_key_in < 450) return btnDOWN; // ถ้าอ่านค่า A0 ได้น้อยกว่า 450 ให้ return btnDOWN กลับไป
if (adc_key_in < 650) return btnLEFT; // ถ้าอ่านค่า A0 ได้น้อยกว่า 650 ให้ return btnLEFT กลับไป
if (adc_key_in < 850) return btnSELECT; // ถ้าอ่านค่า A0 ได้น้อยกว่า 850 ให้ return btnSELECT กลับไป
return btnNONE; // เมื่อไม่สามารถอ่านค่าไดได้ให้ return btnNONE กลับไป
}
void setup() //ฟังชันค่าเริ่มต้น
{
lcd.begin(16, 2); // เริ่มต้นการใช้งานไลบาลี่ LCD 16 ตัวอักษร 2 บรรทัด
lcd.setCursor(0,0); //เซ็ตเคอเซอร์ให้เป็นตำแหน่ง 00 ตัวอักษรตำแหน่งที่ 0 บรรทัดที่ 0
lcd.print("star-circuit.com"); // สั่งให้ LCD ปริ้น stsr-circuit.com
}

void loop() //ฟังชัน วนลูปทำงานวนไป
{
lcd.setCursor(9,1); // กำหนดตำแหน่งเคอเซอร์ ตัวอักษรตำแหน่งที่ 9 บรรทัดที่ 1
lcd.print(millis()/1000); // แสดงค่าการนับขึ้นทุกวินาทีlcd.setCursor(0,1); // กำหนดตำแหน่งเคอเซอร์ ตัวอักษรตำแหน่งที่ 0 บรรทัดที่ 1
lcd_key = read_LCD_buttons(); // ให้ตัวแปร lcd_key มีค่าเท่ากับ ค่าที่อ่านได้จากฟังชัน read_LCD_buttons()ส่งมา
switch (lcd_key) // นำค่าจาก lcd_key มาใช้โดยจะใช้ switch case
{
case btnRIGHT: //ถ้า lcd_key มีค่าเท่ากับ btnRIGHT ให้ทำคำสั่งในปีกกา
{
lcd.print("RIGHT "); //สั่งให้แสดง RIGHT
break; // สั่งให้ออกจากลูป
}
case btnLEFT: //ถ้า lcd_key มีค่าเท่ากับ btnLEFT ให้ทำคำสั่งในปีกกา
{
lcd.print("LEFT "); //สั่งให้แสดง LEFT
break; // สั่งให้ออกจากลูป
}
case btnUP: //ถ้า lcd_key มีค่าเท่ากับ btnUP ให้ทำคำสั่งในปีกกา
{
lcd.print("UP "); //สั่งให้แสดง UP
break; // สั่งให้ออกจากลูป
}
case btnDOWN: //ถ้า lcd_key มีค่าเท่ากับ btnDOWN ให้ทำคำสั่งในปีกกา
{
lcd.print("DOWN "); //สั่งให้แสดง DOWN
break; // สั่งให้ออกจากลูป
}
case btnSELECT: //ถ้า lcd_key มีค่าเท่ากับ btnSELECT ให้ทำคำสั่งในปีกกา
{
lcd.print("SELECT"); //สั่งให้แสดง SELECT
break; // สั่งให้ออกจากลูป
}
case btnNONE: //ถ้า lcd_key มีค่าเท่ากับ btnNONE ให้ทำคำสั่งในปีกกา
{
lcd.print("NONE "); //สั่งให้แสดง NONE
break; // สั่งให้ออกจากลูป
}
}
}
สั่งซื้อได้ที่ คลิก LCD 1602 KEYPAD



GPSราคาถูก | เครื่องฟอกอากาศในรถยนต์ | Ran Online | Ragnarok | โปรโมชั่น | เกมส์ออนไลน์

Promotion
บันทึกการเข้า
หน้า: [1]
  พิมพ์  
 
กระโดดไป:  


Related Topics
หัวข้อ เริ่มโดย ตอบ อ่าน กระทู้ล่าสุด
จัดจำหน่าย sensor พร้อมด้วยอุปกรณ์ บอร์ดทดลอง Arduino ,mcs51,pic16f877,pic16f887,pic micorcontroller
สินค้าอื่นๆ
emaceatorboost 0 454 กระทู้ล่าสุด พฤศจิกายน 23, 2014, 08:29:31 pm
โดย emaceatorboost
จัดจำหน่าย sensor กับอุปกรณ์ บอร์ดทดลอง Arduino ,mcs51,pic16f877,pic16f887,pic micorcontroller บอร์ด
สินค้าอื่นๆ
emaceatorboost 0 361 กระทู้ล่าสุด ธันวาคม 03, 2014, 04:48:39 am
โดย emaceatorboost
ElecExpert ศูนย์รวบรวมArduino, PIC, Sensor โมดูลต่างๆราคาถูกที่สุด
สินค้าอื่นๆ
teeratum123 0 362 กระทู้ล่าสุด มกราคม 07, 2017, 09:44:56 am
โดย teeratum123
หัวข้อการอบรม Arduino Internet Of Things
สินค้าอื่นๆ
ManUThai2017 4 750 กระทู้ล่าสุด มิถุนายน 04, 2017, 10:34:56 am
โดย xcepter2016
มา อบรม Arduino UNO R3 กันเถอะ ว่า คืออะไร ทำอะไรได้ ?
สินค้าอื่นๆ
Kittipong99010 1 615 กระทู้ล่าสุด มิถุนายน 19, 2017, 07:37:27 pm
โดย Petchchacha
รับทำโปรเจค | project electronic,รับทำโครงงาน,sensor for Arduino
สินค้าอื่นๆ
Bigbombboomz 0 446 กระทู้ล่าสุด มิถุนายน 19, 2017, 03:17:25 pm
โดย Bigbombboomz
หมวกกันน็อค INDEX รุ่น Legenda i-shield ที่ Bikershop12 หมวกกันน็อคเชียงใหม่
สินค้าอื่นๆ
teeratum123 3 536 กระทู้ล่าสุด ธันวาคม 15, 2017, 07:18:37 pm
โดย komgrit1989
ฐานข้อมูลผิดพลาด
ลองอีกครั้ง ถ้าเกิดการผิดพลาดอีกครั้ง ให้แจ้งผู้ดูแลระบบด้วย
กลับ