Top Banner
หน่วยที่ 6 การแสดงผลด้วยจอ LCD ของ Arduino เรียบเรียงโดยครูทันพงษ์ ภู่รักษ์ 1 เอกสารประกอบการสอนวิชาArduinoเบื้องต้น หน่วยที6 การแสดงผลด้วยจอ LCD ของ ARDUINO สาระสาคัญ คาว่า LCD ย่อมาจากคาว่า Liquid Crystal Display ซึ่งเป็นจอที่ทามาจากผลึกคริสตอลเหลว หลักการคือ ด้านหลังจอจะมีไฟส่องสว่าง หรือที่เรียกว่า Backlight อยู่ เมื่อมีการปล่อยกระแสไฟฟ้าเข้าไปกระตุ้นที่ผลึก ก็จะทาให้ ผลึกโปร่งแสง ทาให้แสงที่มาจากไฟ Backlight แสดงขึ้นมาบนหน้าจอ ส่วนอื่นที่โดนผลึกปิดกั้นไว้จะไม่สว่าง ผลึกมีสีทีแตกต่างกันตามสีของผลึกคริสตอล เช่นสีเขียว หรือ สีฟ้าฯลฯ ทาให้เมื่อมองไปที่จอก็จะพบกับตัวหนังสือแล้วพบกับ พื้นหลังสีต่างๆกัน เนื้อหาสาระการเรียนรู6.1 ความรู้ทั่วไปเกี่ยวกับ LCD Display 6.2 โครงสร้างโดยทั่วไปของ LCD 6.3 การเชื่อมต่อสัญญาณขาข้อมูลระหว่าง Arduino กับ LCD Controller 6.4 รายละเอียดคาสั่งในการสั่งงานระหว่าง Arduino กับจอ LCD 6.5 ขั้นตอนการติดตั้งไลบรารี่จอแสดงผล LCD 6.6 ฟังก์ช่นสั่งงานจอ LCD 6.7 การสร้างตัวอักษรหรือใส่รูปภาพลงจอ LCD จุดประสงค์การเรียนรูจุดประสงค์ทั่วไป 1. เพื่อให้มีความรู้ความเข้าใจเกี่ยวกับลักษณะการแสดงผลด้วยจอ LCD ของ Arduino 2. เพื่อให้สามารถนาความรู้ไปประยุกต์ใช้ในการเขียนโปรแกรมกาหนดการทางานของ Arduino 3. เพื่อให้ตระหนักถึงความสาคัญของลักษณะการแสดงผลด้วยจอ LCD ของ Arduino
43

หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

Feb 04, 2017

Download

Documents

lynhan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

1 เอกสารประกอบการสอนวชาArduinoเบองตน

หนวยท 6 การแสดงผลดวยจอ LCD ของ ARDUINO

สาระส าคญ

ค าวา LCD ยอมาจากค าวา Liquid Crystal Display ซงเปนจอทท ามาจากผลกครสตอลเหลว หลกการคอดานหลงจอจะมไฟสองสวาง หรอทเรยกวา Backlight อย เมอมการปลอยกระแสไฟฟาเขาไปกระตนทผลก กจะท าใหผลกโปรงแสง ท าใหแสงทมาจากไฟ Backlight แสดงขนมาบนหนาจอ สวนอนทโดนผลกปดกนไวจะไมสวาง ผลกมสทแตกตางกนตามสของผลกครสตอล เชนสเขยว หรอ สฟาฯลฯ ท าใหเมอมองไปทจอกจะพบกบตวหนงสอแลวพบกบพนหลงสตางๆกน

เนอหาสาระการเรยนร 6.1 ความรทวไปเกยวกบ LCD Display 6.2 โครงสรางโดยทวไปของ LCD 6.3 การเชอมตอสญญาณขาขอมลระหวาง Arduino กบ LCD Controller 6.4 รายละเอยดค าสงในการสงงานระหวาง Arduino กบจอ LCD 6.5 ขนตอนการตดตงไลบรารจอแสดงผล LCD 6.6 ฟงกชนสงงานจอ LCD 6.7 การสรางตวอกษรหรอใสรปภาพลงจอ LCD

จดประสงคการเรยนร

จดประสงคทวไป 1. เพอใหมความรความเขาใจเกยวกบลกษณะการแสดงผลดวยจอ LCD ของ Arduino 2. เพอใหสามารถน าความรไปประยกตใชในการเขยนโปรแกรมก าหนดการท างานของ Arduino 3. เพอใหตระหนกถงความส าคญของลกษณะการแสดงผลดวยจอ LCD ของ Arduino

Page 2: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

2 เอกสารประกอบการสอนวชาArduinoเบองตน

จดประสงคเชงพฤตกรรม 1. อธบายความรทวไปเกยวกบ LCD Display ได 2. อธบายโครงสรางโดยทวไปของ LCD ได 3. เชอมตอจอ Character LCD ได 4. เชอมตอสญญาณขาขอมลระหวางArduinoกบ LCD (I2C) ได 5. บอกรายละเอยดค าสงในการสงงานระหวาง Arduino กบจอ LCD ได

Page 3: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

3 เอกสารประกอบการสอนวชาArduinoเบองตน

**********************************************************************************

เรอง การแสดงผลดวยจอ LCD ของ Arduino ใชเวลา 20 นาท วชา ไมโครคอนโทรลเลอรเบองตน รหสวชา (2127-2107) ระดบชน ประกาศนยบตรวชาชพ (ปวช.) สาขาวชา เมคคาทรอนกส ค าชแจง 1. แบบทดสอบมทงหมด 10 ขอ (10 คะแนน) 2. ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ลงในกระดาษค าตอบ

1. ค าวา LCD ยอมาจากค าวา ก. Liquid Computer Display ข. Liquid Center Display

ค. Liquid Communication Display ง. Liquid Crystal Display

2. จอ LCD จะแบงเปน 2 แบบใหญๆตามลกษณะการแสดงผลดงน ก. Character LCD/ Graphic LCD ข. Center LCD/ Graphic LCD

ค. Computer LCD/ Graphic LCD ง. Crystal LCD/ Graphic LCD

3. โครงสรางของ LCD ทวไปจะประกอบขนดวยแผนแกว 2 แผนประกบกนอย โดยเวนชองวางตรงกลางไว ก. 20-26 ไมโครเมตร ข. 16-20 ไมโครเมตร ค. 10-16 ไมโครเมตร ง. 6-10 ไมโครเมตร

4. จอ LCD สามารถแสดงผลใหเรามองเหนไดทงหมด 3 แบบดวยกนคอ ก. สะทอนแสง/สงเสรมแสง/สะทอนและสงเสรมแสง ข. สะสมแสง/สงผานแสง/สะสมและสงผานแสง ค. สะสมแสง/สะทอนแสง/สะสมและสะทอนแสง ง. สะทอนแสง/สงผานแสง/สะทอนแสงและสงผานแสง

แบบทดสอบกอนเรยน หนวยท 6 เรอง การแสดงผลดวยจอ LCD ของ Arduino

Page 4: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

4 เอกสารประกอบการสอนวชาArduinoเบองตน

5. ในการเชอมตอแบบขนาน Pin 7 – 14 จอ Character LCD ใชส าหรบ ก. RW ข. RS ค. Data ง. E/EN

