23 มี.ค. 2020 เวลา 17:27 • การศึกษา
Lab 4 การใช้งาน LCD Module
Arduino กับ 16x12 LCD Module
Lab นี้มีจุดประสงค์การเรียนรู้เกี่ยวกับการควบคุมจอ LCD ด้วย Arduino ซึ่งจะมีตัวอย่างต่างๆ ใช้ร่วมกับการเรียนรู้บน Tinkercad ได้แก่
- wiring diagram
- Coding
ซึ่งจอแสดงผลนี้ เป็นที่นิยมสำหรับการแสดงข้อมูลจากเซ็นเซอร์ หรือข้อความต่างๆ และยังมีราคาถูกพอสมควร
ส่วนแรกของ Lab นี้ครอบคลุมพื้นฐานของการแสดงข้อความและตัวเลข ซึ่งจะพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการแสดงตัวอักษรที่กำหนดขึ้นเอง และวิธีใช้ฟังก์ชั่นอื่น ๆ ของ Library LiquidCrystal ของ Arduino ในช่วงต่อๆไป
ปกติแล้วจะต้องมีการเชื่อมต่อมากมายเพื่อควบคุมจอแสดงผลเหล่านี้ ซึ่งอีกทางเลือกหนึ่งคือโมดูลอินเตอร์เฟซ I²C ซึ่งโมดูล I²C นี้ต้องการเพียงแค่การเชื่อมต่อสองจุดเพื่อควบคุม LCD ซึ่งอาจจะศึกษาข้อมูลเพิ่มเติมได้ด้วยตนเองในภายหลัง
ภาพรวมทางด้านฮาร์ดแวร์
LCD เหล่านี้มีให้เลือกหลายขนาด ซึ่งที่เป็นนิยมได้แก่
- 16 × 1
- 16 × 2
- 20 × 2
และอื่นๆ ซึ่งแทบทั้งหมดนั้นใช้ชิปคอนโทรลเลอร์ LCD อินเตอร์เฟส HD44780 จากฮิตาชิ ซึ่งหมายความว่าเราสามารถสลับฮาร์ดแวร์ได้อย่างง่ายดาย โดยแค่เปลี่ยน Coding ขนาดของจอใน Arduino IDE
ลักษณะและตำแหน่งของขา LCD โมดูลแต่ละขนาด
Datasheet สามารถโหลดได้ที่
ข้อมูลจำเพาะของจอ LCD 16 × 2 (Specification)
แรงดัน : 5 V
คอนโทรลเลอร์: Hitachi HD44780 LCD controller
ความละเอียดของจอ: 2-lines x 16 characters
ความละเอียดของตัวอักษร: 5 x 8 pixels
ขนาดโมดูล: 80 x 36 x 12 mm
ขนาดหน้าจอ: 64.5 x 16.4 mm
ตำแหน่งขา และฟังก์ชั่นการใช้งานของ LCD โมดูล
จอ LCD 16 × 2 มีทั้งหมด 16 ขา ซึ่งจะนับจากซ้ายไปขวา
ตารางตำแหน่งขาและฟังก์ชั่น รวมไปถึงคำสั่งต่างๆ
การทดสอบจอ LCD และการปรับ contrast
ในการทดสอบหน้าจอ LCD ว่าทำงานตามปกติหรือไม่ สามารถทำการทดสอบได้โดยเชื่อมต่อวงจรดังรูป
ซึ่งจอ LCD ส่วนมากจะมีตัวต้านทานภายในสำหรับ LED backlight ซึ่งสามารถดูได้จากด้านหลังของขาที่ 15 (Anode) ซึ่งถ้าไม่มีตัวต้านทานภายใน ให้ทำการเพิ่มตัวต้านทาน 220Ω ระหว่าง 5 V กับ ขาที่ 15 ซึ่งจะช่วยไม่ให้เกิดกระแสเกินในตัว LED backlight
เมื่อเราเชื่อมต่อวงจรเรียบร้อแล้ว ให้ปรับค่า contrast ของจอ โดยการหมุนตัวต้านทานปรับค่าได้ขนาด 1 kΩ ทวนเข็มและตามเข็มนาฬิกา เพื่อทดสอบความสว่างของจอ
การเชื่อมต่อ LCD กับ Arduino UNO
การเชื่อมต่อวงจรแต่ละขา
LCD RS pin เข้า digital pin 12
LCD Enable pin เข้า digital pin 11
LCD D4 pin เข้า digital pin 5
LCD D5 pin เข้า digital pin 4
LCD D6 pin เข้า digital pin 3
LCD D7 pin เข้า digital pin 2
LCD R/W pin เข้า ground
LCD VSS pin เข้า ground
LCD VCC pin เข้า 5V
1K resistor: แบบปรับค่าได้ เชื่อม 5V GND และ VO pin (pin 3)
Code ตัวอย่าง 4.1
*อย่าลืมเพิ่ม library LiquidCrystal.h
// เพิ่ม library LiquidCrystal.h
#include
// เชื่อมต่อ library เข้ากับ interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// ตั้งค่าจำนวน columns rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Hello World?");
}
void loop() {
// เซต cursor ที่ column 0, line 1
// (note: line 1 คือแถวที่สอง, แถวแรกเริ่มที่ 0):
lcd.setCursor(0, 1);
// print เลขวินาที:
lcd.print(millis() / 100);
}
ซึ่งสามารถศึกษาเพิ่มเติมได้ที่
ตัวอย่างคำสั่งอื่นๆ เช่น
clear()
// เพิ่ม library LiquidCrystal.h
#include
// เชื่อมต่อ library เข้ากับ interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
}
void loop() {
lcd.clear();
lcd.print("Covit-19");
delay(2000);
lcd.clear();
lcd.print("Gu tid young wa?");
delay(2000);
}
Assignment 4.1 สร้างบอร์ด ที่แนะนำตัวเอง บน 2x16 LCD Display โดยมีชื่อ และ ID บน Tinkercad
scrollDisplayLeft()
เลื่อนและแสดงผลบนหน้าจอไปทางซ้าย
void loop() {
lcd.scrollDisplayLeft();
delay(500);
}
scrollDisplayRight()
เลื่อนและแสดงผลบนหน้าจอไปทางขวา
void loop() {
lcd.scrollDisplayRight();
delay(500);
}
lcd.autoscroll()
แสดงผลโดยอัตโนมัติ โดยจะดันตัวอักษรจากซ้ายไปขวา
void loop() {
lcd.autoscroll();
lcd.setCursor(16, 0);
for (int x = 0; x < 10; x++) {
lcd.print(x);
delay(500);
}
lcd.clear();
noAutoscroll()
ปิดการเลื่อนแสดงผลอัตโนมัต
leftToRight()
ให้แสดงผลไปทางขวาของ Cursor
การสร้างตัวอักษรแบบ CUSTOM
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Make custom characters:
byte Heart[] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte Bell[] = {
B00100,
B01110,
B01110,
B01110,
B11111,
B00000,
B00100,
B00000
};
byte Alien[] = {
B11111,
B10101,
B11111,
B11111,
B01110,
B01010,
B11011,
B00000
};
byte Check[] = {
B00000,
B00001,
B00011,
B10110,
B11100,
B01000,
B00000,
B00000
};
byte Speaker[] = {
B00001,
B00011,
B01111,
B01111,
B01111,
B00011,
B00001,
B00000
};
byte Sound[] = {
B00001,
B00011,
B00101,
B01001,
B01001,
B01011,
B11011,
B11000
};
byte Skull[] = {
B00000,
B01110,
B10101,
B11011,
B01110,
B01110,
B00000,
B00000
};
byte Lock[] = {
B01110,
B10001,
B10001,
B11111,
B11011,
B11011,
B11111,
B00000
};
void setup() {
// Specify the LCD's number of columns and rows:
lcd.begin(16, 2);
// Create a new characters:
lcd.createChar(0, Heart);
lcd.createChar(1, Bell);
lcd.createChar(2, Alien);
lcd.createChar(3, Check);
lcd.createChar(4, Speaker);
lcd.createChar(5, Sound);
lcd.createChar(6, Skull);
lcd.createChar(7, Lock);
// Clears the LCD screen:
lcd.clear();
// Print a message to the lcd:
lcd.print("Custom Character");
}
void loop() {
// Print all the custom characters:
lcd.setCursor(0, 1);
lcd.write(byte(0));
lcd.setCursor(2, 1);
lcd.write(byte(1));
lcd.setCursor(4, 1);
lcd.write(byte(2));
lcd.setCursor(6, 1);
lcd.write(byte(3));
lcd.setCursor(8, 1);
lcd.write(byte(4));
lcd.setCursor(10, 1);
lcd.write(byte(5));
lcd.setCursor(12, 1);
lcd.write(byte(6));
lcd.setCursor(14, 1);
lcd.write(byte(7));
}
Q 4.2จงสร้างหน้าจอให้แสดงผล
I ❤ P I M ดัง รูป
โดยจะแสดงผลเมื่อกดปุ่ม
สร้างวงจรใหม่ 4.2 และส่งงานใน TinkerCAD
โฆษณา