หน่วยที่6 การแสดงผลด้วยจอ lcd ของ arduino
Post on 04-Feb-2017
266 Views
Preview:
TRANSCRIPT
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
2 เอกสารประกอบการสอนวชาArduinoเบองตน
จดประสงคเชงพฤตกรรม 1. อธบายความรทวไปเกยวกบ LCD Display ได 2. อธบายโครงสรางโดยทวไปของ LCD ได 3. เชอมตอจอ Character LCD ได 4. เชอมตอสญญาณขาขอมลระหวางArduinoกบ LCD (I2C) ได 5. บอกรายละเอยดค าสงในการสงงานระหวาง Arduino กบจอ LCD ได
หนวยท 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
หนวยท 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 เปนขอมล
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
6 เอกสารประกอบการสอนวชาArduinoเบองตน
รปท 6.1 โครงสรางภายในจอ LCD (ทมา www.Applied Materials.com)
รปท 6.2 นาฬกาจอ LCD (ทมา www.Thaieasyelec.com)
หนวยท 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 แบบนวางหลอดไฟไวดานหลงจอ เพอท าใหการอานคาทแสดงผลท าไดชดเจน
หนวยท 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)
หนวยท 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 ขา แตไมไดชามากจนสงเกตไดดวยสายตา
หนวยท 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)
หนวยท 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)
หนวยท 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)
หนวยท 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)
หนวยท 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 และอปกรณอเลกทรอนกสเรยบรอยแลว
หนวยท 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)
หนวยท 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 ");
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
18 เอกสารประกอบการสอนวชาArduinoเบองตน
IDE ขนมา จากนนกดไปท Tool > Include Library > Add .ZIP Library
รปท 6.15 เรยก Library ของการสอสารแบบ I2C และ Library ของจอ LCD (I2C)
หนวยท 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(ขอมลทตองการใหเขยนออกไป [, รปแบบขอมล]) > ใชเขยนขอมลออกไปทงขอความ
หนวยท 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() {
หนวยท 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(); // เปดไฟแบลกไลค }
หนวยท 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/)
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
23 เอกสารประกอบการสอนวชา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 บตเทานน
หนวยท 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
หนวยท 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
หนวยท 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
หนวยท 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
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
30 เอกสารประกอบการสอนวชาArduinoเบองตน
Schematic
หนวยท 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(); }
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
33 เอกสารประกอบการสอนวชาArduinoเบองตน
Schematic
หนวยท 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); }
ผลการทดลอง............................................................................................................................. ......................................................................................................................... ............................................................................................................................................................................................................................. ........................................................................................................................................................................... ...................................................................................................................................................................................................................................................................................................................................................... ............................................
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
36 เอกสารประกอบการสอนวชาArduinoเบองตน
Circuit
Schematic
หนวยท 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); } ผลการทดลอง............................................................................................................................. ........................................................................................................................................................................... ...................................................................................................................................................................................................................... ................................................................................................................................ ..............................................
หนวยท 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
หนวยท 6 การแสดงผลดวยจอ LCD ของ Arduino เรยบเรยงโดยครทนพงษ ภรกษ
39 เอกสารประกอบการสอนวชาArduinoเบองตน
Schematic
หนวยท 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()); }}}
ผลการทดลอง............................................................................................................................. ........................................................................................................................................................................... ........................................................................................................................... ........................................................................................................................................................................................................................... ............................................
หนวยท 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 คะแนน
รวมคะแนนภาคปฏบต …........คะแนน
หนวยท 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
หนวยท 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
top related