10. RS ใชบอกให LCD Controller ทราบวา

6. ขา E เปนสญญาณ Enable เมอมคาเปน “1” หมายความวา ก. ไมสนใจสญญาณ RS R/W และ DB7-DB0 ข. digitalWrite ค. pinMode ง. อปกรณภายนอกตองการตดตออานหรอเขยนขอมล 7. R/W เปนสญญาณบอกให LCD ทราบวาอปกรณภายนอกตองการอานหรอเขยนกบ LCD โดย ก. ใชแจงวาไดรบขอมลตวอกษร (characters) แลว และพรอมส าหรบการอานไปใชงาน ข. R/W = “1” หมายถง เขยน และ R/W = “0” หมายถงอาน ค. สงคากลบจากฟงกชน ง. R/W = “0” หมายถง เขยน และ R/W = “1” หมายถง อาน 8. ขาสญญาณขอมล DB0-DB7 เปนสญญาณแบบ 2 ทศทาง โดยจะสมพนธกบสญญาณ ก. E ข. RS

ค. VDD ง. R/W

9. lcd.clear() คอฟงกชนอะไร ก. เมอมตวอกษรใดๆอยบนหนาจอ จะถกลางออกทงหมด ข. ใชส าหรบเขยนขอมลออกไปทละตวอกษรใชลางหนาจอ

ค. ใชสงใหแสดงเคอเซอรบนหนาจอ ง. ใชเขยนขอมลออกไปทงขอความ

ก. Code ทสงมาทางขา Data เปนค าสงหรอขอมล ข. Code ทสงมาทางขา Data เปนค าสง

ค. Code ทสงมามคาเทากบ 11 ง. Code ทสงมาทางขา Data เปนขอมล

Page 5: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

5 เอกสารประกอบการสอนวชาArduinoเบองตน

6.1 ความรทวไปเกยวกบ LCD Display ค าวา LCD ยอมาจากค าวา Liquid Crystal Display ซงเปนจอทท ามาจากผลกครสตอลเหลว หลกการคอ

ดานหลงจอจะมไฟสองสวาง หรอทเรยกวา Backlight อย เมอมการปลอยกระแสไฟฟาเขาไปกระตนทผลก กจะท าใหผลกโปรงแสง ท าใหแสงทมาจากไฟ Backlight แสดงขนมาบนหนาจอ สวนอนทโดนผลกปดกนไวจะไมสวาง ผลกมสทแตกตางกนตามสของผลกครสตอล เชนสเขยว หรอ สฟาฯลฯ ท าใหเมอมองไปทจอกจะพบกบตวหนงสอแลวพบกบพนหลงสตางๆกน

จอ Liquid Crystal Display (LCD) เปนจอแสดงผลรปแบบหนงทนยมน ามาใชงานกนกบระบบสมองกลฝงตวอยางแพรหลาย จอ LCD มทงแบบแสดงผลเปนตวอกขระเรยกวา Character LCD ซงมการก าหนดตวอกษรหรออกขระทสามารถแสดงผลไวไดอยแลว และแบบทสามารถแสดงผลเปนรปภาพหรอสญลกษณไดตามความตองการของผใชงานเรยกวา Graphic LCD นอกจากนบางชนดเปนจอทมการผลตขนมาใชเฉพาะงาน ท าใหมรปแบบและรปรางเฉพาะเจาะจงในการแสดงผล เชนนาฬกาดจตอล เครองคดเลข หรอ หนาปดวทย เปนตน

จอ LCD แบงเปน 2 แบบใหญๆตามลกษณะการแสดงผลดงน 1. Character LCD เปนจอทแสดงผลเปนตวอกษรตามชองแบบตายตว เชนจอ LCD ขนาด 16x2

หมายถงใน 1 แถวมตวอกษรใสได 16 ตว และมทงหมด 2 บรรทดใหใชงาน สวน 20x4 จะหมายถงใน 1 แถวมตวอกษรใสได 20 ตว และมทงหมด 2 บรรทด

2. Graphic LCD เปนจอทสามารถก าหนดไดวาจะใหแตละจดบนหนาจอกนแสง หรอปลอยแสงออกไป ท าใหจอนสามารถสรางรปขนมาบนหนาจอได การระบขนาดจะระบในลกษณะของจ านวนจด (Pixels) ในแตละแนว เชน 128x64 หมายถงจอทมจ านวนจดตามแนวนอน 128 จด และมจดตามแนวตง 64 จด

หลกการท างานอาศย-ของเหลวพเศษทมคณสมบตการบดแกนโพราไรซของแสง ถาจายแรงดนไฟฟาเขาไประหวางสารเหลวน โมเลกลจะบดตวและท าใหแสงไมสามารถผานกระจกออกมาได ถาไมมการจายแรงดนไฟฟาแสงจะทะลผานออกมาได

รปท 6.1 อธบายการท างานเกดจากกระจกโพลาไรซ 2 แผน ทมแกนตงฉากกน แสงจะไมสามารถลอดผานออกมาได เปรยบเหมอนเอาแวนตาโพลาไรซสองอนมาบดท ามมตงฉากกน แสงจะไมลอดผาน และมการคนพบวามของเหลวชนดนงทปกตแลวจะสามารถ "บดแกนโพลาไรซของแสง" ได จงเกดความคดเอามาท าจอ LCD

หนวยท 6การแสดงผลดวยจอ LCD ของ Arduino

Page 6: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

6 เอกสารประกอบการสอนวชาArduinoเบองตน

รปท 6.1 โครงสรางภายในจอ LCD (ทมา www.Applied Materials.com)

รปท 6.2 นาฬกาจอ LCD (ทมา www.Thaieasyelec.com)

Page 7: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

7 เอกสารประกอบการสอนวชาArduinoเบองตน

รปท 6.3 จอ LCD (ทมา www.Thaieasyelec.com)

รปท 6.4 จอคอมพวเตอร LCD (ทมา www.Thaieasyelec.com)

6.2 โครงสรางโดยทวไปของ LCD โครงสรางของ LCD ทวไปจะประกอบขนดวยแผนแกว 2 แผนประกบกนอย โดยเวนชองวางตรงกลางไว

6-10 ไมโครเมตร ผวดานในของแผนแกวจะเคลอบดวยตวน าไฟฟาแบบใสเพอใชแสดงตวอกษร ตรงกลางระหวางตวน าไฟฟาแบบใสกบผลกเหลว มชนของสารทท าใหโมเลกลของผลกรวมตวกนในทศทางทแสงสองมากระทบเรยกวา Alignment Layer และผลกเหลวทใชโดยทวไปจะเปนแบบ Magnetic โดย LCD สามารถแสดงผลใหเรา มองเหนไดทงหมด 3แบบดวยกนคอ 6.2.1 แบบใชการสะทอนแสง (Reflective Mode) LCD

แบบนใชสารประเภทโลหะเคลอบอยทแผนหลงของ LCD ซง LCD ประเภทนเหมาะกบการน ามาใชงานในททมแสงสวางเพยงพอ

6.2.2 แบบใชการสงผาน (Transitive Mode) LCD แบบนวางหลอดไฟไวดานหลงจอ เพอท าใหการอานคาทแสดงผลท าไดชดเจน

