เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 408
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร
สาระส าคญ
อปกรณแสดงผลทนยมน ามาใชงานกบไมโครคอนโทรลเลอร คอ จอ LCD Module เนองจากสามารถแสดงผลขอมลไดทงตวเลข ตวอกษรและขอความ การตอจอ LCD Module กบบอรด Arduino จะเชอมตอขาพอรตแบบขนาน (parallel) ชนดใชขาขอมล 4 บต กบแบบทนยมใชงานมาก คอ ตอผานโมดล LCD I2C (LCD I2C Interface Module) เพราะใชขาพอรตเพยง 2 ขา และการแสดงผลดวย Serial Monitor ซงซอฟตแวร Arduino IDE มการสอสารขอมลแบบอนกรม (Serial) สามารน าขอมลมาแสดงผลทหนาตาง Serial Monitor ได สวนอปกรณเซนเซอร (Sensor Device) ทใชงานรวมกบไมโครคอนโทรลเลอร Arduino มทงชนดใหคาสญญาณเปนดจทล ทเชอมตอกบขาพอรต Digital Pin และชนดใหคาสญญาณเปนแอนะลอก ทตองเชอมตอกบขาพอรต Analog Pin รวมทงอปกรณเซนเซอรบางชนดมรปแบบการตอแบบ 1 สาย (1-wire) ในหนวยนจะศกษาและปฏบตการทดลองเกยวกบการใชงานจอ LCD Module และอปกรณเซนเซอรกบไมโครคอนโทรลเลอร Arduino โดยการรบคาจากอปกรณเซนเซอรและน าไปแสดงผลทจอ LCD Module หรอหนาตาง Serial Monitor
เนอหาสาระการเรยนร
1. การใชงานจอ LCD Module รวมกบบอรด Arduino UNO 2. การใชงานอปกรณเซนเซอรชนดดจทล 3. การใชงานอปกรณเซนเซอรชนดแอนะลอก
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 409
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
จดประสงคการเรยนร
จดประสงคทวไป
1. เพอใหนกเรยนมความรและความเขาใจการใชงานการใชงานจอ LCD Module รวมกบบอรด Arduino UNO
2. เพอใหนกเรยนมความรและเขาใจการใชงานอปกรณเซนเซอรชนดดจทล 3. เพอใหนกเรยนมความรและเขาใจการใชงานอปกรณเซนเซอรชนดแอนะลอก
จดประสงคเชงพฤตกรรม นกเรยนสามารถ
1. จ าแนกรปแบบการตอวงจรจอ LCD Module กบบอรด Arduino ได 2. อธบายวธการตอวงจรจอ LCD Module กบบอรด Arduino UNO แบบขนานได 3. อธบายวธการตอวงจรจอ LCD Module กบบอรด Arduino UNO แบบใชโมดล LCD I2C ได 4. บอกชอไฟลไลบรารของจอ LCD Module ได 5. อธบายรปแบบค าสงฟงกชนส าหรบควบคมการแสดงผลของจอ LCD Module ได 6. อธบายความหมายของค าสงฟงกชนส าหรบควบคมการแสดงผลของจอ LCD Module ได 7. อธบายการใชงานอปกรณเซนเซอรแบบดจทลได 8. อธบายการใชงานอปกรณเซนเซอรแบบแอนะลอกได 9. เขยนโปรแกรมควบคมการแสดงผลของจอ LCD Module ได 10. ตอวงจรอปกรณเซนเซอรแบบดจทลกบบอรด Arduino UNO ได 11. เขยนโปรแกรมรบคาลอจกจากอปกรณเซนเซอรแบบดจทลได 12. ตอวงจรอปกรณเซนเซอรแบบแอนะลอกกบบอรด Arduino UNO ได 13. เขยนโปรแกรมรบคาแอนะลอกจากอปกรณเซนเซอรแบบดจทลได
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 410
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ผงความคดเนอหาหนวยท 10
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 411
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
หนวยท 10
การใชงาน Arduino กบอปกรณแสดงผล
และอปกรณเซนเซอร
ไมโครคอนโทรลเลอร Arduino น าไปใชควบคมอปกรณอนพต เอาตพต ทประกอบดวยอปกรณแสดงผลแบบจอ LCD Module และอปกรณเซนเซอรทงแบบดจทลและแบบแอนะลอกหรออปกรณอน ๆ ตามความตองการ ซงในหนวยการเรยนนจะศกษาและปฏบตการทดลองใชงานบอรด Arduino UNO กบจอ LCD Module และอปกรณเซนเซอรทงแบบดจทลและแบบแอนะลอก
10.1 การใชงานจอ LCD Module กบบอรด Arduino UNO อปกรณแสดงผลทนยมใชงานกบไมโครคอนโทรลเลอร Arduino คอ จอ LCD Module ทจะม
ทงแบบ Character LCD Module และแบบ Graphic LCD Modula แตสวนมากจะใชแบบ Character LCD Module เนองจากมราคาถกและใชงานงาย ซงรายละเอยดเกยวกบจอ LCD Module นกเรยนไดศกษาแลวในหนวยท 6 ในหนวยนนกเรยนจะไดศกษาและปฏบตงานการใชงานจอ LCD Module กบไมโครคอนโทรลเลอร Arduino โดยใชจอ LCD Module ชนด 16 ตวอกษร 2 บรรทด (LCD 16x2) ใชงานรวมกบบอรด Arduino UNO การตอจอ LCD Module กบบอรด Arduino UNO ม 2 แบบ คอ แบบขนาน (parallel) และแบบใชโมดลแปลงสญญาณ LCD I2C (LCD I2C Interface Module)
10.1.1 การตอจอ LCD Module กบบอรด Arduino UNO แบบขนาน (Parallel) การตอจอ LCD Module กบบอรด Arduino UNO แบบขนาน เชอมตอได 2 แบบ คอ แบบใชขาขอมล 4 บตและแบบใชขาขอมล 8 บต สวนมากจะตอแบบ 4 บตเนองจากประหยดขาพอรต ซงวงจรการตอ LCD Module กบบอรด Arduino UNO แบบ 4 บต แสดงดงรปท 10.1
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 412
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.1 การตอจอ LCD Module กบบอรด Arduino UNO แบบใชขาขอมล 4 บต
จากรปท 10.1 แสดงการตอจอ LCD Module แบบขนาน (Parallel) โดยใชขาขอมล 4 บต มรายละเอยดดงตาราง 10.1
ตาราง 10.1 รายละเอยดการตอจอ LCD Module กบบอรด Arduino UNO ขา รายละเอยดขาใชงานจอ LCD Module บอรด Arduino VSS Ground Ground (GND) VDD Power Supply +5V
VO/VEE LCD Contrast Control Volume 10K RS Register Select Digital Pin11 RW Read/Write Ground (GND)
E/EN Enable Digital Pin10 D0 Data Bus (0) - D1 Data Bus (1) - D2 Data Bus (2) - D3 Data Bus (3) - D4 Data Bus (4) Digital Pin9 D5 Data Bus (5) Digital Pin8 D6 Data Bus (6) Digital Pin7 D7 Data Bus (7) Digital Pin6 A Backlight Anode (+) +5V K Backlight Cathode (-) Ground (GND)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 413
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.1.2 การเขยนโปรแกรมควบคมการแสดงผลจอ LCD Module แบบขนาน การเขยนโปรแกรมควบคมการแสดงผลจอ LCD Module แบบตอขนาน (Parallel) ผพฒนาซอฟตแวร Arduino IDE ไดสรางไฟลไลบรารส าเรจรปทงชนดใชขาขอมล 4 บต และชนดใชขาขอมล 8 บตเพอใหการใชงานงายและสะดวก โดยเชอมโยงไฟลไลบรารชอ LiquidCrystal.h จากแถบเมน Sketch --> Include Library --> LiquidCryatal ของซอฟตแวร Arduino IDE มฟงกชนใชงานพนฐานดงน 10.1.2.1 ฟงกชน LiquidCrystal lcd( ) เปนฟงกชนส าหรบก าหนดต าแหนงขาเชอมตอระหวางขาพอรตของบอรด Arduino กบขาใชงานของจอ LCD Module รปแบบ LiquidCrystal lcd(rs,enable,d4,d5,d6,d7) //4 บต
LiquidCrystal lcd(rs,rw,enable,d4,d5,d6,d7)
LiquidCrystal lcd(rs,enable,d0,d1,d2,d3,d4,d5,d6,d7) //8 บต LiquidCrystal lcd(rs,rw,enable,d0,d1,d2,d3,d4,d5,d6,d7)
พารามเตอร rs คอ ต าแหนงขาพอรตบอรด Arduino ทตอกบขา RS ของจอ LCD Module rw คอ ต าแหนงขาพอรตบอรด Arduino ทตอกบขา RW ของจอ LCD Module (กรณใชงานขา RW) enable คอ ต าแหนงขาพอรตบอรด Arduino ทตอกบขา E/EN ของจอ LCD Module d4-d7 คอ ต าแหนงขาพอรตบอรด Arduino ทตอกบขา Data Bus (D4-D7) ของจอ LCD Module ชนดใชขาขอมล 4 บต d0-d7 คอ ต าแหนงขาพอรตบอรด Arduino ทตอกบขา Data Bus (D4-D7) ของจอ LCD Module ชนดใชขาขอมล 4 บต ตวอยาง LiquidCrystal lcd(11,10,9,8,7,6); ก าหนดการตอขาพอรตดงรปท 10.1 ดงน ขา RS = Digital Pin 11 ขา E/EN = Digital Pin 10 ขา D4 = Digital Pin 9 ขา D5 = Digital Pin 8 ขา D6 = Digital Pin 7 ขา D7 = Digital Pin 6
10.1.2.2 ฟงกชน begin( ) เปนฟงกชนส าหรบก าหนดชนดของจอ LCD Module เชน ชนด 16 ตวอกษร 2 บรรทด เปนตน รปแบบ lcd.begin(cols, rows)
พารามเตอร cols คอ จ านวนตวอกษรของจอ LCD Module rows คอ จ านวนบรรทดของจอ LCD Module ตวอยาง lcd.begin(16,2); //ก าหนดเปนจอ LCD Module ชนด 16x2
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 414
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.1.2.3 ฟงกชน clear( ) เปนฟงกชนส าหรบเคลยรการแสดงผลของจอ LCD Module รปแบบ lcd.clear()
พารามเตอร ไมม
10.1.2.4 ฟงกชน home( ) เปนฟงกชนส าหรบเลอนเคอรเซอร (Cursor) ไปต าแหนงแรกของบรรทดท 1 รปแบบ lcd.home()
พารามเตอร ไมม
10.1.2.5 ฟงกชน setCursor( ) เปนฟงกชนส าหรบก าหนดต าแหนงแสดงขอมลบนจอ LCD Module รปแบบ lcd.setCursor(col, row)
พารามเตอร col คอ ต าแหนงตวอกษรของจอ LCD Module (คาเรมตนเปน 0) row คอ ล าดบบรรทดของจอ LCD Module (คาเรมตนเปน 0) ตวอยาง lcd.setCursor(0,1); //ก าหนดใหแสดงผลขอมลทต าแหนงท 1 บรรทดท 2
10.1.2.6 ฟงกชน print( ) เปนฟงกชนส าหรบสงขอมลแสดงผลทจอ LCD Module รปแบบ lcd.print(data)
หรอ lcd.print(data,BASE) พารามเตอร data คอ ขอมลทตองการแสดงผลทจอ LCD Module BASE คอรปแบบการแสดงผลBIN=เลขฐานสอง, DEC=เลขฐานสบ, OCT=เลขฐานแปดและ HEX=เลขฐานสบหก ตวอยาง lcd.print(‚Ayutthaya‛); //ใหแสดงขอความ Ayutthaya lcd.print(‘A’,HEX); //แสดงคาของอกขระ ASCII A ในรปเลขฐานสบหก ซงจะแสดงคาเปน 41 หมายเหต : การแสดงผลขอมลดวยฟงกชน print( ) ตองก าหนดต าแหนงการแสดงผลดวยฟงกชน setCursor( ) กอน
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 415
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.1.2.7 ฟงกชน cursor( ) เปนฟงกชนส าหรบเปดแสดง cursor แบบขดลาง (underscore) ทจอ LCD Module รปแบบ lcd.cursor()
พารามเตอร ไมม
10.1.2.8 ฟงกชน noCursor( ) เปนฟงกชนส าหรบปดแสดง cursor ทจอ LCD Module ทเปดใชงานแสดงโดยฟงกชน cursor( ) รปแบบ lcd.noCursor()
พารามเตอร ไมม
10.1.2.9 ฟงกชน blink( ) เปนฟงกชนส าหรบแสดง cursor แบบกระพรบ ทเปดแสดงโดยฟงกชน cursor( ) รปแบบ lcd.blink()
พารามเตอร ไมม
10.1.2.10 ฟงกชน noBlink( ) เปนฟงกชนส าหรบปดการแสดง cursor แบบกระพรบทเปดแสดงโดยฟงกชน cursor( ) และฟงกชน blink( ) รปแบบ lcd.noBlink()
พารามเตอร ไมม
10.1.2.11 ฟงกชน noDisplay( ) เปนฟงกชนส าหรบปดการแสดงขอมลของจอ LCD Module โดยขอมลทสงใหแสดงผลไมสญหาย รปแบบ lcd.noDisplay()
พารามเตอร ไมม
10.1.2.12 ฟงกชน display( ) เปนฟงกชนส าหรบเปดการแสดงขอมลของจอ LCD Module ทสงปดจากฟงกชน noDisplay( ) โดยขอมลทสงใหแสดงผลไมสญหาย รปแบบ lcd.display()
พารามเตอร ไมม
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 416
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตวอยางโปรแกรม 10.1 โปรแกรมแสดงผลขอมลทจอ LCD Module 1 2 3 4 5 6 7 8 9
10 11 12
#include <LiquidCrystal.h> //include the library code: LiquidCrystal lcd(11,10,9,8,7,6); //initialize interface pins void setup() { lcd.begin(16,2); //set LCD type lcd.print("Hello_Ayutthaya!"); //print a message to the LCD. } void loop() { lcd.setCursor(0, 1); //set the cursor to column0, line1 lcd.print(millis()/1000); //print the number of seconds }
บรรทดท 1 เชอมโยงไฟลไลบราร LiquidCrystal.h มาใชงาน บรรทดท 2 ก าหนดต าแหนงขาส าหรบการตอบอรด Arduino UNO กบจอ LCD Module บรรทดท 5 ก าหนดชนดของจอ LCD Module เปนชนด 16 ตวอกษร 2 บรรทด บรรทดท 6 ใหแสดงผลขอความ (ถาไมระบต าแหนงจะแสดงขอความเรมทต าแหนงแรกสด) บรรทดท 10 ก าหนดใหแสดงผลทต าแหนงแรกของบรรทดท 2 บรรทดท 11 แสดงคาการนบเวลาดวยคา millis/1000 คอ 1 วนาท
10.1.3 การตอจอ LCD Module กบบอรด Arduino UNO แบบใชโมดล LCD I2C เนองจากบอรด Arduino บางรนมขาพอรตใหใชงานนอย การใชงานรวมกบจอ LCD Module ทเชอมตอแบบขนานจะตองใชขาพอรตอยางนอย 6 ขา จงไดมการพฒนาโมดลส าหรบเชอมตอจอ LCD Module กบบอรด Arduino ดวยการสอสารแบบ Serial I2C หรอเรยกวา LCD I2C Interface Module โดยใชขาสอสารขอมลแคเพยง 2 ขา คอ ขา SDA (Serial Data) และขา SCL (Serial Clock) ซงขอดของ โมดล LCD I2C Interface คอ สามารถชวยลดเชอมตอจาก 6 ขาเหลอเพยง 2 ขาเทานน และยงเปนการชวยปองกนสญญาณรบกวนดวย โมดลดงกลาวมลกษณะดงรปท 10.2
รปท 10.2 โมดล LCD I2C Interface (ทมา http://www.satorshop.com/product/189/iic-I2C-interface-lcd1602)
ขาเชอมตอกบ บอรด Arduino
จด Jumper ก าหนด Address
|----- ขาเชอมตอกบจอ LCD Module -----|
จด Jumper on/off
backlight
ปรบความเขม
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 417
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
จากรปท 10.2 ทจด Jumper ก าหนด Address ของโมดล LCD I2C Interface ประกอบดวย A0 A1 A2 ส าหรบก าหนดคา Address ซงมคาเรมตนเปน 0x27 และ 0x3F ก าหนดไดตามตาราง 10.2
ตาราง 10.2 การก าหนดคา Address ของโมดล LCD I2C Interface A0 A1 A2 Hex Address 1 1 1 0x27
0 1 1 0x26 1 0 1 0x25
0 0 1 0x24 1 1 0 0x23 0 1 0 0x22 1 0 0 0x21 0 0 0 0x20
1 = Not Connected 0= Connect
Default 0x27 or 0x3F
I2C อานวา ไอสแควรซหรอไอทซ เปนรปแบบโปรโตคอล (Protocol) ของการสอสารระหวางอปกรณ 2 ตว เรยกวา I2C (Inter-Intergrated Circuit:IIC, I2C, I2C) เปนวธการรบ-สงขอมลทสามารถตดตอกนไดหลายตวโดยมตวแม (Master) และตวลก (Slave) ระบบสอสารจะมตวแม 1 ตวซงอาจเปนไมโครคอนโทรลเลอร และมตวลกไดหลายตวอาจเปนไมโครคอนโทรลเลอรอกตวหนงหรออปกรณชนดอน การตดตอรบ-สงขอมลระหวางตวแมกบตวลกจะไดครงละ 1 ค จะรบ-สงขอมลตวลกพรอมกนหลายตวไมได ตวลกแตละตวจะมคาแอดเดรสเปนตวก าหนดชอ รปแบบการสอสารแบบ Serial I2C Protocol แสดงดงรปท 10.3
รปท 10. 3 รปแบบการสอสารแบบ Serial I2C Protocol (ทมา :https://www.arduitronics.com/article/47/I2C-communication)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 418
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
จากรปท 10.3 การตดตอรบ-สงขอมล ตวแมจะเรยกผานคาแอดเดรสวาจะตดตอกบตวลกใด ท าใหในระบบสามารถเชอมตออปกรณไดหลายตวโดยผานสายเชอมตอเพยง 2 เสน คอ SDA (Serial Data) และ SCL (Serial Clock) โดยมความเรวตงแต 100 kHz ถง 5 MHz วธการสอสารนคดคนโดยบรษท Phillips Semiconductor ปจจบนคอบรษท NXP Semiconductor โดยคดคนตงแตป ค.ศ. 1982 และไดมการพฒนามาเรอยๆ จนกลายเปนโปรโตคอลมาตรฐานทใชในการตดตอกนระหวางอปกรณ การตอโมดล LCD I2C Interface กบจอ LCD Module และบอรด Arduino แสดงดงรป
รปท 10.4 การตอวงจรโมดล LCD I2C Interface กบจอ LCD Module และบอรด Arduino
รปท 10.4 การตอวงจรใชงานจอ LCD Module โดยใชโมดล LCD I2C Interface จะใชไฟเลยงวงจร 2 ขา และใชขาพอรตเพยง 2 ขา ดงน
ตาราง 10.3 การตอขาพอรตของบอรด Arduino UNO กบโมดล LCD I2C Interface บอรด Arduino UNO โมดล LCD I2C Interface
GND GND (Pin1)
+5V VCC (Pin2) Analog Pin4 : A4 (SDA) SDA (Pin3 Serial Data) Analog Pin5 : A5 (SCL) SCL (Pin4 Serial Clock)
10.1.4 การเขยนโปรแกรมควบคมการแสดงผลจอ LCD Module แบบ LCD I2C การเขยนโปรแกรมควบคมการแสดงผลจอ LCD Module แบบใชการตอผานโมดล LCD I2C Interface จะใชไฟลไลบรารชอ LiquidCrystal_I2C.h ซงผพฒนาซอฟตแวร Arduino IDE ไมไดสรางไฟล ไลบรารส าเรจรปมาไวให โดยตองดาวนโหลดไฟลและน ามาตดตงไวทต าแหนงพนทเกบไฟลไลบราร
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 419
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.1.4.1 การดาวนโหลดและตดตงไฟลไลบราร LiquidCrystal_I2C ขอดของไมโครคอนโทรลเลอร Arduino คอ มการเปดเผยขอมลทงดานฮารดแวรและซอฟตแวร รวมทงเกดสงคมแบงปนความร ทนกพฒนาโปรแกรมตางเปดเผยขอมลใหแกกนและกน ดงนนจงมตวอยางการใชงานส าหรบอปกรณตาง ๆ ใหเลอกใชกนอยางมากมาย โดยตวอยางโปรแกรมและไฟลไลบรารส าเรจรปสามารถคนหาและดาวนโหลดไดฟรจากในหลายเวบ เวบไซตส าหรบดาวนโหลดไลบรารพนฐาน คอ https://www.arduino.cc/en/Reference/ และเวบไซตส าหรบดาวนโหลดไลบรารส าหรบอปกรณคอ https://github.com/arduino-libraries หรอเวบไซตอน ๆ ซงสามารถดาวนโหลดไดฟร การดาวนโหลดและตดตงไฟลไลบราร LiquidCrystal_I2C มขนตอนดงน 1) ดาวนโหลดไฟลไลบราร LiquidCrystal_I2C จากเวบไซตทรวมขอมลของไฟล https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library ทหนาเวปไซตใหเลอกทเมน Clone or download และเลอกท Download ZIP ดงรป
รปท 10.5 หนาตางส าหรบดาวนโหลดไฟลไลบราร LiquidCrystal_I2C (ทมา : https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library )
2) จะไดหนาตางส าหรบจดเกบไฟลดาวนโหลด จากตวอยางเลอกจดเกบใน Local Disk (D:) ชอไฟล File name: Arduino-Liquid-Crystal-I2C-library-master เลอกท Save
รปท 10.6 หนาตางจดเกบไฟลดาวนโหลด Arduino-Liquid-Crystal-I2C-library-master
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 420
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
3) เมอดาวนโหลดเสรจแลวจะไดไฟลบบอด (ZIP File) ดงรป
รปท 10.6 ไฟล Arduino-Liquid-Crystal-I2C-library-master (ZIP File)
4) เปดใชงานซอฟตแวร Arduino IDE และตดตงไฟลไลบรารเพอใชงานโดย เลอกทแถบเมน Sketch --> Include Library --> Add.ZIP Library… ดงรปท 10.7
รปท 10.7 แถบเมนส าหรบตดตงไฟลไลบราร (ZIP Library)
5) เลอกทต าแหนงจดเกบไฟลทไดดาวนโหลดไว ในขนตอนท 2-3 คอ Local Disk (D:) ชอไฟล File name: Arduino-Liquid-Crystal-I2C-library-master เลอก Open
รปท 10.8 การตดตงไฟลไลบราร Arduino-Liquid-Crystal-I2C-library-master
6) ซอฟตแวร Arduino IDE จะด าเนนการตดตงไฟลใหและปดหนาตางการตดตง ไปโดยอตโนมต ใหตรวจสอบและทดสอบการใชงาน โดยเลอกท แถบเมน Sketch --> Include Library จะเหนไฟลไลบราร Arduino-Liquid-Crystal-I2C-library-master ในรายการของไลบราร ดงรปท 10.9
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 421
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.9 ไฟลไลบราร Arduino-Liquid-Crystal-I2C-library-master ในซอฟตแวร Arduino IDE
7) เมอคลกเมาสเลอกทไฟลไลบราร Arduino-Liquid-Crystal-I2C-library-master จะไดการเชอมโยงไฟลไลบรารมาท างานรวมกบไฟลสเกตช ดวยค าสง #include< > ดงรป
รปท 10.10 การเชอมโยงไฟลไลบราร LiquidCrystal_I2C.h มาท างานในไฟลสเกตช
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 422
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.1.4.2 ฟงกชนใชงานของไลบราร LiquidCrystal_I2C ฟงกชนส าเรจรปส าหรบควบคมการแสดงผลของจอ LCD Module แบบ LCD I2C จะเหมอนกบฟงกชนควบคมการแสดงผลของจอ LCD Module แบบขนาน ทจะมฟงกชนทแตกตางกนดงน
1) ฟงกชน LiquidCrystal_I2C ( ) เปนฟงกชนส าหรบก าหนดคณสมบตของจอ LCD I2C
รปแบบ LiquidCrystal_I2C lcd(address,cols,rows)
พารามเตอร address คอ คาแอดเดรสของโมดล LCD I2C โดยปกตจะเปน 0x27 และ 0x3F cols คอ จ านวนตวอกษรของจอ LCD Module rows คอ จ านวนบรรทดของจอ LCD Module ตวอยาง LiquidCrystal_I2C lcd(0x3F,16,2); //ก าหนดคาแอดเดรสโมดล LCD I2C เปน 0x3F ส าหรบจอ LCD Module ชนด 16 ตวอกษร, 2 บรรทด
2) ฟงกชน blacklight( ) เปนฟงกชนส าหรบเปดการจายแรงดนใหไฟสองพนหลง (Backlight)
รปแบบ lcd.backlight()
พารามเตอร ไมม ตวอยาง lcd.backlight //เปดไฟสองพนหลง ((Backlight)
3) ฟงกชน noBlacklight( ) เปนฟงกชนส าหรบปดการจายแรงดนใหไฟสองพนหลง (Backlight)
รปแบบ lcd.noBacklight()
พารามเตอร ไมม ตวอยาง lcd.noBacklight(); //ปดไฟสองพนหลง ((Backlight)
ตวอยางโปรแกรม 10.2 1 2 3 4 5 6 7 8 9
10 11 12
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); //set address and LCD type void setup() { lcd.begin(); //initialize interface lcd.print("Hello_Ayutthaya!"); //print a message to the LCD. } void loop() { lcd.setCursor(0, 1); //set the cursor to column0, line1 lcd.print(millis()/1000); //print the number of seconds }
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 423
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
บรรทดท 1 เชอมโยงไฟลไลบราร LiquidCrystal_I2C.h มาใชงาน บรรทดท 2 ก าหนด Address เปน 0x27 และชนด LCD 16 ตวอกษร 2 บรรทด บรรทดท 5 เรมตนใชงานการสอสาร บรรทดท 6 ใหแสดงผลขอความ (ถาไมระบต าแหนงจะแสดงขอความเรมทต าแหนงแรกสด) บรรทดท 10 ก าหนดใหแสดงผลทต าแหนงแรกของบรรทดท 2 บรรทดท 11 แสดงคาการนบเวลาดวยคา millis/1000 คอ 1 วนาท
10.2 การใชงานอปกรณเซนเซอรชนดดจทล
อปกรณเซนเซอรดจทล คอ เซนเซอรทใหคาเอาตพตจากการตรวจจบเปนระดบแรงดน 0V และ 5V หรอในลกษณะตอวงจร (ON) และตดวงจร (OFF) ซงเปนสญญาณดจทลทมคาลอจกเปน “1” หรอ HIGH และ “0” หรอ LOW เชน ไมโครสวตช (Micro Switch), สวตชปรอท (Mercury switch), สวตชแมเหลก (Reed Switch) และเซนเซอรอนฟราเรด เปนตน ซงอปกรณเหลานมหลกการทางไฟฟาเหมอนกนคอเปนอปกรณตด-ตอวงจร แตในระบบไมโครคอนโทรลเลอรอปกรณประเภทสวตชจะเปนอปกรณอนพตส าหรบสงงานโดยใหสญญาณเอาตพตทเปลยนแปลงเปนลอจก ในหวขอนขออธบายการใชงานอปกรณเซนเซอรทใหท างานแลวใหสญญาณเอาตพตเปนลอจกกบบอรด Arduino ดงน
10.2.1 การใชงานไมโครสวตชกบบอรด Arduino UNO 10.2.1.1 คณสมบตของไมโครสวตช ไมโครสวตช (Micro Switch) คอ สวตชทท างานโดยอาศยแรงกดจากภายนอกกระท ากบกานสวตชทตออยกบหนาสมผสภายในตวอปกรณ ในลกษณะการชนหรอการกดทบท าใหเกดการตด-ตอวงจรไฟฟา ซงแตกตางจากสวตชทวไปคอไมตองใชแรงมาก กท าใหสวตชเปลยนสถานการณท างานได มลกษณะดงรปท 10.11
รปท 10.11 โครงสรางภายในของไมโครสวตช (ทมา : https://en.wikipedia.org/wiki/Miniature_snap-action_switch)
กานสวตช
COM NO NC
แผนสปรง
หนาสมผส
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 424
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
จากรปท 10.11 เมอมแรงกดกระท ากบกานสวตชจะกดกระเดองภายในเพอใหแผนสปรงดดตว ท าใหหนาสมผสเปลยนต าแหนงจดตอของขา COM (Common) จาก NC (Normal Close) มาตอกบ NO (Normal Open)
รปท 10.12 ไมโครสวตชรปแบบตาง ๆ (ทมา : https://andeligroup.en.alibaba.com/product/1962886407-800795846/micro_switch)
จากรปท 10.12 จะเหนวาไมโครสวตชมหลายแบบ ทงแบบกานยาว กานสน มลอรบการกดหรอไมมลอรบการกด หรอบางแบบกไมมกาน การเลอกใชงานตองค านงขนาดของแรงทกระท ากบกานสวตช หากมแรงกระท านอยเกนไปอาจท าใหไมโครสวตชไมท างาน หรอถามแรงกระท ามากเกนไปอาจท าใหตวโครงสรางไมโครสวตชเสยหายไดรวมถงเลอกใหเหมาะสมกบรปแบบของแรงทกระท ากบกานสวตชวาเปนการชนหรอการกด ไมโครสวตชน าไปใชงานเปนลมตสวตช (Limit Switch) ส าหรบจ ากดการเคลอนทของระบบกลไกในเครองจกรอตสาหกรรม เมอกลไกเคลอนทไปชนกบไมโครสวตชทตดตงไว จะท าใหเกดคาลอจกและสงงานใหกลไกหยดเคลอนท หรอน าไปประยกตใชงานเปนสวตชสงงานแบบอตโนมต เชน ตดตงในตเสอผาเมอเปดตท าใหหนาสมผสตอวงจรเพอเปดไฟในต เมอปดประตหนาสมผสจะตดวงจรเพอปดไฟในต เปนตน
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 425
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.2.1.2 การตอไมโครสวตชกบบอรด Arduino UNO วงจรการตอไมโครสวตชกบบอรด Arduino UNO แสดงดงรปท 10.13
รปท 10.13 การตอไมโครสวตชกบขาพอรตของบอรด Arduino UNO
จากรปท 10.13 แสดงการตอไมโครสวตชกบขาพอรตของบอรด Arduino UNO สวนทส าคญคอตองมตวตานทาน Pull-up แตในซอฟตแวร Arduino IDE มฟงกชนใชงานการ Pull-up ภายในได จงไมตองตอตวตานทาน Pull-up ในวงจรกได จากวงจร SW1 แสดงการเลอกขา COM-NO ของไมโครสวตชใชงาน สวน SW2 แสดงการเลอกขา COM-NC ใชงาน ซงจะใหคาลอจกตางกน คอ หากไมกดกานสวตชของ SW1 ทขาพอรต Digital Pin2 จะมคาลอจกเปน HIGH เมอกดจะเปน LOW และหากไมกดกานสวตชของ SW2 ทขาพอรต Digital Pin12 จะมคาลอจกเปน LOW เมอกดจะเปน HIGH
10.2.1.3 การเขยนโปรแกรมรบคาลอจกจากไมโครสวตช เนองจากไมโครสวตชเปนอปกรณอนพตแบบดจทล จงเขยนโปรแกรมรบคาลอจกจากการกดไมโครสวตชเหมอนสวตชทวไป ดงตวอยางโปรแกรม 10.3 ตวอยางโปรแกรม 10.3
1 2 3 4 5 6 7 8 9
10 11 12 13
#define SW1 2 #define SW2 12 #define LED0 14 #define LED1 16 void setup() { pinMode(SW1,INPUT); //or pinMode(SW1,INPUT_PULLUP); pinMode(SW2,INPUT); //or pinMode(SW2,INPUT_PULLUP); pinMode(LED0,OUTPUT); pinMode(LED1,OUTPUT); } void loop() { if(digitalRead(SW1)==LOW) //SW1 Press digitalWrite(LED0,HIGH);
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 426
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตวอยางโปรแกรม 10.3 (ตอ) 14 15 16 17 18 19 20
else digitalWrite(LED0,LOW); if(digitalRead(SW2)==LOW) digitalWrite(LED1,HIGH); else //SW2 Press digitalWrite(LED1,LOW); }
บรรทดท 1-4 ก าหนดชออปกรณ บรรทดท 7-8 ก าหนดขาพอรต Digital Pin2 และ Digital Pin12 เปนอนพต ซงสามารถก าหนดใหใชการ Pull-up ภายในได ดวยค าสง pinMode(SW1,INPUT_PULLUP); บรรทดท 12-15 ใหรบคาลอจกจากสวตช SW1 ถาเปนลอจก LOW ให LED0 ตด ถาเปนลอจก HIGH ให LED0 ดบ บรรทดท 16-19 ใหรบคาลอจกจากสวตช SW2 ถาเปนลอจก LOW ให LED1 ตด ถาเปนลอจก HIGH ให LED1 ดบ เนองจากวงจรของไมโครสวตช SW1 เลอกขาใชงานเปน COM-NO สวน SW2 เลอกขาใชงาน เปน COM-NC ดงรปท 10.13 จงใหการท างานตางกน คอถาไมกด SW1 LED0 ดบ เมอกด SW1 LED1 จะตด สวนถาไมกด SW2 LED1 ตด เมอกด SW2 LED1 จะดบ
10.2.2 การใชงานสวตชปรอทกบบอรด Arduino UNO 10.2.2.1 คณสมบตของสวตชปรอท สวตชปรอท (Mercury Switch) เปนสวตชทจะตอวงจรไฟฟาเมอโลหะเหลวทอยภายในปรอทเชอมตอขวโลหะ มลกษณะดงรปท 10.13
ก. แบบ Two Poles ข. แบบ Two Poles
(Omnidirectional) ค. แบบ Three Poles
รปท 10.13 สวตชปรอท (ทมา : http://www.chinaxurui.net/mercury-switch)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 427
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
จากรปท 10.13 แสดงสวตชปรอทแบบ Two Poles และ แบบ Three Poles เมอสวตชเอยงจะท าใหโลหะเหลวทอยภายในไหลไปเปนสอน าไฟฟาใหขวของสวตชเชอมตอกน เปนสวตชตอวงจร (ON) เมอสวตชเอยงในทศทางตรงขามกนโลหะเหลวจะไหลออกจากขวของสวตช เปนสวตชตดวงจร (OFF) สามารถน าไปใชตรวจจบความเอยงได ไดมาการสรางเปนแผงวงจรใชงานดงรป
ก. แผงวงจรของสวตชปรอท ข. ขาเชอมตอของวงจรสวตชปรอท
รปท 10.14 แผงวงจรของสวตชปรอท (ทมา : http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/
keyes-ky-017-arduino-mercury)
10.2.2.2 การตอสวตชปรอทกบบอรด Arduino UNO การตอสวตชปรอทกบบอรด Arduino ตองมตวตานทาน Pull-up แสดงดงรปท 10.15
รปท 10.15 การตอสวตชปรอทกบบอรด Arduino UNO
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 428
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.2.2.3 การเขยนโปรแกรมรบคาลอจกจากสวตชปรอท สวตชปรอทเปนอปกรณอนพตแบบดจทล จงเขยนโปรแกรมรบคาลอจกจากการท างานของสวตชปรอทเหมอนสวตชทวไป ดงตวอยางโปรแกรม 10.4
ตวอยางโปรแกรม 10.4 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
#define Mer_SW 2 #define LED0 14 #define LED1 16 void setup() { pinMode(Mer_SW,INPUT); //or pinMode(Mer_SW,INPUT_PULLUP); pinMode(LED0,OUTPUT); pinMode(LED1,OUTPUT); } void loop() { if(digitalRead(Mer_SW)==LOW) { //Mer_SW ON digitalWrite(LED0,HIGH); digitalWrite(LED1,LOW); } else { //Mer_SW OFF digitalWrite(LED0,LOW); digitalWrite(LED1,HIGH); } }
บรรทดท 1-3 ก าหนดชออปกรณ บรรทดท 5 ก าหนดขาพอรต Digital Pin2 เปนอนพต ซงสามารถก าหนดใหใชการ Pull-up ภายในได ดวยค าสง pinMode(Mer_SW,INPUT_PULLUP); บรรทดท 10-16 ใหรบคาลอจกจากสวตช Mer_SW ถาเปนลอจก LOW คอสวตชปรอท ON ให LED0 ตด, LED1 ดบ ถาเปนลอจก HIGH ให LED0 ดบ, LED1 ตด
10.2.3 การใชงานสวตชแมเหลกกบบอรด Arduino UNO 10.2.3.1 คณสมบตของสวตชแมเหลก
สวตชแมเหลก (Reed Switch) คอ สวตชทใชตด-ตอวงจรไฟฟาตามสนามแมเหลก โครงสรางของสวตชแมเหลกจะเปนหลอดแกวผนกกนอากาศ มขวตอวงจรไฟฟาทปลายสองดาน ดานในตอกบกานหนาสมผสขนาดเลกทท าจากโลหะสารแมเหลกเมอมสนามแมเหลกในบรเวณสวตช หนาสมผสจะผลกไปตามแนวสนามจนสมผสกนท าใหไฟฟาไหลผานขวตอได (ON) เมอสนามแมเหลกหมดไป หนาสมผสกจะดดกลบทเดมท าใหวงจรไฟฟาขาดออกจากกน (OFF) มลกษณะดงรปท 10.15 และแผงวงจรดงรปท 10.16
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 429
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.15 ลกษณะโครงสรางของ Reed Switch
ทมา : http://fariedrj.blogspot.com/2014/07/memahami-fungsi-reed-switch.html
รปท 10.16 แผงวงจร Reed Switch
(ทมา : https://makerselectronics.com/product/reed-switch-)
10.2.2.2 การตอสวตชแมเหลกกบบอรด Arduino UNO การตอสวตชแมเหลกกบบอรด Arduino ตองมตวตานทาน Pull-up แสดงดงรปท 10.15
รปท 10.15 การตอสวตชแมเหลกกบบอรด Arduino UNO
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 430
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.2.2.3 การเขยนโปรแกรมรบคาลอจกจากสวตชแมเหลก สวตชแมเหลกเปนอปกรณอนพตแบบดจทล จงเขยนโปรแกรมรบคาลอจกจากการท างานของสวตชแมเหลกเหมอนสวตชทวไป ดงตวอยางโปรแกรม 10.5
ตวอยางโปรแกรม 10.5 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17
#define Reed_SW 2 #define LED0 14 #define LED1 16 void setup() { pinMode(Reed_SW,INPUT); //or pinMode(Reed_SW,INPUT_PULLUP); pinMode(LED0,OUTPUT); pinMode(LED1,OUTPUT); } void loop() { if(digitalRead(Reed_SW)==LOW) { //Reed_SW ON digitalWrite(LED0,HIGH); digitalWrite(LED1,HIGH); } else { //Reed_SW OFF digitalWrite(LED0,HIGH); digitalWrite(LED1,HIGH); } }
บรรทดท 1-3 ก าหนดชออปกรณ บรรทดท 5 ก าหนดขาพอรต Digital Pin2 เปนอนพต ซงสามารถก าหนดใหใชการ Pull-up ภายในได ดวยค าสง pinMode(Reed_SW,INPUT_PULLUP); บรรทดท 10-15 ใหรบคาลอจกจากสวตช Reed_SW ถาเปนลอจก LOW คอสวตชแมเหลก ON ให LED0 และLED1ตด ถาเปนลอจก HIGH ให LED0 และ LED1ดบ
10.2.4 การใชงานเซนเซอรอนฟราเรดกบบอรด Arduino UNO 10.2.4.1 คณสมบตของเซนเซอรอนฟราเรด เซนเซอรอนฟราเรด (Infrared Sensor) หรอเซนเซอรสวตชอนฟราเรด เปนเซนเซอรส าหรบตรวจจบวตถ โดยใชการสงแสงอนฟราเรดเมอแสงอนฟราเรดกระทบกบวตถจะสะทอนกลบมา เซนเซอรอนฟราเรดส าหรบตรวจจบสงกดขวาง นจะใหคาเอาตพตจากการตรวจจบเปนคาลอจก (“0” หรอ LOW และ “1” หรอ HIGH) เชน ดงรปท 10.16
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 431
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.16 เซนเซอรอนฟราเรดส าหรบตรวจจบวตถ
(ทมา : https://th.aliexpress.com/item/E18-D80NK-Adjustable-Infrared-Sensor)
จากรปท 10.16 เปนเซนเซอรอนฟราเรดรน E18-D80NK ทมคณสมบต ดงน Working voltage range: 5 VDC Working current: 10-15mA Drive current: 100mA Detection Distance: 3-80 cm Size: 17x45 mm. Wire connection: (Red/Brow= VCC 5V), (Green/Blue= GND),
(Yellow/Black = Output) Should connect 10Kohm pull-up resistor with 5V at the output pin.
หรออาจเปนรนทใชงานตรวจจบวตถหรอสงกดขวางระยะใกล ๆ ใชส าหรบตรวจจบเสนขาวด าของพนสนามหนยนตหรอสงกดขวาง ระยะตรวจจบอยทชวง 2- 8 cm มม 35 องศา สามารถปรบความไวไดทตวตานทานปรบคาไดบนบอรด ใชไฟเลยง 3-5V เอาตพตใหคาปกตเปน 1 และเมอตรวจพบเสนหรอวตถกดขวาง จะใหคาเอาตพตเปน 0 พรอมแสดงไฟทเซนเซอร ดงรปท 10.17
รปท 10.17 โมดลตรวจจบวตถหรอสงกดขวางแบบอนฟราเรด (ทมา https://www.arduinoall.com/product/1701)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 432
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.2.4.2 การตอเซนเซอรอนฟราเรดกบบอรด Arduino UNO
การตอเซนเซอรอนฟราเรดกบบอรด Arduino UNO โดยตองมตวตานทาน Pull-up แตส าหรบโมดลเซนเซอรอนฟราเรดมตวตานทานอยในวงจรแลวจงไมตองตอ แสดงดงรปท 10.18
รปท 10.18 การตอเซนเซอรอนฟราเรดกบบอรด Arduino UNO
10.2.4.3 การเขยนโปรแกรมรบคาลอจกจากเซนเซอรอนฟราเรด
การเขยนโปรแกรมรบคาจะเหมอนกนการเขยนรบคาลอจกทขาพอรตอนพต ตวอยางโปรแกรม 10.6
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#define IR_SW1 2 #define IR_SW2 8 #define LED0 14 #define LED1 16 void setup() { pinMode(IR_SW1,INPUT); pinMode(IR_SW2,INPUT); //or pinMode(IR_SW2,INPUT_PULLUP); pinMode(LED0,OUTPUT); pinMode(LED1,OUTPUT); } void loop() { if(digitalRead(IR_SW1)==LOW) //IR_SW1 Detect { digitalWrite(LED0,HIGH); //LDE0 Blinking delay(100); digitalWrite(LED0,LOW); delay(100); } if(digitalRead(IR_SW2)==LOW) //IR_SW2 Detect { digitalWrite(LED1,HIGH); //LDE1 Blinking delay(500); digitalWrite(LED1,LOW); delay(500); } }
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 433
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
บรรทดท 1-4 ก าหนดชออปกรณ บรรทดท 6-9 ก าหนดทศทางขาพอรต กรณเปนอนพตสามารถก าหนดใหใชการ Pull-up ภายในได ดวยค าสง pinMode(IR_SW2,INPUT_PULLUP); บรรทดท 12-17 ใหรบคาลอจกจากสวตช IR_SW1 ถาเปนลอจก LOW คอเซนเซอรตรวจจบ วตถ ให LED0 ตดกระพรบดวยคาหนวงเวลา 100 ms บรรทดท 19-24 ใหรบคาลอจกจากสวตช IR_SW2 ถาเปนลอจก LOW คอเซนเซอรตรวจจบ วตถ ให LED1 ตดกระพรบดวยคาหนวงเวลา 500 ms
10.2.5 การใชงานเซนเซอรวดแสง 10.2.5.1 คณสมบตของเซนเซอรวดแสง เซนเซอรบางชนดใชวดคาแบบแอนะลอกแตมวงจรแปลงสญญาณใหสงคาเอาตพตเปนสญญาณดจทลดวย ดงนนสามารถสงคาเอาตพตออกมาไดทงสญญาณแอนะลอกและดจทล ตวอยางเชน โมดลเซนเซอรวดแสง ดงรปท 10.19
รปท 10.19 โมดลเซนเซอรวดแสง (ทมา : https://www.arduinoall.com/product/922)
จากรปท 10.19 เปนโมดลเซนเซอรวด ทมคณสมบตดงน Using sensitive type photosensitive resistance sensor The comparator output signal clean, good waveform, driving ability,
more than 15mA. With adjustable potentiometer detects the light intensity can be
adjusted The working voltage 3.3V-5V The output form: DO digital switching output (0 and 1) and
AO analog voltage output A fixed bolt hole for easy installation
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 434
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
The small PCB board size: 3.2 cm x 1.4cm Using a wide voltage LM393 comparator Uses: light intensity detection, light intensity sensors, smart car
search optical modules จากคณสมบตจะเหนวาโมดลมขาสญญาณ เอาตพต 2 ขา คอ DO (digital switching output (0 and 1)) และ AO (analog voltage output) ดงนนสามารถเลอกไดวาจะรบคาสญญาณเปนแบบดจทลหรอแบบแอนะลอก โมดลวดแสงสามารถน าไปใชงาน เชน ในวงจรปด-เปดไฟอตโนมต เมอถงเวลากลางคนมคาแสงต ากวาคาทก าหนดใหไฟเปด เมอถงเวลากลางวนมคาแสงมากกวาคาทก าหนด ใหไฟปด เปนตน 10.2.5.2 การตอโมดลวดแสงกบบอรด Arduino UNO การตอโมดลวดแสงกบบอรด Arduino UNO หากตองการรบคาลอจกจากการท างานของโมดลวดแสงใชขาเอาตพตดจทล DO ดงรปท 10.20
รปท 10.20 การตอโมดลวดแสงกบบอรด Arduino UNO
10.2.5.3 การเขยนโปรแกรมรบคาลอจกจากโมดลวดแสง เซนเซอรแบบโมดลวดดงรปท 10.19 สามารถเลอกไดวาจะรบคาสญญาณเปนแบบ
ดจทลหรอแบบแอนะลอก ในตวอยางโปรแกรม 10.7 เปนการรบคาเปนดจทล
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 435
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตวอยางโปรแกรม 10.7 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#define Lightsensor 2 #define LED0 14 #define LED1 16 void setup() { pinMode(Lightsensor,INPUT); pinMode(LED0,OUTPUT); pinMode(LED1,OUTPUT); } void loop() { if(digitalRead(Lightsensor)==LOW) //Lightsensor Detect (ON) { digitalWrite(LED0,HIGH); //LDE0, LED1 Blinking digitalWrite(LED1,HIGH); delay(100); digitalWrite(LED0,LOW); digitalWrite(LED1,LOW); delay(100); } else { digitalWrite(LED1,LOW); //LED0, LDE1 OFF digitalWrite(LED1,LOW); } }
บรรทดท 1-3 ก าหนดชออปกรณ บรรทดท 6-8 ก าหนดทศทางขาพอรต บรรทดท 12-24 ใหรบคาลอจกจากสวตช Lightsensor ถาเปนลอจก LOW คอคาแสงนอยกวาคาทก าหนด ให LED0, LED1 ตดกระพรบดวยคาหนวงเวลา 100 ms ถาคาแสงมากกวาทก าหนดให LED0, LED1 ดบ
10.3 การใชงานอปกรณเซนเซอรชนดแอนะลอก อปกรณเซนเซอรชนดแอนะลอก คอ เซนเซอรทใหคาเอาตพตจากการตรวจจบเปนคาระดบของแรงดน ซงมคาระหวาง 0V ถง 3.3 VDC หรอคาระหวาง 0V ถง 5 VDC ขนอยกบคณสมบตของเซนเซอร 10.3.1 การใชงานอปกรณเซนเซอรแบบโพเทนชโอมเตอร (Potentiometer) 10.3.1.1 คณสมบตของโพเทนชโอมเตอร (Potentiometer) โพเทนชโอมเตอร (Potentiometer) เปนเซนเซอรวดต าแหนงและระยะทางโดยการเปลยนคาความตานทานทใชรปแบบการหมนหรอการเคลอนทในแนวเสนตรงเหมอนตวตานทานปรบคาได โดยใชหลกการแปลงต าแหนงและระยะการเคลอนทใหอยในรปของคาความตานทานไฟฟา ท าใหเกดการเปลยนคาระดบแรงดนอยในชวง 0V ถง 5V ได ตวอยางของโพเทนชโอมเตอรแสดงดงรปท 10.21 ซงเปน
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 436
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
โพเทนชโอมเตอรม 2 แบบคอแบบแกนหมน (Rotary) มลกษณะเหมอนตวตานทานปรบคาได แตสามารถหมนไดหลายรอบ และแบบสไลด (Slide) ทเปลยนคาความตานทานโดยการเลอนต าแหนงเปนแนวเสนตรง
รปท 10.21 โพเทนชโอมเตอร (Potentiometer) แบบแกนหมน
10.3.1.2 การตอโพเทนชโอมเตอรกบกบบอรด Arduino UNO ในการใชงานโพเทนชโอมเตอรเพอวดต าแหนงและระยะทาง โดยทวไปจะใชการเชอมตอ(Coupling) กบแกนหมนตวโพเทนชโอมเตอรกบสวนกลไกทหมนเคลอนท เมอกลไกเคลอนทท าใหเกดการเปลยนคาความตานทาน และเปนผลใหเกดการเปลยนคาระดบแรงดน ซงการอานคาระดบแรงดนจะตองตอวงจรเขากบขาพอรต Analog Pin ของบอรด Arduino ดงรปท 10.22
รปท 10.22 การตอวงจรโพเทนชโอมเตอรกบกบบอรด Arduino UNO
จากรปท 10.22 เมอเปลยนคาต าแหนงแกนหมนของโพเทนชโอมเตอรจะท าใหคาความตานทานของทขา 2 เปลยนคา จงมผลใหคาแรงดนทขา 2 เปลยนคาได จงตอวงจรขา 2 กบขาพอรต Analog Pin0 (A0)
1 2 3
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 437
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
10.3.1.3 การเขยนโปรแกรมอานคาของโพเทนชโอมเตอร การเขยนโปรแกรมอานคาแอนะลอกของโพเทนชโอมเตอร จะรบคาทขาพอรต Analog Pin ทมคณสมบตแปลงสญญาณแอนะลอกเปนดจทล ซงจะไดคาระหวา 0 ถง 1023 ดงตวอยางโปรแกรม ตวอยางโปรแกรม 10.8
1 2 3 4 5 6 7 8 9
10 11 12 13
#define Analog_Pot 0 //Analog Pin0 (A0) for the potentiometer #define ledPin 13 //pin for the LED unsigned int value=0; // variable to store the value void setup() { pinMode(ledPin, OUTPUT); //ledPin as an OUTPUT } void loop() { value=analogRead(Analog_Pot); // read the value from the sensor digitalWrite(ledPin, HIGH); // led on delay(value); // delay time=Value digitalWrite(ledPin, LOW); // led off delay(value); // delay time=Value }
บรรทดท 1-2 ก าหนดขาพอรตส าหรบโพเทนชโอมเตอรและ LED บรรทดท 3 ก าหนดตวแปร value บรรทดท 5 ก าหนดหนาทขาพอรตของ LED บรรทดท 8-12 อานคาแอนะลอกจากขา A0 เกบคาในตวแปร value โดยใชคา value เปน คาของ delay time ท าให LED ตดกระพรบความถตามคาของ value
10.3.2 การใชงานอปกรณเซนเซอรตรวจจบแสงสะทอนแบบอนฟราเรด 10.3.2.1 คณสมบตของโมดลเซนเซอรตรวจจบแสงสะทอนแบบอนฟราเรด วงจรของโมดลเซนเซอรตรวจจบแสงสะทอนแบบอนฟราเรด (Infrared Reflector Sensor) ประกอบดวย LED อนฟราเรด ท าหนาทสงแสงออกไปกระทบพนผววตถ และโฟโตทรานซสเตอรท าหนาทรบแสงสะทอนทกลบมา วงจรแสดงดงรปท 10.21
(ก) โมดลเซนเซอรตรวจจบแสงสะทอน (ข) วงจรของโมดลเซนเซอรตรวจจบแสงสะทอน
รปท 10.23 โมดลเซนเซอรตรวจจบแสงสะทอนแบบอนฟราเรด (ทมา : https://inex.co.th/shop/zx-03-tcrt.html)
51010k
+Vcc
DATA
GND
TCRT5000
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 438
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
โมดลเซนเซอรตรวจจบการสะทอนของแสงแบบอนฟราเรด ใชตวตรวจจบรน TCRT5000 โดยจะตอบสนองตอแสงสะทอนไดดเมอตวตรวจจบอยหางจากวตถ ประมาณ 0.3 mm. -15 mm. คาของแรงดนจะมากหรอนอย ขนอยกบความเขมของแสงอนฟราเรดทสะทอนจากวตถและตกกระทบทตวโฟโตทรานซสเตอร คาระดบแรงดนสงเมอแสงมความเขมมาก เกดแสงสะทอนมายงโฟโตทรานซสเตอรมาก เชน วตถทเปนสขาว และมคาระดบแรงดนต าเมอแสงมความเขมนอยเกดแสงสะทอนมายงโฟโตทรานซสเตอรนอย เชน วตถทเปนสด า ดงนนวงจรตรวจจบแสงสะทอนแบบอนฟราเรดนจะน ามาใชในการตรวจจบเสนส าหรบหนยนตเคลอนทตามเสนแบบอตโนมตได
10.3.2.2 การตอโมดลเซนเซอรตรวจจบแสงสะทอนกบบอรด Arduino UNO การตอโมดลเซนเซอรตรวจจบแสงสะทอนแบบอนฟราเรดกบบอรด Arduino UNO นนเนองจากคาเอาตพตจากการตรวจจบเปนคาระดบของแรงดนหรอแบบแอนะลอก จงตองตอเขากบพอรตแอนะลอกอนพต คอ Analog Pin0 – Analog Pin5 ดงรปท 10.22
รปท 10.24 การตอโมดลเซนเซอรตรวจจบแสงสะทอนกบบอรด Arduino UNO
10.3.2.3 การเขยนโปรแกรมอานคาของโมดลเซนเซอรตรวจจบแสงสะทอน หลกการเขยนโปรแกรมอานคาขอมลของโมดลเซนเซอรตรวจจบแสงสะทอน จ าเปนตองมอปกรณแสดงผล เชน จอ LCD Module หรอ Serial Monitor เพอแสดงคาขอมลดงตวอยาง
ตวอยางโปรแกรม 10.8 1 2 3 4 5
#include <Wire.h> #include <LiquidCrystal_I2C.h> //Use LCD #define analog_A 0 //Input Analog Pin0 unsigned int value=0; LiquidCrystal_I2C lcd(0x27,16,2);
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 439
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตวอยางโปรแกรม 10.8 (ตอ) 6 7 8 9
10 11 12 13 14 15 16 17 18 19
void setup() { lcd.begin(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Analog :"); } void loop() { value=analogRead(analog_A); //Read Analog from Analog Pin0 lcd.setCursor(9,0); lcd.print(value); //Display Value ADC delay(100); }
บรรทดท 3 ก าหนดขาพอรต Analog Pin0 (A0) ส าหรบอานคาแอนะลอกของเซนเซอร บรรทดท 4 ก าหนดตวแปร value บรรทดท 15-18 อานคาแอนะลอกจากขา A0 เกบคาในตวแปร value และแสดงคาของ value ทจอ LCD Module
10.3.3 การใชงานโมดลวดระยะทาง อปกรณเซนเซอรแบบแอนะลอกอกชนดหนงทนยมใช คอ โมดลวดระยะดวยแสงอนฟราเรด GP2D120
10.3.3.1 คณสมบตของโมดลวดระยะทาง โมดลวดระยะดวยแสงอนฟราเรด มคณสมบต คอตรวจจบระยะทางดวยการสะทอนแสงอนฟราเรด มขาตอใชงาน 3 ขา คอขาแรงดนเอาตพต (Vo) ขากราวด (GND) และตอไฟเลยง (Vcc) ซงสามารถใชเปนตวตรวจจบแบบไมสมผส หรอใชเปนตวตรวจจบในการคนหาวตถหรอสงกดขวางได คณสมบตของโมดลวดระยะดวยแสงอนฟราเรด 1) ใชการตรวจจบระยะทางดวยการสะทอนแสงอนฟราเรด 2) วดระยะได – 30 cm (เบอร GP2D120) และ 10 – 80 cm (เบอร GP2Y0A21) 3) ไฟเลยงทเหมาะสมคอ 4.5 ถง 5 V ตองการกระแสไฟฟาทการวดระยะทาง สงสด 50 mA (เบอร GP2D120) และ 40 mA (เบอร GP2Y0A21) 4) ใหเอาตพตเปนแรงดนในยาน 0.4 ถง 2.4 V ทไฟเลยง +5 V
โมดลวดระยะทางเบอร GP2D120 แสดงไดดงรปท 10.25
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 440
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.25 โมดลวดระยะทางเบอร GP2D120 (ทมา : http://www.ermicro.com/blog/?p=1016)
หลกการท างานของโมดลวดระยะทางดวยแสงอนฟราเรด แสดงดงรปท 10.26
รปท 10.26 หลกการวดคาระยะทางดวยการสะทอนแสงอนฟราเรด
(ทมา : https://issuu.com/innovativeexperiment/docs/tpe_gp2d120)
L
X
F
A
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 441
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
จากรปท 10.26 หลกการท างานของโมดลวดระยะทางดวยแสงอนฟราเรด ภาคก าเนดแสงอนฟราเรด (ภาคสง) จะสงแสงอนฟราเรดผานเลนสนนเพอโฟกสแสงใหมความเขมไปยงจดใดจดหนง เมอแสงไปตกกระทบวตถ จะเกดการสะทอนกลบของแสงผานเลนสรวมแสงมายงโฟโตทรานซสเตอร (ภาครบ) ต าแหนงทแสงตกกระทบนสามารถน ามาค านวณเปนระยะทาง (L) ระหวางตวตรวจจบกบวตถได โดยใชสตรสามเหลยมคลาย ทสรางเปนสมการสามเหลยมคลายไดดงน
ดงนนคา L จะมคาเทากบ
โดยคาทวดระยะไดจากโฟโตทรานซสเตอร จะถกสงไปยงวงจรประมวลผลสญญาณกอนจะ
เปลยนคาเปนระดบแรงดน เนองจากผลลพธทไดจากโมดลโมดลวดระยะทางดวยแสงอนฟราเรดเปนคาแรงดน จะตองน าคาทไดมาค านวณและแสดงผลในรปของระยะทาง เพอความสะดวกจงมผสรางสมการเชงเสนออกมาใหใชงานแบบงาย ดงน
โดยท R หมายถงระยะทางหนวยเปนเซนตเมตร V หมายถงขอมลจากวงจร A/D ความละเอยด 10 บต
โดยท R หมายถงระยะทางหนวยเปนเซนตเมตร
V หมายถงขอมลจากวงจร A/D ความละเอยด 8 บต
10.3.3.2 การตอโมดลวดระยะทางกบบอรด Arduino UNO การน าโมดลโมดลวดระยะทางดวยแสงอนฟราเรด ตอใชงานรวมกบบอรด Arduino UNO ตองเชอมตอสายใหถกตองตามต าแหนง โดยต าแหนงขาจะแตกตางกบตวตรวจจบแบบอน จงตองระวงในการเชอมตอของโมดลวดระยะทางดวยแสงอนฟราเรดกบบอรด Arduino โดยทวไปต าแหนงขาของเซนเซอรจะเรยงล าดบเปนขา 1=Vcc, ขา 2=Data(Vo), ขา 3=GND แตต าแหนงขาของโมดลวดระยะทางดวยแสงอนฟราเรด จะเรยงล าดบเปนขา 1=Data(Vo), ขา 2=GND, ขา 3=Vcc การเชอมตอแสดงดงรปท 10.27
L/A = F/X
L = (FxA)/X
R = {2914/(V+5)} -1
R = {733/(V+5)} -1
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 442
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.27 การตอการตอโมดลวดระยะทางกบบอรด Arduino UNO
10.3.3.3 การเขยนโปรแกรมอานคาโมดลวดระยะทาง การเขยนโปรแกรมอานคาโมดลวดระยะทาง สามารถใชสมการเพอค านวณคาและแสดงคาเปนคาระยะทางได ดงตวอยางโปรแกรม
ตวอยางโปรแกรม 10.9 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23
#include <Wire.h> #include <LiquidCrystal_I2C.h> #define sensor 0 unsigned int sen,L; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.begin(); } void loop() { sen=analogRead(sensor); L=(2914/(sen+5))-1; delay(300); lcd.clear(); lcd.setCursor(0,0); lcd.print("Sensor ="); lcd.setCursor(10,0); lcd.print(sen); lcd.setCursor(0,1); lcd.print("Length ="); lcd.setCursor(10,1); lcd.print(L); }
บรรทดท 8 ก าหนดขาพอรต Analog Pin0 (A0) เปนขาอนพตของโมดล บรรทดท 9 ประกาศตวแปรเกบคาขอมลและคาระยะทาง บรรทดท 16-23 อานคาจากโมดล เกบคาในตวแปร sen และค านวณคาระยะทาง เพอแสดงผลท จอ LCD Module
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 443
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
สรปเนอหาสาระส าคญ
การใชงานไมโครคอนโทรลเลอร Arduino กบอปกรณแสดงผลแบบจอ LCD Module สามารถใชได 2 แบบ คอ แบบขนานและแบบใชโมดล LCD I2C ซงแบบขนานจะใชงายและสะดวกตอการเขยนโปรแกรมควบคมเนองจากมไลบรารส าเรจรป LiquidCrystal.h ตดตงมาพรอมซอฟตแวร Arduino IDE แตจะใชจ านวนขาพอรตมาก จงไมเหมาะกบบอรด Arduino ทมขาพอรตนอย สวนแบบใชโมดล LCD I2C ตองตดตงไลบราร LiquidCrystal_I2C.h เพม แตมขอด คอ ใชขาพอรตเพยง 2 ขา ไดแก ขาสญญาณ SDA (Analog Pin4) และขาสญญาณ SCL (Analog Pin5) ส าหรบการเขยนโปรแกรมควบคมการแสดงผลของจอ LCD Module จะมฟงกชนใหใชงาน บอรด Arduino Uno สามารถรองรบการใชงานอปกรณเซนเซอรทงแบบดจทลและแบบแอนะลอกได เนองจากมขาพอรตทเปน Digital Input/Output จ านวน 14 ขา และขาพอรต Analog Input จ านวน 6 ขา
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 444
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
บรรณานกรม
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 445
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
แบบฝกหดหนวยท 10
ค าชแจง 1. แบบฝกหดมทงหมด 2 ตอน ประกอบดวยตอนท 1 และตอนท 2 (20 คะแนน) 2. แบบฝกหดตอนท 1 เปนค าถามแบบถก-ผด มทงหมด 20 ขอ (10 คะแนน) 3. แบบฝกหดตอนท 2 เปนค าถามแบบเลอกตอบ มทงหมด 10 ขอ (10 คะแนน) ตอนท 1 ค าชแจง ใหนกเรยนท าเครองหมาย หนาขอทถก และกาเครองหมาย หนาขอทผด
1. การตอจอ LCD Module กบบอรด Arduino UNO ม 2 แบบ คอแบบขนาน (parallel) และแบบใชโมดลแปลงสญญาณ LCD I2C
2. การตอจอ LCD Module กบบอรด Arduino UNO แบบ 4 บต ใชขาขอมลเฉพาะ D0-D3 3. ไลบรารส าเรจรปส าหรบเขยนโปรแกรมควบคมจอ LCD Module คอ LiquidCrystal.h
4. ฟงกชน LiquidCrystal lcd( ) ใชก าหนดต าแหนงขาเชอมตอระหวางขาพอรตของบอรด Arduino กบขาใชงานของจอ LCD Module
5. เมอใชจอ LCD Module ชนด 2 บรรทด 16 ตวอกษร ค าสงของฟงกชน begin( ) คอ lcd.begin(2, 16);
6. ฟงกชน clean( ) เปนฟงกชนส าหรบเคลยรการแสดงผลของจอ LCD Module
7. ฟงกชน home( ) เปนฟงกชนส าหรบเลอนเคอรเซอร (Cursor) ไปต าแหนงแรกสด
8. ฟงกชน setCursor( ) เปนฟงกชนก าหนดต าแหนงแสดงขอมลบนจอ LCD Module 9. รปแบบค าสงของฟงกชน setCursor( ) คอ lcd.setCursor(row, col);
10. ฟงกชน print( ) เปนฟงกชนส าหรบสงขอมลแสดงผลทจอ LCD Module 11. การตอจอ LCD Module แบบใชโมดล LCD I2C ใชไลบราร LiquidCrystal_I2C.h
12. ขาพอรตของบอรด Arduino UNO ส าหรบตอกบโมดล LCD I2C คอขา A0 และ A1
13. ไมโครสวตชเปนอปกรณอนพตแบบแอนะลอก 14. ขาใชงานของไมโครสวตช คอ Common, Normal Close และ Normal Open
15. สวตชปรอทสามารถใชตรวจจบความเอยงได
16. สวตชแมเหลกมชอเรยกอกอยางหนงวา รดสวตช (Reed Switch) 17. การตอตวตานทาน Pull-up ภายใน ใชค าสง pinMode(pin, PULLUP_INPUT)
18. โพเทนชโอมเตอรมลกษณะเหมอนตวตานทานปรบคาได แตสามารถหมนไดหลายรอบ
19. การตอโพเทนชโอมเตอรกบบอรด Arduino UNO ตอทขาพอรตใดกได 20. โมดลวดระยะทางเบอร GP2D120 ตองตอกบขา Analog Pin0 - Analog Pin5 เทานน
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 446
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตอนท 2 ค าชแจง ใหนกเรยนท าเครองหมายกากบาท (X) ลงบนค าตอบทถกตองทสด 1. การตอวงจรจอ LCD Module กบบอรด Arduino แบบขนาน 4 บต ขาขอมลใดไมถกใชงาน ก. ขา D0-D3 ข. ขา D2-D4 ค. ขา D4-D5 ง. ขา D4-D7 2. การตอวงจรจอ LCD Module กบบอรด Arduino UNO แบบใชโมดล LCD I2C ใชขาขอมลใด ก. ขา Rx, Tx ข. ขา SDA, SCL ค. ขา Din, Dout ง. ขา Ain, Aout 3. ขอใดเปนไฟลไลบรารของจอ LCD Module ทตอกบบอรด Arduino แบบขนาน ก. ไฟลไลบราร Crystal_oscillator.h ข. ไฟลไลบราร Library_Crystal.h ค. ไฟลไลบราร LiquidCrystal.h ง. ไฟลไลบราร LiquidCrystal_I2C.h 4. ขอใดเขยนค าสงฟงกชนส าหรบก าหนดคณสมบตของจอ LCD Module ชนด 16x2 ไดถกตอง ก. lcd.begin(2, 16); ข. LiquidCrystal lcd(16x2); ค. LiquidCrystal_I2C lcd(0x27, 16, 2); ง. LiquidCrystal_I2C lcd(0x27, 2, 16); 5. ขอใดเปนความหมายของค าสง lcd.setCursor(0, 1); ก. ก าหนดต าแหนงการแสดงผลบรรทดท 0 ต าแหนงท 1 ข. ก าหนดต าแหนงการแสดงผลบรรทดท 1 ต าแหนงท 0 ค. ก าหนดต าแหนงการแสดงผลบรรทดท 1 ต าแหนงท 1 ง. ก าหนดต าแหนงการแสดงผลบรรทดท 2 ต าแหนงท 1
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 447
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
6. ขอใดคอความหมายของอปกรณเซนเซอรแบบดจทล ก. เซนเซอรทใหคาเอาตพตจากการตรวจจบเปนระดบแรงดน 0V และ 5V ข. เซนเซอรทใหคาเอาตพตจากการตรวจจบเปนระดบแรงดนระหวาง 0V ถง 5V ค. เซนเซอรทท าใหอปกรณเอาตพตท างานดวยแรงดน 0V และ 5V ง. เซนเซอรทท าใหอปกรณเอาตพตท างานดวยแรงดนระหวาง 0V ถง 5V 7. อปกรณเซนเซอรแบบสวตชปรอท (Mercury Switch) ใชงานในลกษณะใด ก. ตรวจจบความเอยง ข. ตรวจจบวตถ ค. ตรวจจบการชน ง. ตรวจจบแสง 8. อปกรณตรวจจบแสงของโมดลวดแสง คออปกรณใด ก. อปกรณ LED ข. อปกรณ LDR ค. อปกรณ Thermistor ง. อปกรณ LCR 9. โพเทนชโอมเตอร (Potentiometer) มคณสมบตเหมอนอปกรณใด ก. ตวตานทานปรบคาได ข. ไมโครสวตช ค. ไดโอด ง. เอส ซ อาร (SCR) 10. การตออปกรณเซนเซอรแบบดจทล ตอกบขาพอรตใดของบอรด Arduino UNO ได ก. เฉพาะขา Digital Pin0 และ Digital Pin1 เทานน ข. ขา Analog Pin0 ถง Analog Pin5 ค. ขา Analog Pin7 ถง Analog Pin10 ง. ขา Digital Pin2 ถง Digital Pin12 และขา Analog Pin0 ถง Analog Pin5
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 448
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ใบปฏบตงานท 10 หนวยท 10
ชอวชา ไมโครคอนโทรลเลอร รหสวชา 2105-2105 จ านวน 3 ชวโมง เรอง การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร
ค าชแจง ใหนกเรยนแบงกลมตามความสมครใจ กลมละ 2 คน และท าการฝกตามใบปฏบตงานท 10 เรอง การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร
จดประสงคเชงพฤตกรรม 1. เขยนโปรแกรมควบคมการแสดงผลของจอ LCD Module ได 2. ตอวงจรอปกรณเซนเซอรแบบดจทลกบบอรด Arduino UNO ได 3. เขยนโปรแกรมรบคาลอจกจากอปกรณเซนเซอรแบบดจทลได 4. ตอวงจรอปกรณเซนเซอรแบบแอนะลอกกบบอรด Arduino UNO ได 5. เขยนโปรแกรมรบคาแอนะลอกจากอปกรณเซนเซอรแบบดจทลได
อปกรณประกอบการปฏบตงาน 1. เครองคอมพวเตอรพรอมซอฟตแวร Arduino IDE จ านวน 1 เครอง 2. แผงวงจร i-Duino Robot จ านวน 1 แผง 3. บอรดวงจรไมโครสวตช จ านวน 2 บอรด 4. บอรดวงจรสวตชปรอท จ านวน 1 บอรด 5. บอรดวงจรสวตชแมเหลก จ านวน 1 บอรด 6. บอรดวงจรเซนเซอรอนฟราเรด จ านวน 1 บอรด 7. โพเทนชโอมเตอร จ านวน 1 ตว 8. บอรดโมดลตรวจจบแสงสะทอน จ านวน 1 บอรด 9. โมดลวดระยะทาง GP2D120 จ านวน 1 ตว 10. แหลงจายไฟ DC (DC Adapter 12 Vdc) จ านวน 1 เครอง 11. สาย mini-USB แบบขวตอ Type-A, Type-B mini จ านวน 1 เสน 12. สายตอวงจรแบบ JST (ตวเมยหว-ทาย) จ านวน 5 เสน
ขอควรระวง 1. การตอแหลงจายไฟตรง (DC 12 Vdc) กบแผงวงจร i-Duino Robot ตองตรวจสอบขวใหถกตอง หากผดขวจะท าใหไมโครคอนโทรลเลอรเสยหายได 2. การตอวงจรบนแผงวงจร i-Duino Robot ตองให Power Switch อยในต าแหนง OFF
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 449
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
3. การตอสาย mini-USB กบบอรด Arduino UNO และการตอวงจรตองตอใหแนน หากไมแนนจะท าใหการทดลองผดพลาดได 4. หากมขอสงสยใหสอบถามครผสอน
คณสมบตของแผงวงจร i-Duino Robot แผงวงจร i-Duino Robot เปนแผงวงจรทออกแบบส าหรบใชศกษาและปฏบตการทดลองใชงานไมโครคอนโทรลเลอร Arduino ประกอบดวย 2 สวน คอ
1. แผงวงจร i-Duino Base เปนแผงวงจรทประกอบดวยวงจรดงน 1.1 วงจรควบคมภาคจายไฟ (Power Supply) ประกอบดวยขวตอแรงดนอนพตแบบเทอรมนอลบลอก (Terminal Block), สวตชควบคม Power (ON/OFF), วงจรไดโอดบรดจเรกตไฟร (Bridge Rectifier) ส าหรบปองกนการตอแรงดนอนพตกลบขว และมวงจร LED สเขยว (LED_POWER) แสดงการจายแรงดนภาคจายไฟ 1.2 วงจรสวตชอนพต 2 ตว ไดแก SW1_P.2 และ SW2_P.4 ซงเปนสวตชแบบกดตดปลอยดบ ทตอแบบ Pull-up กบขาพอรต Digital Pin2 และ Digital Pin4 ของบอรด i-Duino UNO 1.3 วงจรจอ LCD Module ชนด 16 ตวอกษร 2 บรรทด เชอมตอกบบอรด i-Duino UNO แบบใชโมดล LCD I2C 1.4 วงจรแสดงผลแบบ LED 1 ดวง (Status LED) สแดง ส าหรบแสดงสถานะการท างานของบอรด i-Duino UNO โดยตอทขาพอรต Digital Pin13 1.5 วงจรก าเนดสญญาณเสยงแบบล าโพงเพยโซ (Piezo) ตอทขาพอรต Digital Pin6 ซงมคณสมบตเปนขาเอาตพตทสงคาเปน PWM ได 1.6 วงจรขบมอเตอรไฟฟากระแสตรง โดยใชไอซเบอร L293D ทสามารถขบมอเตอรไฟฟากระแสตรงได 2 ตว (2 Channel) ทนกระแสสงสด 600 mA/Channel โดยม LED แบบ 2 ส (สแดงและสเขยว) แสดงทศทางการขบมอเตอร 1.7 ขวตอแบบ JST-M (ตวผ) 3 ขา (Vcc-Data-GND) ส าหรบเชอมตออปกรณอนพต เอาตพตและอปกรณเซนเซอร ดวยสายตอวงจรแบบ JST-F/F (ตวเมยหว-ทาย) ประกอบดวยขวตอพอรตอนพตแบบดจทลจ านวน 4 พอรต คอ P.0 (Digital Pin0), P.1 (Digital Pin1), P.3 (Digital Pin3), P.5 (Digital Pin5) และขวตอพอรตอนพตแบบแอนะลอกจ านวน 6 พอรต คอ A0 (Analog Pin0), A1 (Analog Pin1), A2 (Analog Pin2), A3 (Analog Pin3), A4 (Analog Pin4) และ A5 (Analog Pin5) แผงวงจร i-Duino Base แสดงดงรปท 10.28 และวงจรแสดงดงรปท 10.29 2. บอรด i-Duino UNO เปนบอรดทมคณสมบตเหมอนกบบอรด Arduino UNO ตนแบบ ทเชอมตอบอรด i-Duino UNO ลงบนแผงวงจร i-Duino Base ดวยขาแบบ Pinhead แสดงดงรปท 10.30
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 450
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.28 แผงวงจร i-Duino Base
รปท 10.29 วงจร i-Duino Base
วงจรควบคมภาคจายไฟ
วงจรขบมอเตอร
ขวตอ JST-M 3 Pin
วงจรสวตชอนพต
วงจรจอ LCD Module I2C
ขวตอมอเตอรและ LED แสดงทศทาง การหมน
LED Pin13
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 451
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
รปท 10.30 แผงวงจร i-Duino Base ทเชอมตอกบบอรด i-Duino UNO เปนแผงวงจร i-Duino Robot
รปท 10.31 แบบจ าลองแผงวงจร i-Duino Robot
จากรปท 10.30 เมอน าบอรด i-Duino UNO มาเชอมตอลงบนแผงวงจร i-Duino Base จะท าใหสามารถใชงานบอรด i-Duino UNO รวมกบแผงวงจร i-Duino Base ได เรยกวาแผงวงจร i-Duino Robot เนองจากเมอน าแผงวงจรนไปตอรวมกบชดโครงสรางฐานและชดมอเตอร สามารถประยกตเปนชดศกษาและปฏบตการเกยวกบกบเคลอนทของหนยนตได สวนรปท 10.31 เปนแบบจ าลองของวงจร
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 452
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ขนตอนการปฏบตงาน ปฏบตงานท 10.1 การเขยนโปรแกรมควบคมการแสดงผลของจอ LCD Module แบบขนาน
1. เตรยมอปกรณประกอบการปฏบตงานตามรายการทก าหนดให 2. เชอมตอแผงวงจร Arduino UNO กบเครองคอมพวเตอรดวยสาย mini-USB 3. ตอวงจรบอรด Arduino UNO กบบอรดจอ LCD Module แบบขนาน ดงรปท 10.32
รปท 10.32 การตอวงจรบอรด Arduino UNO กบบอรดจอ LCD Module แบบขนาน
4. เปดใชงานซอฟแวร Arduino IDE ตรวจสอบการเชอมตอบอรดและตงคาการใชงานบอรดให ถกตอง
5. สรางไฟสเกตชชอ Lab10_1 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab10_1
โปรแกรม Lab10_1 1 2 3 4 5 6 7 8 9
10 11
#include <LiquidCrystal.h> LiquidCrystal lcd(11,10,9,8,7,6); void setup() { lcd.begin(16,2); } void loop() { lcd.setCursor(0, 0); lcd.print("Test LCD Module"); lcd.setCursor(0, 1); lcd.print("i-Duino UNO"); }
ค าอธบายโปรแกรม : โปรแกรมแสดงผลขอความทจอ LCD Module โดยแสดงขอความ “Test LCD Module” ต าแหนงท 1 บรรทดท 1 และขอความ “i-Duino UNO” ต าแหนงท 1 บรรทดท 2
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 453
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
6. ท าการคอมไพล และอปโหลดไฟลสเกตชลงบอรด Arduino UNO 7. สงเกตการแสดงผลของจอ LCD Module ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 10.1 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมแสดงผลขอความทจอ LCD Module ดงตาราง
10.4 และบนทกค าสงทงหมดลงในตาราง (3 คะแนน)
ตาราง 10.4 โปรแกรมแสดงผลขอความทจอ LCD Module การแสดงผลขอความของจอ LCD Module
ต าแหนงท 1 บรรทดท 1 แสดงชอของนกเรยน ต าแหนงท 1 บรรทดท 2 แสดงนามสกลของนกเรยน
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 454
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 10.2 การเขยนโปรแกรมควบคมการแสดงผลของจอ LCD Module แบบใชโมดล LCD I2C 1. น าบอรด i-Duino UNO เชอมตอกบแผงวงจร i-Duino Base ซงจะไดเปนแผงวงจร i-Duino
Robot 2. ตดตงไฟลไลราร LiquidCrystal_I2C ตามขนตอนของเนอหา 10.1.4.1 การดาวนโหลดและ
ตดตงไฟลไลบราร LiquidCrystal_I2C (หนา 420) 3. สรางไฟลสเกตชชอ Lab10_2 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab10_2
โปรแกรม Lab10_2 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#include <LiquidCrystal_I2C.h> #define SW1 2 #define SW2 4 #define led 13 LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { pinMode(SW1,INPUT); pinMode(SW2,INPUT); pinMode(led,OUTPUT); lcd.begin(); lcd.backlight(); lcd.setCursor(1,0); lcd.print("Press SW1/SW2"); } void loop() { if(digitalRead(SW1)==LOW) { lcd.clear(); lcd.setCursor(0,0); lcd.print("SW1 Press"); lcd.setCursor(0,1); lcd.print("LED ON"); digitalWrite(led,HIGH); } if(digitalRead(SW2)==LOW) { lcd.clear(); lcd.setCursor(0,0); lcd.print("SW2 Press"); lcd.setCursor(9,1); lcd.print("LED OFF"); digitalWrite(led,LOW); } }
ค าอธบายโปรแกรม : โปรแกรมรบคาจากสวตชเพอควบคมการแสดงผลของ LED โดยแสดงขอความค าสงและขอความแสดงผลการตด-ดบของ LED ทจอ LCD Module ทเชอมตอกบบอรด i-Duino UNO แบบ LCD I2C
4. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 5. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร สงเกตการแสดงผลของ LED/P.13 และจอ LCD Module บนแผงวงจร i-Duino Robot
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 455
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 10.2 1. เชอมตอบอรดวงจรไมโครสวตช (SW1, SW2) กบแผงวงจร i-Duino Robot ทขวตอ JST-M
ของขาพอรต P.3 และพอรต P.5 ดวยสายตอวงจรแบบ JST-F/F ดงรปท 10.33
รปท 10.33 การตอวงจรไมโครสวตชกบแผงวงจร i-Duino Robot
2. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมรบคาลอจกจากไมโครสวตช ควบคมการแสดงผลของ LED/P.13 และแสดงผลขอความบนจอ LCD Module ดงตาราง 10.5 บนทกค าสงทงหมดลงในตาราง (3 คะแนน)
ตาราง 10.5 โปรแกรมรบคาลอจกจากไมโครสวตชควบคม LED/P.13 และ จอ LCD Module การท างาน การแสดงผลของ LED/P.13 การแสดงผลของจอ LCD Module
Run โปรแกรม Press SW1/SW2 บรรทดท 1
เมอกด SW1 SW1=ON ต าแหนงท 1 บรรทดท 1 LED = ON ต าแหนงท 1 บรรทดท 2
เมอกด SW2 SW2=ON ต าแหนงท 1 บรรทดท 1
LED = OFF ต าแหนงท 1 บรรทดท 2
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 456
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 10.5 (ตอ)
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 457
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 10.3 การเขยนโปรแกรมใชงานสวตชปรอทและสวตชแมเหลก 1. เชอมตอบอรดวงจรสวตชปรอท (SW1) ทขวตอ JST-M พอรต P.3 และบอรดวงจรสวตช
แมเหลก (SW2) ทขวตอ JST-M พอรต P.5 ของแผงวงจร i-Duino Robot ดวยสายตอวงจรแบบ JST-F/F ดงรปท 10.34
รปท 10.34 การตอบอรดวงจรสวตชปรอทและบอรดวงจรสวตชแมเหลกกบแผงวงจร i-Duino Robot
2. สรางไฟสเกตชชอ Lab10_3 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab10_3
โปรแกรม Lab10_3 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16
#define SW1 3 #define SW2 5 #define led 13 void setup() { pinMode(SW1,INPUT); pinMode(SW2,INPUT); pinMode(led,OUTPUT); } void loop() { if(digitalRead(SW1)==LOW) { digitalWrite(led,HIGH); } if(digitalRead(SW2)==LOW) { digitalWrite(led,LOW); } }
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 458
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
อธบายโปรแกรม : โปรแกรมรบคาลอจกจากเซนเซอรแบบดจทล คอ สวตชปรอท (SW1) และสวตชแมเหลก (SW2) เพอควบคมการแสดงผลของ LED/P.13
4. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 5. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร ทดลองสงงานสวตช ON/OFF และสงเกตการแสดงผลของ LED/P.13 บนแผงวงจร i-Duino Robot ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 10.3 1. เชอมตอบอรดวงจรเซนเซอรอนฟราเรด (SW1) ทขวตอ JST-M พอรต P.3 และบอรดวงจรวด
แสง (SW2) ทขวตอ JST-M พอรต P.5 ของแผงวงจร i-Duino Robot ดงรปท 10.35
รปท 10.35 การตอบอรดวงจรเซนเซอรอนฟราเรด และบอรดวงจรวงจรวดแสงกบแผงวงจร i-Duino Robot
2. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมรบคาลอจกจากเซนเซอรอนฟราเรด และโมดลวดแสง ควบคมการแสดงผลของ LED/P.13 และจอ LCD Module ดงตาราง 10.6 บนทกค าสงทงหมดลงในตาราง (3 คะแนน)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 459
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 10.6 โปรแกรมรบคาลอจกจากเซนเซอรดจทลควบคม LDE และ จอ LCD Module การท างาน การแสดงผลของ LED/P.13 การแสดงผลของจอ LCD Module
Run โปรแกรม Press SW1/SW2 บรรทดท 1 เมอ SW1 ตรวจจบ
พบวตถ
(ตดกระพรบตอเนองดวยคาหนวงเวลา 100 ms) SW1=ON ต าแหนงท 1 บรรทดท 1
LED Blinking ต าแหนงท 1บรรทดท 2 เมอ SW2 ไดรบแสงนอยกวาทก าหนด
(ตดกระพรบตอเนองดวยคาหนวงเวลา 500 ms)
SW2=ON ต าแหนงท 1 บรรทดท 1 LED Blinking ต าแหนงท 1 บรรทดท 2
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 460
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 10.4 การเขยนโปรแกรมใชงานโพเทนชโอมเตอร 1. เชอมตอบอรดวงจรโพเทนชโอมเตอร ทขวตอ JST-M พอรต A0 ของแผงวงจร i-Duino Robot
ดวยสายตอวงจรแบบ JST-F/F ดงรปท 10.36
รปท 10.36 การตอบอรดวงจร Potentiometer กบแผงวงจร i-Duino Robot
2. สรางไฟสเกตชชอ Lab10_4 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab10_4
โปรแกรม Lab10_4 1 2 3 4 5 6 7 8 9
10 11 12 13
#define Analog_Pot 0 #define ledPin 13 unsigned int value=0; void setup() { pinMode(ledPin, OUTPUT); } void loop() { value=analogRead(Analog_Pot); digitalWrite(ledPin, HIGH); delay(value); digitalWrite(ledPin, LOW); delay(value); }
อธบายโปรแกรม : โปรแกรมอานคาสญญาณแอนะลอกจาก Potentiometer ทพอรต Analog Pin0 (A0) เพอแปลงเปนดจทล (ADC) และน าคามาควบคมคาหนวงเวลาการกระพรบของ LED/P.13
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 461
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
4. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 5. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร ทดลองปรบคาความตานทานของ Potentiometer และสงเกตการแสดงผลของ LED/P.13 บนแผงวงจร i-Duino Robot ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 10.4 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมอานคาสญญาณแอนะลอกจาก Potentiometer ทพอรต Analog Pin1 (A1) เพอแปลงเปนดจทล (ADC) และน าคามาแสดงบน Serial Monitor พรอมกบน าคาไปควบคมคาหนวงเวลาการกระพรบของ LED/P.13 บนทกผลและค าสงทงหมดลงในตาราง 10.7 (3 คะแนน)
ตาราง 10.7 โปรแกรมอานคาสญญาณแอนะลอกจาก Potentiometer การท างาน Potentiometer การแสดงผลของ LED การแสดงคาสญญาณดจทลทหนาตาง Serial Monitor
ปรบทต าแหนงต าสด ปรบเพมขน
ปรบทต าแหนงสงสด
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 462
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 10.5 การเขยนโปรแกรมใชงานเซนเซอรวดแสงสะทอน 1. เชอมตอบอรดวงจรเซนเซอรวดแสงสะทอน ทขวตอ JST-M พอรต A0 ของแผงวงจร i-Duino
Robot ดวยสายตอวงจรแบบ JST-F/F ดงรปท 10.36
รปท 10.36 การตอบอรดวงจรเซนเซอรวดแสงสะทอน กบแผงวงจร i-Duino Robot
2. สรางไฟสเกตชชอ Lab10_5 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab10_5
โปรแกรม Lab10_5 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20
#include <LiquidCrystal_I2C.h> #define analog 0 #define led 13 unsigned int value=0; LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { pinMode(led,OUTPUT); lcd.begin(); lcd.backlight(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Value="); } void loop() { value=analogRead(analog); delay(50); lcd.setCursor(7,0); lcd.print(value); if(value>500) { digitalWrite(led,HIGH); } else digitalWrite(led,LOW); }
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 463
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
อธบายโปรแกรม : โปรแกรมอานคาสญญาณแอนะลอกจากวงจรเซนเซอรวดแสงสะทอน ทพอรต Analog Pin0 (A0) เพอแปลงเปนดจทล (ADC) แสดงคาบนจอ LCD Module และน าคามาเปนเงอนไขเพอควบคมการแสดงผลของ LED/P.13
4. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 5. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร ใหทดลองน าบอรดวงจรเซนเซอรวดแสงสะทอนไปอยบนกระดาษทดสอบทมสขาวและสด า ดงรปท 10.37 ใหมระยะหางจากกระดาษทดสอบประมาณ 0.3 mm. -15 mm. สงเกตการแสดงผลของจอ LCD Module และ LED/P.13 บนแผงวงจร i-Duino Robot เมอเซนเซอรตรวจจบพนสขาว และพนสด า ผลการทดลอง :
รปท 10.37 กระดาษพนขาวแถบเสนด าส าหรบทดสอบเซนเซอรวดแสงสะทอน
งานทมอบหมายหลงปฏบตงานท 10.5 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมอานคาสญญาณแอนะลอกจากวงจรเซนเซอรวดแสง
สะทอน 2 ตว ทพอรต Analog Pin0 (A0) และพอรต Analog Pin1 (A1) เพอแปลงเปนดจทล (ADC) และน าคามาแสดงบน Serial Monitor พรอมกบน าคาไปควบคมการแสดงผลของ LED/P.13 ตามเงอนไขทก าหนดในตาราง 10.8 บนทกผลและค าสงทงหมดลงในตาราง (5 คะแนน)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 464
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 10.8 โปรแกรมอานคาสญญาณแอนะลอกจากวงจรเซนเซอรวดแสงสะทอน 2 ตว การท างาน
การแสดงผลของ LED การแสดงคาสญญาณดจทลทหนาตาง
Serial Monitor Sensor_A0 Sensor_A1 พนสด า พนสด า (ดบ)
ต าแหนงท 1 บรรทดท 1 Value0 = (แสดงคา Value0) ต าแหนงท 1 บรรทดท 2 Value1 = (แสดงคา Value1)
พนสด า พนสขาว ตดกระพรบ คาหนวงเวลา 100 ms
พนสขาว พนสด า ตดกระพรบ คาหนวงเวลา 500 ms
พนสขาว พนสขาว (ตด)
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 465
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 10.6 การเขยนโปรแกรมใชงานโมดลวดระยะดวยแสงอนฟราเรด GP2D120 1. เชอมตอบอรดวงจรโมดลวดระยะ ทขวตอ JST-M พอรต A0 ของแผงวงจร i-Duino Robot
ดวยสายตอวงจรแบบ JST-F/F ดงรปท 10.38
รปท 10.38 การตอบอรดวงจรโมดลวดระยะ กบแผงวงจร i-Duino Robot
2. สรางไฟสเกตชชอ Lab10_6 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab10_6
โปรแกรม Lab10_6 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
#include <LiquidCrystal_I2C.h> #define sensor 2 #define led 13 unsigned int value=0,L=0; LiquidCrystal_I2C lcd(0x3F,16,2); void setup() { lcd.begin(); pinMode(led,OUTPUT); } void loop() { value=analogRead(sensor); L=(2914/(value+5))-1; delay(300); lcd.clear(); lcd.setCursor(0,0); lcd.print("Sensor ="); lcd.setCursor(10,0); lcd.print(value);
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 466
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
โปรแกรม Lab10_6 (ตอ) 19 20 21 22 23 24 25 26 27
lcd.setCursor(0,1); lcd.print("Length ="); lcd.setCursor(10,1); lcd.print(L); if(L<5) digitalWrite(led,HIGH); else digitalWrite(led,LOW); }
อธบายโปรแกรม : โปรแกรมอานคาสญญาณแอนะลอกจากวงจรโมดลวดระยะ ทพอรต Analog Pin0 (A0) เพอแปลงเปนดจทล (ADC) แสดงคาบนจอ LCD Module และน าคามาเปนเงอนไขเพอควบคมการแสดงผลของ LED/P.13
4. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 5. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร ทดสอบการตรวจจบวตถทมระยะ หางจากโมดลใหแตกตางกน สงเกตการแสดงผลของจอ LCD Module และ LED/P.13 บนแผงวงจร i-Duino Robot ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 10.6 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมอานคาสญญาณแอนะลอกจากวงจรโมดลวดระยะท
พอรต Analog Pin0 (A0) เพอแปลงเปนดจทล (ADC) และน าคามาแสดงบนจอ LCD Module พรอมกบน าคาไปควบคมการสรางสญญาณเสยงออกล าโพง SP_P.6 ตามเงอนไขทก าหนดในตาราง 10.9 บนทกผลและค าสงทงหมดลงในตาราง (3 คะแนน)
ตาราง 10.8 โปรแกรมอานคาสญญาณแอนะลอกจากวงจรโมดลวดระยะ
การท างาน การสรางสญญาณเสยง การแสดงคาสญญาณดจทล
ทจอ LCD Module
Length>=25 ไมมเสยง ต าแหนงท 1 บรรทดท 1 Sensor = (แสดงคา Value) ต าแหนงท 1 บรรทดท 2 Length = (แสดงคา L)
25>Length>=20 สงเสยง Beep คาหนวงเวลา 500 ms
20>Length>=10 สงเสยง Beep คาหนวงเวลา 100 ms 10>Length>=5 ส งเสยงดงตอเนอง
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 467
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 10.8 (ตอ)
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 468
หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ
สรปผลการปฏบตงาน