61
เอกสารประกอบการเรียน วิชาไมโครคอนโทรลเลอร์ (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. การใช้งานอุปกรณ์เซ็นเซอร์ชนิดแอนะล็อก

หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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. การใชงานอปกรณเซนเซอรชนดแอนะลอก

Page 2: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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. เขยนโปรแกรมรบคาแอนะลอกจากอปกรณเซนเซอรแบบดจทลได

Page 3: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 410

หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ

ผงความคดเนอหาหนวยท 10

Page 4: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 5: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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)

Page 6: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 7: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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( ) กอน

Page 8: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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()

พารามเตอร ไมม

Page 9: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

ปรบความเขม

Page 10: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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)

Page 11: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 ไมไดสรางไฟล ไลบรารส าเรจรปมาไวให โดยตองดาวนโหลดไฟลและน ามาตดตงไวทต าแหนงพนทเกบไฟลไลบราร

Page 12: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 13: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 14: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 มาท างานในไฟลสเกตช

Page 15: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 }

Page 16: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

แผนสปรง

หนาสมผส

Page 17: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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) ส าหรบจ ากดการเคลอนทของระบบกลไกในเครองจกรอตสาหกรรม เมอกลไกเคลอนทไปชนกบไมโครสวตชทตดตงไว จะท าใหเกดคาลอจกและสงงานใหกลไกหยดเคลอนท หรอน าไปประยกตใชงานเปนสวตชสงงานแบบอตโนมต เชน ตดตงในตเสอผาเมอเปดตท าใหหนาสมผสตอวงจรเพอเปดไฟในต เมอปดประตหนาสมผสจะตดวงจรเพอปดไฟในต เปนตน

Page 18: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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);

Page 19: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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)

Page 20: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 21: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 22: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 23: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 24: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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)

Page 25: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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); } }

Page 26: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 27: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 เปนการรบคาเปนดจทล

Page 28: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 ซงเปน

Page 29: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 30: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 31: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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);

Page 32: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 33: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 34: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 35: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 36: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 ขา

Page 37: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 444

หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ

บรรณานกรม

Page 38: หน่วยที่ 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 เทานน

Page 39: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 40: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 41: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 42: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 43: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 44: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 เปนแบบจ าลองของวงจร

Page 45: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 46: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 แสดงนามสกลของนกเรยน

ค าสง :

Page 47: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 48: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 49: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 456

หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ

ตาราง 10.5 (ตอ)

ค าสง :

Page 50: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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); } }

Page 51: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 คะแนน)

Page 52: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

ค าสง :

Page 53: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

Page 54: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

ปรบทต าแหนงต าสด ปรบเพมขน

ปรบทต าแหนงสงสด

ค าสง :

Page 55: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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); }

Page 56: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 คะแนน)

Page 57: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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

พนสขาว พนสขาว (ตด)

ค าสง :

Page 58: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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);

Page 59: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (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 ส งเสยงดงตอเนอง

Page 60: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 467

หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ

ตาราง 10.8 (ตอ)

ค าสง :

Page 61: หน่วยที่ 10 การใช้งาน Arduino กับอุปกรณ์แสดงผลและอุปกรณ์ ...€¦ · หน่วยที่

เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 468

หนวยท 10 การใชงาน Arduino กบอปกรณแสดงผลและอปกรณเซนเซอร เรยบเรยงโดยครบญเกด สนธพนธ

สรปผลการปฏบตงาน