Page 8: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

8 เอกสารประกอบการสอนวชาArduinoเบองตน

6.2.3 แบบสงผานและสะทอน (Transflective Mode) LCD แบบนเปนการน าเอาขอดของจอแสดงผล LCD ทง 2 แบบมารวมกน ในบทนจะกลาวถงจอ LCD ทแสดงผลเปนอกขระหรอตวอกษร ตามทองตลาดทวไปจะมหลายแบบดวยกน

มทง 16 ตวอกษร 20 ตวอกษรหรอมากกวา และจ านวนบรรทดจะมตงแต 1 บรรทด 2 บรรทด 4 บรรทดหรอมากกวา ตามแตความตองการและลกษณะของงานทใช หรออาจจะมแบบสงท าเฉพาะงานกเปนได ในบทนจะยกตวอยางจอ LCD ขนาด 16x2 Character หรอทนยมเรยกกนวาจอ LCD 16 ตวอกษร 2 บรรทด สามารถหาซอไดงายและมราคาไมสง เหมาะสมกบการใชงานแสดงผลไมมากในหนาจอเดยว

จอ LCD 16x2 Character ทนยมวางจ าหนายจะมอย 2 แบบดวยกนคอ LCD แบบปกตทเชอมตอแบบขนาน (Parallel) และ LCD แบบทเชอมตออนกรม (Serial) แบบ I2C โดยทง 2 แบบตวจอมลกษณะเดยวกนเพยงแตแบบ I2C จะมบอรดเสรมท าใหสอสารแบบ I2C ไดเชอมตอไดสะดวกขน

รปท 6.5 จอ LCD 16x2 Character (Parallel) (ทมา www.Thaieasyelec.com)

รปท 6.6 จอ LCD 16x2 Character (I2C) (ทมา www.Thaieasyelec.com)

Page 9: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

9 เอกสารประกอบการสอนวชาArduinoเบองตน

6.3 การเชอมตอสญญาณขาขอมลระหวาง Arduino กบ LCD Controller ในการควบคมหรอสงงาน โดยทวไปจอ LCD จะมสวนควบคม (Controller) อยในตวแลว ผใชสามารถสง

รหสค าสงส าหรบควบคมการท างานของจอ LCD (I2C) เชนเดยวกนกบจอ LCD แบบธรรมดา พดงายๆ คอรหสค าสงทใชในการควบคมนนเหมอนกน แตตางกนตรงทรปแบบในการรบสงขอมล ในบทความนเราจะมาพดถงจอ LCD 16x2 ทมการสงขอมลรปแบบ I2C ทใชขาเพยง 4 ขาทใชในการเชอมตอเทานน ในการควบคมหรอสงงานจอ LCD Controller ของจอนเปน Hitachi เบอร HD44780 และขาในการเชอมตอระหวาง LCD กบ Arduino มดงน 1. GND เปนกราวดใชตอระหวาง Ground ของ Arduino กบ LCD 2. VCC เปนไฟเลยงวงจรทปอนใหกบ LCD ขนาด +5VDC 3. VO ใชปรบความสวางของหนาจอ LCD 4. RS ใชบอกให LCD Controller ทราบวา Code ทสงมาทางขา Data เปนค าสงหรอขอมล 5. R/W ใชก าหนดวาจะอานหรอเขยนขอมลกบ LCD Controller 6. E เปนขา Enable หรอ Chips Select เพอก าหนดการท างานใหกบ LCD Controller 7. DB0-DB7 เปนขาสญญาณ Data ใชส าหรบเขยนหรออานขอมล/ค าสง กบ LCD Controller

วธการสงงานจะแตกตางกนไปโดย LCD Controller สามารถรบรหสค าสงจาก Arduino ไดจากสญญาณ RS R/W และ DB0-DB7 ในขณะทสญญาณ E มคา Logic เปน “1” ซงสญญาณเหลานจะใชรวมกนเพอก าหนดเปนรหสค าสงส าหรบสงงาน LCD โดยหนาทของแตละสญญาณสรปไดดงน

1. E เปนสญญาณ Enable เมอมคาเปน “1” เปนการบอกให LCD ทราบวาอปกรณภายนอกตองการตดตออานหรอเขยนขอมล “0” ให LCD ไมสนใจสญญาณ RS R/W และ DB7-DB0 2. RS เปนสญญาณส าหรบก าหนดให LCD ทราบวาอปกรณภายนอกตองการตดตอกบ LCD ในขณะนนเปนรหสค าสงหรอขอมล โดย 3. R/W เปนสญญาณส าหรบบอกให LCD ทราบวาอปกรณภายนอกตองการอานหรอเขยนกบ LCD โดย R/W = “0” หมายถง เขยน R/W = “1” หมายถง อาน 4. DB0-DB7 เปนสญญาณแบบ 2 ทศทาง โดยจะสมพนธกบสญญาณ R/W ใชส าหรบรบค าสงและขอมลระหวาง LCD กบอปกรณภายนอก โดยถา R/W = “0” สญญาณ DB7-DB0 จะสงจากอปกรณภายนอกมาท LCD แตถา R/W = “1” สญญาณ DB7-DB0 จะสงจาก LCD ไปยงอปกรณภายนอก

การเชอมตอสญญาณขาขอมลระหวาง Arduino กบ LCD Controller สามารถท าได 2 ลกษณะ คอ การเชอมตอแบบ 8 บต (DB0-DB7) และการเชอมตอแบบ 4 บต (DB4-DB7) ทงสองแบบแตกตางกนเพยงจ านวนขาทใชคอ 8 หรอ 4 ขา และยงสามารถท างานไดเหมอนกน อยางทแนนอนในการสงขอมลแบบ 4 ขา ผลยอมท าไดชากวา 8 ขา แตไมไดชามากจนสงเกตไดดวยสายตา

Page 10: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

10 เอกสารประกอบการสอนวชาArduinoเบองตน

ในการตอกบ Arduino นนจงนยมตอเพยง 4 ขาหรอ 4 บตเทานน เพอเปนการประหยดขาในการตอใชงานไปไวตอกบอปกรณอน ตวอยางเชน Arduino UNO R3 นนมขาใหใชงานคอนขางนอย

รปท 6.7 ขาทใชในการเชอมตอกบ Arduino UNO R3 (ทมา www.Thaieasyelec.com)

ตารางท 6.1 ขาทใชในการเชอมตอกบ Arduino UNO R3 (ทมา www.Thaieasyelec.com)

Page 11: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

11 เอกสารประกอบการสอนวชาArduinoเบองตน

รปท 6.8 การรบ-สงขอมลแบบ I2C BUS

(ทมา www.Ioxhop.com) ล าดบขนตอนการการรบ-สงขอมลแบบ I2C BUS มดงน

1. MCU จะท าการสงสถานะเรมตน (START Conditions) เพอแสดงการขอใชบส 2. แลวตามดวยรหสควบคม (Control Byte) ซงประกอบ ดวยรหสประจ าตวอปกรณ Device ID, Device

Address และ Mode ในการเขยนหรออานขอมล 3. เมออปกรณรบทราบวา MCU ตองการจะตดตอดวย กตองสงสถานะรบร (Acknowledge) หรอแจงให

