สัปดาห์นี้เรามาพูกถึงการใช้งานจอ LCD กันครับ
ที่พวกเราเรียกว่า LCD นั้น มาจากคำว่า Liquid Crystal Display ครับ หลักการทำงานของมันอาศัย-ของเหลวพิเศษที่มีคุณสมบัติการบิดแกนโพราไรซ์ของแสงครับ ถ้าจ่ายแรงดันไฟฟ้าเข้าไประหว่างสารเหลวนี้ โมเลกุลของมันจะบิดตัวและทำให้แสงไม่สามารถผ่านกระจกออกมาได้ ถ้าไม่มีการจ่ายแรงดันไฟฟ้าแสงจะทะลุผ่านออกมาได้
รูปด้านล่างอธิบายความได้เป็นอย่างดีครับ การทำงานของมันเกิดจากกระจกโพลาไรซ์ 2 แผ่น ที่มีแกนตั้งฉากกัน ดังนั้นถ้าไม่ทำอะไรเลยแสงจะไม่สามารถลอดผ่านออกมาได้ เหมือนเอาแว่นตาโพลาไรซ์สองอันมาบิดทำมุมตั้งฉากกัน แสงจะไม่ลอดผ่าน ทีนี้มีคนไปพบว่ามีของเหลวชนิดนึงที่ปกติแล้วจะสามารถ "บิดแกนโพลาไรซ์ของแสง" ได้ ก็เลยเกิดความคิดเอามาทำจอ LCD
ถ้าไม่มีการจ่ายแรงดันเข้าไป สารเหลวที่ว่านี้จะบิดแกนโพลาไรซ์ของแสงไป 90 องศา ทำให้แสงสามารถลอดออกมาได้จากกระจกโพลาไรซ์คู่นี้ได้ ในทางกลับกัน ถ้ามีแรงดันจ่ายไประหว่างสารเหลวนี้ จะไม่เกิดการปิดตัวของแสง ทำให้แสง "ไม่สามารถ" ลอดออกมาได้ครับ
คลิปวีดีโอด้านล่างอาจจะทำให้เข้าใช้ได้ง่ายขึ้นครับ
ทีนี้ก็มีการนำหลักการนี้มาใช้หลายแบบครับ แบบแรกง่ายๆ ก็คือการเอาอิเล็กโทรดที่บังคับการทำงานของของเหลวได้นี้มาทำเป็นรูปตัวเลข ก็จะเห็นแบบที่ใช้ในเครื่องคิดเลข หรือ โดยประกอบเซลล์เล็กๆ ขึ้นมาเป็นเมตริกซ์ ทำให้สามารถควบคุมให้เป็นตัวอักษร หรือ รูปภาพได้
แรกๆที่ทำออกมาก็ไม่ซับซ้อนครับ ใช้ทำเครื่องคิดเลขบ้าง นาฬิกาบ้าง ต่อมาก็เอามาทำจอ LCD Matrix จากนั้นเริ่มมีการผสมสี RGB และทำให้จอมีความละเอียดมากขึ้น (Pixel ต่อ พื้นที่่) ก็เลยกลายเป็นทีวีจอ LCD สีที่เราเห็นครับ
ในบทความนี้ผมจะพูดถึงเฉพาะ LCD ชนิดที่เป็น matrix ซึ่งใช้แสดงตัวอักษรมาตรฐานนะครับ จึงอยู่ว่าจอ LCD matrix สามารถแสงเป็นภาพ หรือ ตัวอักษรตามแต่ผู้ใช้จะควบคุม แต่บทความนี้เอาแบบสั้นๆ คนทั่วไปใช้ละกันครับ เลยเขียนเฉพาะการควบคุมให้แสดงตัวอักษรมาตรฐาน
หลักการทำงานก็จบไป มาถึงรายละเอียดของตัว LCD กันบ้างว่ามีอะไรกันบ้าง มีกี่ Pin ตารางด้านล่างนี้เป็นรายละเอียดของ PIN ของ LCD แบบที่นิยมใช้กันมากๆ คือ 16 x 2 (หมายถึง 16 ตัวอักษร 2 บรรทัดนะครับ) ถ้าดูที่แต่ละตัวอักษรจะเห็นว่ามันเป็น matrix 5x8 ซึ่งแสดงถึงความละเอียดของตัวอักษรนะครับ
ทีนี้ Pin ของ LCD ก็จะมี 16 Pin ตามรายละเอียดในตารางครับ
Pin No
|
Function
|
Name
|
1
|
Ground (0V)
|
Ground
|
2
|
Supply voltage; 5V (4.7V – 5.3V)
|
Vcc
|
3
|
Contrast adjustment; through a variable resistor
|
VEE
|
4
|
Selects command register when low; and data register when high
|
Register Select
|
5
|
Low to write to the register; High to read from the register
|
Read/write
|
6
|
Sends data to data pins when a high to low pulse is given
|
Enable
|
7
|
8-bit data pins
|
DB0
|
8
|
DB1
|
|
9
|
DB2
|
|
10
|
DB3
|
|
11
|
DB4
|
|
12
|
DB5
|
|
13
|
DB6
|
|
14
|
DB7
|
|
15
|
Backlight VCC (5V)
|
Led+
|
16
|
Backlight Ground (0V)
|
Led-
|
16 PIN ที่ว่าก็จะมีตั้งแต่ไฟเลี้ยง กราวด์ Data การควบคุมแสง การควบคุมการแสดงครับ
สำหรับการให้ข้อมูลการแสดงบนหน้าจอ หรือ การติดต่อควบคุมการทำงานของ LCD ก็จะทำโดยผ่าน IC ของบริษัท Hitachi เบอร์ HD44780 เจ้านี้เขาทำเจ้าแรกๆ จนกลายเป็นมาตรฐานของโลกไปแล้วครับ
HD44780 สามารถคุยด้วยได้ 2 แบบหลักคือ แบบ 4 Bit (DB4 - DB7) และ แบบ 8 Bit (DB0 - DB7) ทั้งสองแบบนี้ก็ต่างกันตรงที่ใช้จำนวน pin จาก Arduino 4 pin กับ 8 pin ครับ ก็แน่นอนครับ เราคงไม่อยากใช้ Port เปลือง ดังนั้นส่วนมากคนก็จะนิยมใช้แบบ 4 Pin กันครับ แต่ก็มีความเร็วในการส่งข้อมูลช้ากว่าแบบ 8 pin ครับ แต่ความเร็วที่ว่าก็ไม่ได้เป็นอุปสรรคเลยครับ 4 bit ก็เร็วมากจนสายตาของเราแยกไม่ออกแล้วครับ สรุปก็คือว่าผมแนะนำการต่อแบบ 4 bit ละกันนะครับ ตามภาพด้านบนก็ได้ครับ แล้วแบบ 8 bit มีไว้ทำไมละ คำตอบก็คือ ในยุคแรกๆ ไมโครคอนโทรลเลอร์เขาออกมาเป็นแบบ 8 bit แล้วเพื่อให้เขียนโปรแกรมไม่ซับซ้อนมากนัก ก็เลยใช้ 8 bit ให้เหมือนกัน register ในไมโครคอนโทรลเลอร์ซะครับ
สำหรับ Arduino แล้ว เราจะใช้ LCD แบบบ้านๆ ที่มีขายตามบ้านหม้อ (ถ้าดูภาพแรกก็คือ LCD อันล่าง) หรือจะใช้เป็นแบบ LCD Shield ก็มีหลักการทำงานเดียวกัน ใช้ library เดียวกันครับ ถ้าใช้แบบ LCD เดี่ยวๆ ก็ต้องมาต่อขากันเองนิดหน่อย แต่ถ้าใช้ LCD Shield ก็จับยัดได้เลยครับ แถมมีปุ่มกดมาให้ด้วยครับ ก็แล้วแต่งานที่ต้องเอาไปประยุกต์ใช้ครับ
และก็ตามสไตล์ของ Arduino ครับคือการมี library ที่่ทำให้ใช้งานได้สะดวกมากๆ ใครที่เคยใช้ ไมโครคอนโทรลเลอร์ตัวอื่นมาก่อนจะรู้สึกถึงความแตกต่างชัดเจนครับ Library ของ LCD ก็คือ มีคำสั่งที่สำคัญดังนี้ครับ
ที่เหลือ รบกวนไปที่ Arduino.cc นะครับ
สำคัญคือการต่อนะครับ ต้องต่อตามที่เขียนไว้ในคำสั่ง LiquidCrystal() นะครับ Arduino จะได้สั่งงานไปถูกขา
ทีนี้เอาแบบง่ายๆ คือ Hello Arduitronics ครับ ผมสาธิตโดยการใช้ LCD Shield นะครับ ทีนี้ตัว LCD Shield นี้มันก็มีการต่อขาไว้ที่ตัว LCD แบบตายตัวแล้ว เปลี่ยนไม่ได้ซะด้วย ก็ใช้ตามนี้เลยนะครับ
liquidCrystal lcd(8, 9, 4, 5, 6, 7);
ถ้าต่อเองก็เลือกเอาตามอัธยาสัยได้เลยครับ
ถ้าต่อถูกต้องก็ตามภาพด้านล่างนี้เลยครับ
อีกตัวอย่างครับ ทีนี้เราจะเริ่มมีการใช้ปุ่มกดกันบ้าง อันนี้ผมได้ตัวอย่างมาจากผู้ผลิตนะครับ DFROBOT
เช่นกันครับ ถ้าต่อถูกก็ตามนี้ครับ
สำหรับ Data Sheet ของ LCD ก็ตามนี้ครับ
ถ้าเป็น LCD Shield ก็ตามนี้ครับ ข้อดีอีกอันของการใช้ Shield ก็คือ มี R ปรับค่าได้ไว้ปรับความสว่างของหน้าจอมาให้ด้วยนะครับ
แถมอีกนิดครับ เนื่องจากที่ผมเขียนมาทั้งหมด ก็ยังมีคนรู้สึกว่ามันยังต้องใช้ Pin เยอะอยู่ดี ดังนั้นเลยต้องการลดการใช้ PIN ลงอีก จึงประยุกต์ใช้การสื่อสารแบบอนุกรม แบบ I2C (Inter - IC communication) ซะเลย จึงลดขา DB ต่างๆ ลงมาอีก ให้เหลือแค่ 2 PIN
สำหรับร้านเรามี LCD ให้ในหลายชุด Starter Kit ที่จัดไว้นะครับ เช่น Starter Kit 1 Starter Kit 3
หรือขายแยก เช่น LCD หรือ LCD Keypad Shield ครับ
วันนี้พอแค่นี้ครับ พบกันใหม่สัปดาห์หน้า
โดย Mountain "A"
หน้านี้เป็นสารบัญของบทความที่ปรากฏในเว็บของ Arduitronics.com นะครับ จะขอแบ่งออกเป็นหัวข้อตามกลุ่มของสินค้าในร้านดังต่อไปนี้
หน้าที่เข้าชม | 15,387,561 ครั้ง |
ผู้ชมทั้งหมด | 5,890,639 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 13 ก.ย. 2568 |