MCU รบรวาขอมลทไดสงมามความถกตอง 4. เมอสนสดการสงขอมล MCU จะตองสงสถานะสนสด (STOP Conditions) เพอบอกกบอปกรณวา สนสดการใชบส

6.3 การเชอมตอ Arduino กบจอ Character LCD 1. การเชอมตอแบบขนาน - เปนการเชอมตอจอ LCD เขากบบอรด Arduino โดยตรง โดยจะแบงเปน

เชอมตอแบบ 4 บต และการเชอมตอแบบ 8 บต ใน Arduino จะนยมเชอมตอแบบ 4 บต เนองจากใชตอนอยกวา 2. การเชอมตอแบบอนกรม - เปนการเชอตอกบจอ LCD ผานโมดลแปลงรปแบบการเชอมตอกบจอ LCD

จากแบบขนานมาเปนการเชอมตอแบบอนทใชสายนอยกวา เชน การใชโมดล I2C Serial Interface จะเปนการน าโมดลเชอมเขากบตวจอ LCD แลวใชบอรด Arduino เชอมตอกบบอรดโมดลผานโปรโตคอล I2C ท าใหใชสายเพยง 4 เสนกสามารถท าใหหนาจอแสดงผลขอความตางๆออกมาได

รปท 6.9 รายละเอยดการตอขาจอ LCD 16x2 Character (I2C) (ทมา www.Thaieasyelec.com)

Page 12: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

12 เอกสารประกอบการสอนวชาArduinoเบองตน

6.3.1 การเชอมตอ Arduino กบจอ LCD แบบขนาน การเชอมตอแบบขนาน 4 บต สามารถตอไดตามวงจรดานลางน

รปท 6.10 การใชงาน Character LCD กบ Arduino การเชอมตอแบบขนาน (ทมา www.Ioxhop.com)

เมอตอวงจรเรยบรอยแลวตอสาย USB เขากบบอรด Arduino จะเหนกลองสเหลยมทงหมด 16 ตว (หากเปนจอ 16x2) ในบรรทดแรกหากไมพบกลองใหปรบความชดไดจาก VR ทตออยกบขา V0

ตารางท 6.2 ตารางขาของจอ LCD 16x2 แบบขนาน (ทมา www.Ioxhop.com)

Page 13: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

13 เอกสารประกอบการสอนวชาArduinoเบองตน

6.3.2 การเชอมตอ Arduino กบจอ LCD แบบอนกรม จอ LCD ทมการเชอมแบบ I2C หรอเรยกอกอยางวาการเชอมตอแบบ Serial เปนจอ LCD ธรรมดาทวไปทมาพรอมกบบอรด I2C Bus ทท าใหการใชงานไดสะดวกยงขนและมาพรอมกบ VR ส าหรบปรบความเขมของจอในรปแบบ I2C ใชขาในการเชอมตอกบ Arduino เพยง 4 ขา (แบบ Parallel ใช 16 ขา) ซงท าใหใชงานไดงายและสะดวกมากยงขน

ตารางท 6.11 แสดงขาของจอ LCD 16x2 แบบอนกรม (I2C) (ทมา www.Ioxhop.com)

ตารางท 6.3 ตารางขาของจอ LCD 16x2 แบบขนาน (ทมา www.Ioxhop.com)

Page 14: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

14 เอกสารประกอบการสอนวชาArduinoเบองตน

ส าหรบการเชอมตอสญญาณระหวาง Arduino กบ LCD ทมบอรด I2C อยแลวนน การสงขอมลจาก

Arduino ถกสงออกมาในรปแบบ I2C ไปยงบอรด I2C และบอรดจะมหนาทจดการขอมลใหออกมาในรปแบบปกต หรอแบบ Parallel เพอใชในการตดตอไปยงจอ LCD โดยทรหสค าสงทใชในการสงงานจอ LCD ยงคงไมตางกบจอ LCD ทเปนแบบ Parallel โดยสวนใหญบอรด I2C จะเชอมตอกบตวควบคมของจอ LCD เพยง 4 บตเทานน วงจรภายในระหวางจอ LCD กบบอรด I2C นน มการตอไวดงน

รปท 6.12 การเชอมตอระหวาง Arduino กบ LCD (I2C) (ทมา www.Ioxhop.com)

จากรปท 6.12 วงจรจอ LCD และบอรด I2C ไดมการเชอมตอขาส าหรบการรบสงขอมลเปนแบบ 4 บต ขาทเชอมตอไวคอ ขา P4 > DB4, P5 > DB5, P6 > DB6, P7 > DB7 และขา P2 > E (Enable), P1 > R/W, P0 > RS รวมไปถงตวตานทานส าหรบปรบคาความเขมของตวอกษร และ Switch Blacklight จากวงจรขาทจ าเปนในการใชงานถกเชอมตอเขากบตวบอรด I2C และอปกรณอเลกทรอนกสเรยบรอยแลว

Page 15: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

15 เอกสารประกอบการสอนวชาArduinoเบองตน

รปท 6.13 โมดล I2C Serial Interface Board Module (ทมา www.Ioxhop.com)

อกลกษณะหนงการเชอมตอระหวาง Arduino กบจอ LCD (I2C) แบบอนกรมใชงานโมดล I2C Serial Interface Board Module มาเชอมตอระหวาง Arduino กบจอ LCD วงจรทเชอมตอจะเปนไปตามรปท 6.13 (กรณใชบอรดรนอนตองตอ SDA เขา A4 และ SCL เขากบ A5)

รปท 6.14 การเชอมตอโมดล I2C Serial Interface Board Module

(ทมา www.Ioxhop.com)

Page 16: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

16 เอกสารประกอบการสอนวชาArduinoเบองตน

6.4 รายละเอยดค าสงในการสงงานระหวาง Arduino กบ จอ LCD ค าสงในการควบคมจอ LCD ของ Arduino นน ทาง Arduino.cc เขยนเปน Library มาใหเพอสะดวกในการน าไปใชงาน หลงจากตอสายเสรจเรยบรอย ขนตอนแรกในการเรมเขยนโปรแกรมคอการเรยกใช Library ของ LCD จากไฟลชอ LiquidCrystal.h ฟงกชน LiquidCrystal(); ใชประกาศขาทตองการสงขอมลไปยงจอ LCD รปแบบในการสงงานคอ

LiquidCrystal lcd(rs, enable, d4, d5, d6, d7) <<< ในกรณใชงานแบบ 4 บต

LiquidCrystal lcd(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) <<< ในกรณใชงานแบบ 8 บต

ใชแบบ 4 บต คอ LiquidCrystal lcd(12, 11, 4, 5, 6, 7); กหมายถงการเชอมตอ rs ทขา 12 , Enable ทขา 11 , และ DB4-DB7 ทขา 4-7 ของ Arduino ตามล าดบ

ฟงกชน begin(); ใชก าหนดขนาดของจอ ใชขนาด 16 ตวอกษร 2 บรรทด จงประกาศเปน lcd.begin (16, 2);

ฟงกชน setCursor(); ใชก าหนดต าแหนงและบรรทดของ Cursor เชน lcd.setCursor(0, 1); คอให เคอรเซอรไปทต าแหนงท 0 บรรทดท 1 การนบต าแหนงเรมจาก 0 ดงนน LCD 16x2 มต าแหนง 0 – 15 บรรทด คอ 0 กบ 1

ฟงกชน print(); ใชก าหนดขอความทตองการแสดง เชน lcd.print("TEST"); คอใหแสดงขอความ “TEST” ออกทางหนาจอ LCD

โปรแกรมท 6.1 #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7

void setup() { lcd.begin(16, 2); // จอกวาง 16 ตวอกษร 2 บรรทด lcd.print("LCDisplay"); // แสดงผลค าวา Hello, world! ออกหนาจอ lcd.setCursor(0, 1); // เลอนเคเซอรไปบรรทดท 2 ล าดบท 0 (กอนหนาตวอกษรแรก) lcd.print("TEST"); // แสดงผลค าวา TEST delay(3000); // หนวงเวลา 3 วนาท lcd.clear();} // ลางหนาจอ

void loop() { lcd.setCursor(0, 0); lcd.print(" InFunction ");

Page 17: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

17 เอกสารประกอบการสอนวชาArduinoเบองตน

lcd.setCursor(0, 1); lcd.print(" void loop(){ "); delay(500); // หนวงเวลา 0.5 วนาท lcd.clear(); // ลางหนาจอ delay(500); // หนวงเวลา 0.5 วนาท }

รายละเอยดชดค าสงทใชในการสงงานระหวาง Arduino กบจอ LCD ค าสงทใชในการควบคมจอ LCD ของ Arduino แบบ I2C นนไมตางจากจอ LCD แบบธรรมดา (Parallel) มากนก ทงนยงไดมการพฒนา Library I2C มาใหใชงานไดอยางสะดวกมากยงขน

6.5 ขนตอนการตดตงไลบรารจอแสดงผล LCD

เรมตนจากการน าไฟล Library LCD (I2C) ไปไวใน Library ของ Arduino กอนเพอใหงายตอการเรยกใช Library และท าการแยกไฟลทโหลดมาขางตน แลวน าไปเกบยง

C:\ProgramFiles(x86)\Arduino\libraries (Drive ทไดท าการตดตงโปรแกรม Arduino IDE)

รปท 6.14 การโหลด Library LCD (I2C)

เรยก Library ของการสอสารแบบ I2C และ Library ของจอ LCD (I2C) เปดโปรแกรม Arduino

Page 18: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

18 เอกสารประกอบการสอนวชาArduinoเบองตน

IDE ขนมา จากนนกดไปท Tool > Include Library > Add .ZIP Library

รปท 6.15 เรยก Library ของการสอสารแบบ I2C และ Library ของจอ LCD (I2C)

Page 19: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

19 เอกสารประกอบการสอนวชาArduinoเบองตน

รปท 6.16 การเลอกไฟลทไดดาวโหลดไว เลอกไฟลทไดดาวโหลดไวจากนนกดปม Open

6.6 ฟงกชนสงงานจอ LCD

lcd.clear() > ใชลางหนาจอ เมอมตวอกษรใดๆอยบนหนาจอ จะถกลางออกทงหมด

lcd.home() > ใชปรบใหเคเซอรกลบไปอยทต าแหนงแรกดานซาย เมอใชค าสง lcd.print() จะไปเรมแสดงผล ทางดานบนซาย

lcd.setCursor(ล าดบตวอกษรนบจากทางซาย, บรรทด) > ใชตงคาเคเซอร เชน lcd.setCursor(2, 0); หมายถงเซตเคเซอรไปตวอกษรท 2 นบจากทางซาย และอยบรรทดแรก เมอใชค าสง lcd.print() ตวอกษรตวแรกจะอยล าดบท 3 นบจากทางซาย

lcd.write(ขอมลทตองการเขยนออกไป) > ใชส าหรบเขยนขอมลออกไปทละตวอกษร

lcd.print(ขอมลทตองการใหเขยนออกไป [, รปแบบขอมล]) > ใชเขยนขอมลออกไปทงขอความ

Page 20: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

20 เอกสารประกอบการสอนวชาArduinoเบองตน

lcd.cursor() > ใชสงใหแสดงเคอเซอรบนหนาจอ

lcd.noCursor() > ใชสงใหไมแสดงเคเซอรบนหนาจอ

lcd.display() > แสดงตวอกษรบนหนาจอ

lcd.noDisplay() > ปดการแสดงตวอกษรในหนาจอ

lcd.scrollDisplayLeft() > เลอนตวอกษรไปทางซาย 1 ตว

lcd.scrollDisplayRight() > เลอนตวอกษรไปทางขวา 1 ตว

lcd.autoscroll() > เลอนตวอกษรไปทางขวาอตโนมตหากใชค าสง lcd.print() หรอ lcd.write() เมอตวอกษรเตม หนาจอ

lcd.noAutoscroll() > ปดการเลอนตวอกษรอตโนมต

lcd.leftToRight() > เมอใชค าสง lcd.print() หรอ lcd.write() ตวอกษรจะเขยนจากซายไปขวา

lcd.rightToLeft() > เมอใชค าสง lcd.print() หรอ lcd.write() ตวอกษรจะเขยนจากขวาไปซาย

โปรแกรมท 6.2 #include <LiquidCrystal.h> #define BacklightPin 7 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() { pinMode(BacklightPin, OUTPUT); digitalWrite(BacklightPin, HIGH); lcd.begin(16, 2); lcd.print("LCD Safe Mode"); // แสดงค าวา LCD Safe Mode ออกทางหนาจอ }

void loop() {

Page 21: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

21 เอกสารประกอบการสอนวชาArduinoเบองตน

LCD_ON(); // เปดหนาจอ delay(1000); // หนวงเวลา 1 วนาท LCD_OFF(); // ปดหนาจอ delay(1000); // หนวงเวลา 1 วนาท }

void LCD_ON() { lcd.display(); // เปดการแสดงตวอกษร digitalWrite(BacklightPin, HIGH); // เปดไฟแบลกไลค }

void LCD_OFF() { lcd.noDisplay(); // ปดการแสดงตวอกษร digitalWrite(BacklightPin, LOW); // ปดไฟแบลกไลค }

โปรแกรมท 6.3 #include <Wire.h> #include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 in PCF8574 by NXP and Set to 0x3F in PCF8574A by Ti LiquidCrystal_I2C lcd(0x3F, 16, 2);

void setup() { lcd.begin(); lcd.print("LCD Safe Mode"); // แสดงค าวา LCD Safe Mode ออกทางหนาจอ }

void loop() { LCD_ON(); // เปดหนาจอ delay(1000); // หนวงเวลา 1 วนาท LCD_OFF(); // ปดหนาจอ delay(1000); // หนวงเวลา 1 วนาท }

void LCD_ON() { lcd.display(); // เปดการแสดงตวอกษร lcd.backlight(); // เปดไฟแบลกไลค }

Page 22: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

22 เอกสารประกอบการสอนวชาArduinoเบองตน

void LCD_OFF() {

lcd.noDisplay(); // ปดการแสดงตวอกษร lcd.noBacklight(); // ปดไฟแบลกไลค }

6.7 การสรางตวอกษรหรอใสรปภาพลงจอ LCD นอกจากจะใชตวอกษร ABCD .... ตวเลข เครองหมายตางๆแลว ยงสามารถสรางตวอกษรเองใหเปน

ลกษณะของรปภาพได เพอเพมความเขาใจ และความสวยงามของการแสดงผลขอมลบนหนาจอ การสรางตวอกษรสามารถสรางไดจากลง : Maxpromer.github.io/LCD-Character-Creator/ อพเดชเขา Arduino

รปท 6.17 การสรางตวอกษรหรอใสรปภาพลงจอ LCD (ทมา www.Maxpromer.github.io/LCD-Character-Creator/)

Page 23: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

23 เอกสารประกอบการสอนวชาArduinoเบองตน

Page 24: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

24 เอกสารประกอบการสอนวชาArduinoเบองตน

สรปเนอหาสาระส าคญ

การเชอมตอสญญาณขาขอมลระหวาง Arduino กบ LCD Controller สามารถท าได 2 ลกษณะ คอการเชอมตอแบบ 8 บต (DB0-DB7) และการเชอมตอแบบ 4 บต (DB4-DB7) ทงสองแบบแตกตางกนเพยงจ านวนขาทใชคอ 8 หรอ 4 ขา สามารถท างานไดเหมอนกน อยางทแนนอนในการสงขอมลแบบ 4 ขา ผลยอมท าไดชากวา 8 ขา แตไมไดชามากจนสงเกตไดดวยสายตา ในการตอกบ Arduino นนจงนยมตอเพยง 4 ขา หรอ 4 บตเทานน เพอเปนการประหยดขาในการตอใชงานไปไวตอกบอปกรณอน ตวอยางเชน Arduino UNO R3 นนมขาใหใชงานคอนขางนอย ส าหรบการเชอมตอสญญาณระหวาง Arduino กบ LCD ทมบอรด I2C อยแลวนน การสงขอมลจาก Arduino จะถกสงออกมาในรปแบบ I2C ไปยงบอรด I2C และบอรดจะมหนาทจดการขอมลใหออกมาในรปแบบปกต หรอแบบ Parallel เพอใชในการตดตอไปยงจอ LCD โดยทรหสค าสงทใชในการสงงานจอ LCD ยงคงไมตางกบจอ LCD ทเปนแบบ Parallel โดยสวนใหญบอรด I2C จะเชอมตอกบตวควบคมของจอ LCD เพยง 4 บตเทานน

Page 25: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

25 เอกสารประกอบการสอนวชาArduinoเบองตน

เรอง การแสดงผลดวยจอ LCD ของ Arduino ใชเวลา 20 นาท ******************************************************************************************************* ค าชแจง แบบฝกหดมทงหมด 2 ตอน ประกอบดวยตอนท 1 และตอนท 2 (20 คะแนน) 2. แบบฝกหดตอนท 1 เปนค าถามแบบถก-ผด มทงหมด 20 ขอ (10 คะแนน) 3. แบบฝกหดตอนท 2 เปนค าถามแบบปรนย มทงหมด 10 ขอ (10 คะแนน)

ค าชแจง ใหผเรยนกาเครองหมายถก ในขอทคดวาถก และกาเครองหมายผด ในขอทคดวาผด 1. lcd.home() ใชปรบใหเคอเซอรกลบไปอยทต าแหนงแรกดานขวา เรมแสดงผลทางดานบนซาย 2. lcd.setCursor (ล าดบตวอกษรนบจากทางขวา, บรรทด) ใชตงคาเคเซอร 3. lcd.write (ขอมลทตองการเขยนออกไป) ใชส าหรบเขยนขอมลออกไปทละตวอกษร 4. lcd.print (ขอมลทตองการใหเขยนออกไป [, รปแบบขอมล]) ใชเขยนขอมลออกไปทงขอความ 5. lcd.cursor() ใชสงใหแสดงเคอเซอรบนหนาจอ 6. lcd.noCursor() ใชสงใหไมแสดงเคเซอรบนหนาจอ 7. lcd.display() แสดงตวอกษรบนหนาจอ 8. lcd.scrollDisplayLeft() เลอนตวอกษรไปทางซาย 2 ตว 9. lcd.autoscroll() เลอนตวอกษรไปทางขวาอตโนมต 10. lcd.leftToRight() เมอใชค าสง lcd.print() หรอ lcd.write() ตวอกษรจะเขยนจากขวาไปซาย

แบบฝกหดหนวยท 6

แบบฝกหดตอนท 1

Page 26: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

26 เอกสารประกอบการสอนวชาArduinoเบองตน

ค าชแจง ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ใหครบทกขอ 1. เมอมการปลอยกระแสไฟฟาเขาไปกระตนทผลกเหลวท าใหเกด

ก. ผลกทบแสง ท าใหแสงทมาจากไฟ Backlight แสดงขนมาบนหนาจอ ข. ผลกโปรงแสง ท าใหแสงทมาจากไฟ Backlight แสดงขนมาบนหนาจอ ค. ผลกทบแสง ท าใหแสงทมาจากไฟ Backlight ไมแสดงขนมาบนหนาจอ ง. ผลกโปรงแสง ท าใหแสงทมาจากไฟ Backlight ไมแสดงขนมาบนหนาจอ

2. การระบขนาดจอ Graphic LCD ระบในลกษณะอยางไร ก. ตวอกษรใสได ข. จ านวนจด (Pixels) ค. สทแตกตางกนตามสของผลกครสตอล ง. สพนหลงทตางกน

3. ขา D0-D7 คอ ก. LCD Control Pin ข. Read/Write Pin ค. Data Pin ง. Enable Pin

4. ผลกเหลวทใชโดยทวไปจะเปนแบบ ก. Magnetic ข. Resistance

ค. Inductance ง. Capacitance

5. จอ LCD 16x2 Character ทนยมวางจ าหนายจะมอย 2 แบบดวยกนคอ ก. แบบขนาน และ ผสม I2C ข. แบบผสม และ อนกรม I2C ค. แบบขนาน และ อนกรม I2C ง. แบบอนกรม และ อนกรม I2C 6. การเชอมตอแบบขนาน นยมเชอมตอกแบบ ก. 4 บต และ 8 บต ข. 1 บต และ 2 บต

ค. 2 บต และ 4 บต ง. 1 บต และ 8 บต

แบบฝกหดตอนท 2

Page 27: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

27 เอกสารประกอบการสอนวชาArduinoเบองตน

7. RS เปนสญญาณก าหนดให LCD ทราบวาอปกรณภายนอกตองการตดตอกบ LCD โดย ก. RS = “1” หมายถง ค าสง , RS = “0” หมายถง ขอมล ข. RS = “0” หมายถง ค าสง , RS = “1” หมายถง ขอมล ค. RS = “0” หมายถง เขยน , RS = “1” หมายถง อาน ง. RS = “0” หมายถง อาน , RS = “1” หมายถง เขยน

8. ถา R/W = “0” หมายความวา ก. สญญาณ DB3-DB0 จะสงจากอปกรณภายนอกมาท LCD ข. สญญาณ DB7-DB0 จะสงจากอปกรณภายนอกมาท LCD ค. สญญาณ DB3-DB0 จะสงไปยงอปกรณภายนอกมาท LCD ง. สญญาณ DB7-DB0 จะสงไปยงอปกรณภายนอกมาท LCD

9. ถา R/W = “1” หมายความวา ก. สญญาณ DB3-DB0 จะสงจากอปกรณภายนอกมาท LCD ข. สญญาณ DB7-DB0 จะสงจากอปกรณภายนอกมาท LCD ค. สญญาณ DB3-DB0 จะสงไปยงอปกรณภายนอกมาท LCD ง. สญญาณ DB7-DB0 จะสงไปยงอปกรณภายนอกมาท LCD 10. การเชอมตอแบบอนกรม ใชโมดลอะไรในการเชอมเขากบตวจอ LCD ก. ICC Serial Interface ข. I2C Serial Interface

ค. IIC Serial Interface ง. C2I Serial Interface

Page 28: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

28 เอกสารประกอบการสอนวชาArduinoเบองตน

***************************************************************************************************ค าชแจง ใหผเรยนทกคนท าการทดลองตามปฎบตการทดลองหนวยท 6 เรอง การแสดงผลดวยจอ LCD ของ Arduino ใชเวลา 180 นาท ( 20 คะแนน)

จดประสงคเชงพฤตกรรม

1. สามารถใชฟงกชนแสดงผลดวยจอ LCD ของ Arduino ไดถกตอง 2. สามารถแกปญหาในการท างานของบอรด Arduino Uno R3 ได 3. สามารถตอใชงานและอพโหลดโปรแกรมใหกบบอรด Arduino Uno R3 ได

อปกรณการทดลอง

1. เครองคอมพวเตอรและโปรแกรม Arduino IDE 1.6.9 1 เครอง 2. USB Cable Arduino Uno R3 1 เสน 3. Arduino Uno R3 Board 1 บอรด 4. Breadboard 1 แผง 5. LCD Screen (compatible with Hitachi HD44780 driver) 1 ตว 6. Hook-up Wires 10 เสน 7. 10k ohm potentiometer 1 ตว

8. pin headers to solder to the LCD display pins 16 ตว ขอควรระวง

1. ควรระวงไมวางบอรด Arduino Uno R3 หรอชลตางๆ บนโตะโลหะหรอทวางทเปนโลหะเพราะอาจเกดการลดวงจรของภาคจายไฟได

2. ไมควรตอสายตอวงจรในบอรด Arduino Uno R3 ทงไว ควรถอดสายตอวงจรออกใหหมด เพราะผลการทดลองอาจเกดการผดพลาดไมเปนไปตามทฤษฎได

3. ไมควรถอดสายสายโหลด USB เขาออกตลอดเวลา เพราะอาจท าใหภาคจายไฟของบอรด Arduino Uno R3 เสยหายได

ปฏบตการทดลองหนวยท 6 เรอง การแสดงผลดวยจอ LCD ของ Arduino

Page 29: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

29 เอกสารประกอบการสอนวชาArduinoเบองตน

การทดลองท 6.1 autoscroll

ไลบราร LiquidCrystal ชวยใหควบคมจอแสดงผล ทมความเขากนไดกบไอซของฮตาช HD44780 และม

ขาอนเตอรเฟสท 16 ขา ใบงานนแสดงใหเหนถงวธการใช Autoscroll () และ noAutoscroll () วธทจะยาย

ขอความทงหมดบนหนาจอดานซายหรอขวา และเคอรเซอรไปยงดานลางขวา

Hardware Required

1. Arduino or Genuino Board 2. LCD Screen (compatible with Hitachi HD44780 driver) 3. pin headers to solder to the LCD display pins 4. 10k ohm potentiometer 5. 220 ohm resistor 6. hook-up wires 7. breadboard

Circuit

1. LCD RS pin to digital pin 12 2. LCD Enable pin to digital pin 11 3. LCD D4 pin to digital pin 5 4. LCD D5 pin to digital pin 4 5. LCD D6 pin to digital pin 3 6. LCD D7 pin to digital pin 2

Page 30: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

30 เอกสารประกอบการสอนวชาArduinoเบองตน

Schematic

Page 31: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

31 เอกสารประกอบการสอนวชาArduinoเบองตน

Code

// http://www.arduino.cc/en/Tutorial/LiquidCrystalAutoscroll #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd (12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); } void loop() { // set the cursor to (0,0): lcd.setCursor(0, 0); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // set the cursor to (16,1): lcd.setCursor(16, 1); // set the display to automatically scroll: lcd.autoscroll(); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // turn off automatic scrolling lcd.noAutoscroll(); // clear screen for the next loop: lcd.clear(); }

Page 32: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

32 เอกสารประกอบการสอนวชาArduinoเบองตน

ผลการทดลอง............................................................................................................................. ......................................................................................................................... ............................................................................................................................................................................................................................. ........................................................................................................................................................................... ...................................................................................................................................................................................................................................................................................................................................................... .............................................

การทดลองท 6.2 blink() and noBlink()

ไลบราร LiquidCrystal ชวยใหควบคมจอแสดงผลทมความเขากนไดกบไอซของฮตาช HD44780 โดยอนเตอรเฟซท 16 ขา ใบงานนแสดงใหเหนถงวธการกระพรบขอความ () และ การไมกระพรบขอความ ()

Hardware Required

1. Arduino or Genuino Board 2. LCD Screen (compatible with Hitachi HD44780 driver) 3. pin headers to solder to the LCD display pins 4. 10k ohm potentiometer 5. 220 ohm resistor 6. hook-up wires 7. breadboard

Circuit

1. LCD RS pin to digital pin 12 2. LCD Enable pin to digital pin 11 3. LCD D4 pin to digital pin 5 4. LCD D5 pin to digital pin 4 5. LCD D6 pin to digital pin 3 6. LCD D7 pin to digital pin 2

Page 33: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

33 เอกสารประกอบการสอนวชาArduinoเบองตน

Schematic

Page 34: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

34 เอกสารประกอบการสอนวชาArduinoเบองตน

Code

/* http://www.arduino.cc/en/Tutorial/LiquidCrystalBlink */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // Turn off the blinking cursor: lcd.noBlink(); delay(3000); // Turn on the blinking cursor: lcd.blink(); delay(3000); }

ผลการทดลอง............................................................................................................................. ......................................................................................................................... ............................................................................................................................................................................................................................. ........................................................................................................................................................................... ...................................................................................................................................................................................................................................................................................................................................................... ............................................

Page 35: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

35 เอกสารประกอบการสอนวชาArduinoเบองตน

การทดลองท 6.3 "Hello World!"

ไลบราร LiquidCrystal ชวยใหควบคมจอแสดงผลทมความเขากนไดกบไอซขบของฮตาช HD44780 โดย

อนเตอรเฟซท 16 ขา ใบงานนพมพขอความ "Hello World!" จอแอลซดและแสดงเวลาเปนวนาท ตงแต Arduino

ถกเรมใหท างาน

Hardware Required

1. Arduino or Genuino Board 2. LCD Screen (compatible with Hitachi HD44780 driver) 3. pin headers to solder to the LCD display pins 4. 10k ohm potentiometer 5. 220 ohm resistor 6. hook-up wires 7. breadboard

Page 36: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

36 เอกสารประกอบการสอนวชาArduinoเบองตน

Circuit

Schematic

Page 37: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

37 เอกสารประกอบการสอนวชาArduinoเบองตน

Code

/* LiquidCrystal Library - Hello World http://www.arduino.cc/en/Tutorial/LiquidCrystal */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); } ผลการทดลอง............................................................................................................................. ........................................................................................................................................................................... ...................................................................................................................................................................................................................... ................................................................................................................................ ..............................................

Page 38: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

38 เอกสารประกอบการสอนวชาArduinoเบองตน

การทดลองท 6.4 Serial Input

Liquid Crystal Library ชวยใหควบคมจอแสดงผลทมความเขากนไดกบไอซขบของฮตาช HD44780 โดย

อนเตอรเฟซท 16 ขา ใบงานนรบการปอนขอมลแบบอนกรมจากโฮสตคอมพวเตอรและแสดงบนหนาจอ LCD ทจะ

ใชมนอปโหลดขอมล จากนนเปด Serial Moniter ขอความปรากฏบนหนาจอ LCD

Hardware Required

1. Arduino or Genuino Board 2. LCD Screen (compatible with Hitachi HD44780 driver) 3. pin headers to solder to the LCD display pins 4. 10k ohm potentiometer 5. 220 ohm resistor 6. hook-up wires 7. breadboard

Software

1. A computer running the Arduino Software (IDE)

Circuit

1. LCD RS pin to digital pin 12 2. LCD Enable pin to digital pin 11 3. LCD D4 pin to digital pin 5 4. LCD D5 pin to digital pin 4 5. LCD D6 pin to digital pin 3 6. LCD D7 pin to digital pin 2

Page 39: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

39 เอกสารประกอบการสอนวชาArduinoเบองตน

Schematic

Page 40: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

40 เอกสารประกอบการสอนวชาArduinoเบองตน

Code

/* http://www.arduino.cc/en/Tutorial/LiquidCrystalSerial */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // initialize the serial communications: Serial.begin(9600); } void loop() { // when characters arrive over the serial port... if (Serial.available()) { // wait a bit for the entire message to arrive delay(100); // clear the screen lcd.clear(); // read all the available characters while (Serial.available() > 0) { // display each character to the LCD lcd.write(Serial.read()); }}}

ผลการทดลอง............................................................................................................................. ........................................................................................................................................................................... ........................................................................................................................... ........................................................................................................................................................................................................................... ............................................

Page 41: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

41 เอกสารประกอบการสอนวชาArduinoเบองตน

สรปผลการทดลอง ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

ปญหาอปสรรคหรอขอเสนอแนะ

...........................................................................................................................................................................

........................................................................................................................................................................... ตารางการประเมนผลคะแนนภาคปฏบต

หวขอการพจารณาภาคปฏบต ระดบคะแนน การทดลองท 6.1 autoscroll 5 คะแนน การทดลองท 6.2 blink() and noBlink() 5 คะแนน

การทดลองท 6.3 Hello World! 5 คะแนน การทดลองท 6.4 Serial Input 5 คะแนน

รวมคะแนนภาคปฏบต …........คะแนน

Page 42: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

42 เอกสารประกอบการสอนวชาArduinoเบองตน

**********************************************************************************

เรอง การแสดงผลดวยจอ LCD ของ Arduino ใชเวลา 20 นาท วชา Arduinoเบองตน รหสวชา (2127-2107 ) ระดบชน ประกาศนยบตรวชาชพ (ปวช.) สาขาวชา เมคคาทรอนกส ค าชแจง 1. แบบทดสอบมทงหมด 10 ขอ (10 คะแนน) 2. ใหผเรยนเลอกค าตอบทถกทสดแลวกาเครองหมายกากบาท () ลงในกระดาษค าตอบ

1. ค าวา LCD ยอมาจากค าวา ก. Liquid Center Display ข. Liquid Computer Display

ค. Liquid Crystal Display ง. Liquid Communication Display

2. จอ LCD จะแบงเปน 2 แบบใหญๆตามลกษณะการแสดงผลดงน ก. Center LCD/ Graphic LCD ข. Character LCD/ Graphic LCD

ค. Crystal LCD/ Graphic LCD ง. Computer LCD/ Graphic LCD

3. โครงสรางของ LCD ทวไปจะประกอบขนดวยแผนแกว 2 แผนประกบกนอย โดยเวนชองวางตรงกลางไว ก. 6-10 ไมโครเมตร ข. 10-16 ไมโครเมตร ค. 16-20 ไมโครเมตร ง. 20-26 ไมโครเมตร

4. จอ LCD สามารถแสดงผลใหเรามองเหนไดทงหมด 3 แบบดวยกนคอ ก. แบบใชการสะสมแสง/แบบใชการสงผานแสง/แบบสะสมและสงผานแสง ข. แบบใชการสะทอนแสง/แบบใชการสงเสรมแสง/แบบสะทอนและสงเสรมแสง ค. แบบใชการสะทอนแสง/แบบใชการสงผานแสง/แบบสงผานและสะทอนแสง ง. แบบใชการสะสมแสง/แบบใชการสงผานแสง/แบบสะสมและสงผานแสง

แบบทดสอบหลงเรยน หนวยท 6 เรอง การแสดงผลดวยจอ LCD ของ Arduino

Page 43: หน่วยที่6 การแสดงผลด้วยจอ LCD ของ ARDUINO

หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ

43 เอกสารประกอบการสอนวชาArduinoเบองตน

5. ในการเชอมตอแบบขนาน Pin 7 – 14 จอ Character LCD ใชส าหรบ ก. RS ข. RW ค. E/EN ง. Data

10. RS ใชบอกให LCD Controller ทราบวา

6. ขา E เปนสญญาณ Enable เมอมคาเปน “1” หมายความวา ก. digitalWrite ข. ไมสนใจสญญาณ RS R/W และ DB7-DB0 ค. อปกรณภายนอกตองการตดตออานหรอเขยนขอมล ง. pinMode 7. R/W เปนสญญาณบอกให LCD ทราบวาอปกรณภายนอกตองการอานหรอเขยนกบ LCD โดย ก. R/W = “1” หมายถง เขยน และ R/W = “0” หมายถง อาน ข. ใชแจงวาไดรบขอมลตวอกษร (characters) แลว และพรอมส าหรบการอานไปใชงาน ค. R/W = “0” หมายถง เขยน และ R/W = “1” หมายถง อาน ง. สงคากลบจากฟงกชน 8. ขาสญญาณขอมล DB0-DB7 เปนสญญาณแบบ 2 ทศทาง โดยจะสมพนธกบสญญาณ ก. RS ข. E

ค. R/W ง. VDD

9. lcd.clear() คอฟงกชนอะไร ก. ใชส าหรบเขยนขอมลออกไปทละตวอกษร ข. ใชลางหนาจอ เมอมตวอกษรใดๆอยบนหนาจอ จะถกลางออกทงหมด

ค. ใชเขยนขอมลออกไปทงขอความ ง. ใชสงใหแสดงเคอเซอรบนหนาจอ

ก. Code ทสงมาทางขา Data เปนค าสง ข. Code ทสงมาทางขา Data เปนค าสงหรอขอมล

ค. Code ทสงมาทางขา Data เปนขอมล ง. Code ทสงมามคาเทากบ 11