เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 89
แบบทดสอบหลังเรยี น
หนว่ ยที่ 4 การเชื่อมตอ่ ไมโครคอนโทรลเลอร์กบั อปุ กรณอ์ นิ พตุ
คาสงั่ จงเลือกคาตอบท่ีถกู ที่สดุ เพียงข้อเดียว
1. สวติ ชเ์ ป็นอปุ กรณ์ทำหน้ำท?่ี
ก. ตดั กระแสไฟฟ้ำในวงจร
ข. ตอ่ กระแสไฟฟ้ำในวงจร
ค. ตดั หรอื ต่อกระแสไฟฟ้ำในวงจร
ง. เปิดหลอดไฟ LED
จ. จ่ำยกระแสไฟในวงจร
2. ในงำนควบคมุ ดว้ ยไมโครคอนโทรลเลอรน์ ิยมใชส้ วติ ชท์ เ่ี รยี กว่ำ?
ก. Micro Switch
ข. Nano Switch
ค. Limit Switch
ง. On Switch
จ. Off Switch
3. กำรทำงำนของวงจรสวติ ชใ์ นสภำวะปกตหิ รอื ขณะทไ่ี มม่ กี ำรกดสวติ ชจ์ ะไดเ้ อำ้ ทพ์ ตุ เป็น?
ก. N/A
ข. 12 Volt
ค. ลอจกิ “0”
ง. ลอจกิ “1”
จ. NC
4. สำหรบั Arduino ลอจกิ “1” มรี ะดบั แรงดนั ไฟ?
ก. แรงดนั ไฟ 0 โวลท์
ข. แรงดนั ไฟ 1 โวลท์
ค. แรงดนั ไฟ 3.3 โวลท์
ง. แรงดนั ไฟ 5 โวลท์
จ. แรงดนั ไฟ 3.5 โวลท์
หน่วยที่ 4 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 90
5. ตงั้ แตเ่ รม่ิ ตน้ ของขำพอรต์ ของ Arduino Uno จะถกู กำหนดใหเ้ ป็น?
ก. OUTPUT
ข. INPUT
ค. HIGH
ง. LOW
จ. BEGIN
6. สำหรบั ขำอนิ พตุ เมอ่ื ไมม่ อี นิ พตุ ป้อนจะตอ้ งกำหนดคำ่ แรงดนั ใหแ้ น่นอน ทำไดโ้ ดย?
ก. Pull-up Capacitor
ข. Pull-up Resistor
ค. Pull-up Inductor
ง. Pull-up Diode
จ. Pull-up exercise
7. คำ่ ตวั ตำ้ นทำนทใ่ี ชส้ ำหรบั พลดู ำวน์ (Pull-down)?
ก. 10kΩ
ข. 20kΩ
ค. 30kΩ
ง. 40kΩ
จ. 50kΩ
8. กำหนดพอรต์ เป็นอนิ พตุ ดว้ ยฟังกช์ นั่ คอื ?
ก. digitalRead()
ข. digitalWrite()
ค. pinMode()
ง. pullMode()
จ. analogRead()
9. กำรอำ่ นคำ่ สวติ ชอ์ นิ พตุ ไดจ้ ำกฟังกช์ นั่ ?
ก. digitalRead()
ข. digitalWrite()
ค. pinMode()
ง. pullMode()
จ. analogRead()
หน่วยท่ี 4 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 91
10. กำรแกป้ ัญหำทร่ี ะดบั สญั ญำณเกดิ กำรสนั่ น้เี รยี กวำ่ ?
ก. Debounce
ข. Detective
ค. Deploy
ง. Detox
จ. Displacement excitation
หน่วยท่ี 4 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 92
แบบฝึกหดั
หน่วยท่ี 4 การเช่อื มตอ่ ไมโครคอนโทรลเลอร์กับอุปกรณอ์ ินพตุ
ตอนท่ี 1 ใหผ้ เู้ รยี นกำเครอ่ื งหมำยถูก ( ) หน้ำขอ้ ทค่ี ดิ ว่ำถูก และกำเครอ่ื งหมำยผดิ ( )
ในขอ้ ทค่ี ดิ ว่ำผดิ
กำรเขยี นโปรแกรมรบั คำ่ จำกสวติ ชจ์ ำเป็นตอ้ งลงไลบรำรเ่ี พมิ่ Switch.h
หลกั กำรแกไ้ ขสญั ญำณรบกวนแบบบนคอื หน่วงเวลำกำรเกดิ ขน้ึ ของสญั ญำณ
พลั สเ์ ลก็ น้อยเพอ่ื ใหว้ งจรไมส่ นใจสญั ญำณทเ่ี กดิ ขน้ึ ในชว่ งเรม่ิ ตน้ กดสวติ ช์
ระยะเวลำทส่ี ญั ญำณเกดิ กำรเบำวซน์ ้มี รี ะยะเวลำหลำยสบิ วนิ ำที
กำรแก้ปัญหำ Debounce โดยใชอ้ ุปกรณ์อเิ ลก็ ทรอนิกสพ์ น้ื ฐำน อยำ่ งตวั ตำ้ นทำน
และตวั เกบ็ ประจุ โดยต่อกนั ในลกั ษณะวงจร RC อนิ ตเิ กรเตอร์
LOW เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื ขำสญั ญำณเป็นลอจกิ “0”
CHANGE เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื มกี ำรเปลย่ี นแปลงลอจกิ
RISING เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื มกี ำรเปลย่ี นลอจกิ “1” เป็น “0”
FALLING เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื เปลย่ี นลอจกิ “1” เป็น “0”
ขำอนิ พตุ รบั สญั ญำณอนิ เตอรร์ ปั ตจ์ ำกภำยนอก 2 ขำคอื D2 และ D3
detachInterrupt(interrupt) คอื ฟังกช์ นั่ เรยี กกำรอนิ เตอรร์ ปั ต์
หน่วยที่ 4 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 93
ตอนที่ 2
คาสงั่ ใหผ้ เู้ รยี นทดลองกำรอ่ำนค่ำขอ้ มลู จำกสวติ ชด์ ว้ ยบอรด์ Arduino Uno R3
โดยใชเ้ วลำ 120 นำที
จดุ ประสงคเ์ ชิงพฤติกรรม
1. สำมำรถอ่ำนคำ่ สวติ ช์ ไดถ้ ูกตอ้ ง
2. สำมำรถแกป้ ัญหำในกำรทำงำนของบอรด์ Arduino Uno R3 ได้
3. สำมำรถต่อใชง้ ำนและอพั โหลดโปรแกรมใหก้ บั บอรด์ Arduino Uno R3 ได้
อปุ กรณ์การทดลอง 1 โปรแกรม
1 เสน้
1. โปรแกรม Arduino IDE 1 บอรด์
2. สำยโหลด USB Arduino Uno R3 1 ชดุ
3. บอรด์ Arduino Uno R3 1 เครอ่ื ง
4. สำยต่อวงจร 1 ตวั
5. เครอ่ื งคอมพวิ เตอร์ 10 เสน้
6. สวติ ช์
7. Hook-up Wires
การทดลองท่ี 4.1 การสวิตชค์ วบคมุ หลอด LED แบบกดติด-กดดบั
ขนั้ ตอนการทดลอง
1. เปิดโปรแกรม Arduino IDE
2. ต่อวงจรดงั รปู ท่ี 4.9
3. เขยี นโปรแกรมและอพั โหลดโปรแกรม
รปู ท่ี 4.9 กำรต่อวงจรสวติ ชส์ ำหรบั ควบคุมหลอด LED แบบกดตดิ -กดดบั
หน่วยท่ี 4 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 94
Code
รปู ที่ 4.10 โปรแกรมสำหรบั กำรทดลองท่ี 4.1
ประเมินผลการทดลอง
1. สำมำรถเขยี นโปรแกรมและต่อวงจรไดถ้ ูกตอ้ ง 10 คะแนน
2. สำมำรถทดสอบและอธบิ ำยกำรทำงำนได้ 10 คะแนน
ถูกตอ้ ง
………………………คะแนน
รวมคะแนนภาคปฏิบตั ิ
การทดลองที่ 4.2 การควบคมุ ความเรว็ ในการกระพริบของหลอด LED ด้วยฟังกช์ นั่
attachInterrupt()
ขนั้ ตอนการทดลอง
1. เปิดโปรแกรม Arduino IDE
2. ต่อวงจรดงั รปู ท่ี 4.11
3. เขยี นโปรแกรมและอพั โหลดโปรแกรม
รปู ท่ี 4.11 กำรต่อวงจรสวติ ชส์ ำหรบั ควบคุมควำมเรว็ ในกำรกระพรบิ ของหลอด LED
หน่วยท่ี 4 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 95
Code
รปู ท่ี 4.12 โปรแกรมสำหรบั กำรทดลองท่ี 4.2
ประเมินผลการทดลอง 10 คะแนน
10 คะแนน
1. สำมำรถเขยี นโปรแกรมและต่อวงจรได้ …………………… คะแนน
ถกู ตอ้ ง
2. สำมำรถทดสอบและอธบิ ำยกำรทำงำนได้
ถูกตอ้ ง
รวมคะแนนภาคปฏิบตั ิ
หน่วยท่ี 4 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 96
เฉลยแบบทดสอบก่อนเรียน
หน่วยท่ี 4 การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
1. ค 2. ก 3. ง 4. ง 5. ข
6. ข 7. ก 8. ค 9. ก 10. ก
เฉลยแบบทดสอบหลงั เรียน
หน่วยท่ี 4 การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
1. ง 2. ค 3. ก 4. ข 5. ค
6. ก 7. ง 8. ข 9. ก 10. ค
เฉลยแบบฝึ กหดั
หน่วยท่ี 4 การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
ตอนที่ 1 ใหผ้ เู้ รยี นกำเครอ่ื งหมำยถกู ( ) หน้ำขอ้ ทค่ี ดิ ว่ำถกู และกำเครอ่ื งหมำยผดิ ( )
ในขอ้ ทค่ี ดิ ว่ำผดิ
กำรเขยี นโปรแกรมรบั ค่ำจำกสวติ ชจ์ ำเป็นตอ้ งลงไลบรำรเ่ี พมิ่ Switch.h
หลกั กำรแกไ้ ขสญั ญำณรบกวนแบบบนคอื หน่วงเวลำกำรเกดิ ขน้ึ ของสญั ญำณ
พลั ส์
เลก็ น้อย เพอ่ื ใหว้ งจรไมส่ นใจสญั ญำณทเ่ี กดิ ขน้ึ ในชว่ งเรมิ่ ตน้ กดสวติ ช์
ระยะเวลำทส่ี ญั ญำณเกดิ กำรเบำวซน์ ้มี รี ะยะเวลำหลำยสบิ วนิ ำที
กำรแกป้ ัญหำ Debounce โดยใชอ้ ุปกรณ์อเิ ลก็ ทรอนกิ สพ์ น้ื ฐำน อยำ่ งตวั ตำ้ นทำน
และ
ตวั เกบ็ ประจุ โดยต่อกนั ในลกั ษณะวงจร RC อนิ ตเิ กรเตอร์
LOW เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื ขำสญั ญำณเป็นลอจกิ “0”
CHANGE เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื มกี ำรเปลย่ี นแปลงลอจกิ
RISING เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื มกี ำรเปลย่ี นลอจกิ “1” เป็น “0”
FALLING เกดิ อนิ เตอรร์ ปั ตเ์ มอ่ื เปลย่ี นลอจกิ “1” เป็น “0”
ขำอนิ พตุ รบั สญั ญำณอนิ เตอรร์ ปั ตจ์ ำกภำยนอก 2 ขำคอื D2 และ D3
detachInterrupt(interrupt) คอื ฟังกช์ นั่ เรยี กกำรอนิ เตอรร์ ปั ต์
หน่วยที่ 4 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์อินพตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 97
หนว่ ยท่ี 5
การอา่ นคา่ แอนนาลอ๊ ก
สาระสาคญั
การพฒั นาโปรแกรมภาษา C/C++ ด้วย Arduino IDE สาหรบั บอร์ด Arduino ภายใต้
การเรยี กใชง้ านไลบรารหี ลกั ของทาง Arduino จดั เตรยี มใหผ้ นวกเขา้ กบั ไฟลไ์ ลบรารที พ่ี ฒั นาขน้ึ
มาเป็นเฉพาะสาหรบั บอรด์ Arduino เพ่อื ช่วยลดความซบั ซอ้ นในการเขยี นโปรแกรมควบคุมลง
Arduino IDE ได้บรรจุไฟล์ไลบรารีท่ีช่วยให้การเขียนโปรแกรมภาษา C/C++ เพ่ือให้ใช้งาน
ไมโครคอนโทรลเลอร์ได้ง่ายข้ึน รวม ถึงผู้เริ่ม ต้น ให ม่ก็สาม ารถ เรีย น รู้เพ่ือ ใช้งาน
ไมโครคอนโทรลเลอรไ์ ด้ โดยไมจ่ าเป็นตอ้ งศกึ ษาเพ่อื ลงลกึ ในรายละเอยี ดของสถาปัตยกรรม
สาระการเรยี นรู้
5.1 ไลบรารขี อง Arduino
5.2 ไลบรารเี กย่ี วกบั เวลา
5.3 การอ่านคา่ แอนนาลอ๊ ก
จดุ ประสงคเ์ ชงิ พฤติกรรม
เพ่อื ใหน้ กั เรยี น
1. สามารถใชง้ านไลบรารข่ี อง Arduino ไดถ้ กู ตอ้ ง
2. สามารถใชง้ านไลบรารเี กย่ี วกบั เวลาไดถ้ กู ตอ้ ง
3. สามารถใชง้ านไลบรารเี กย่ี วกบั การอ่านค่าแอนนาล๊อกได้ถูกตอ้ ง
หน่วยท่ี 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 98
แบบทดสอบก่อนเรยี น
หน่วยท่ี 5 การอา่ นคา่ แอนนาลอ๊ ก
คาสงั่ จงเลือกคาตอบที่ถกู ท่ีสดุ เพียงข้อเดียว
1. หน่วยความจาขอ้ มลู ออี พี รอม ภายในตวั ไมโครคอนโทรลเลอรเ์ มอ่ื ตอ้ งการใชง้ านตอ้ งผนวก
ไฟลไ์ ลบรารี ดว้ ยคาสงั่ ?
ก. #include<EEPROM.d>
ข. #include<EEPROM.hpp>
ค. #include<EEPROM.h>
ง. #include<EEPROM.c>
จ. #include<EEPROM.o>
2. ตอ้ งใชค้ าสงั่ ใดในการผนวกไฟลไ์ ลบรารขี อง servo?
ก. #include<servo.d>
ข. #include<servo.hpp>
ค. #include<servo.h>
ง. #include<servo.c>
จ. #include<EEPROM.o>
3. Arduino บรรจฟุ ังกช์ นั่ Wire สาหรบั ตดิ ต่อกบั อุปกรณ์ผา่ นบสั ?
ก. URAT
ข. I2C
ค. SPI
ง. USB
จ. GSM
4. Arduino UNO บรรจฟุ ังกช์ นั่ และคาสงั่ สาหรบั ตดิ ต่อกบั SPI โดยตอ้ งใชข้ าพอรต์ ?
ก. 10 (MISO), 11 (MOSI) และ 12 (SS)
ข. 11 (MISO), 10 (MOSI) และ 12 (SS)
ค. 12 (MISO), 11 (MOSI) และ 10 (SS)
ง. 9 (MISO), 8 (MOSI) และ 7 (SS)
จ. 11 (MISO), 12 (MOSI) และ 13 (SS)
หน่วยท่ี 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 99
5. ไลบรารี Wire ตดิ ต่อกบั อปกุ รณ์ผ่านบสั I2C ขาพอรต์ ?
ก. A4 (SDA) และ A5 (SCL)
ข. A1 (SDA) และ A2 (SCL)
ค. A2 (SDA) และ A3 (SCL)
ง. A3 (SDA) และ A4 (SCL)
จ. A4 (SDA) และ A3 (SCL)
6. คาสงั่ ใดเป็นไลบรารเี กย่ี วกบั เวลา?
ก. delay
ข. delays
ค. us_delay
ง. sleep_us
จ. void delay_us
7. จานวนขาแอนนาล๊อกบอรด์ Arduino Uno R3?
ก. 4
ข. 5
ค. 6
ง. 8
จ. 10
8. ยา่ นคา่ แรงดนั ทพ่ี อรต์ แอนนาล๊อก?
ก. 0 ถงึ +1v
ข. 0 ถงึ +3.3v
ค. 0 ถงึ +5v
ง. 0 ถงึ +12v
จ. 0 ถงึ +14v
9. คา่ ความละเอยี ดในการแปลงสญั ญาณแอนนาล๊อกเป็นดจิ ติ อลภายไมโครคอนโทรลเลอร์?
ก. 5 บติ
ข. 8 บติ
ค. 10 บติ
ง. 16 บติ
จ. 18 บติ
หน่วยที่ 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 100
10. คา่ ขอ้ มลู แอนนาล๊อกทถ่ี ูกแปลงเป็นดจิ ติ อลจะอยรู่ ะหวา่ ง?
ก. 0 ถงึ 128
ข. 0 ถงึ 256
ค. 0 ถงึ 512
ง. 0 ถงึ 1,023
จ. 0 ถงึ 2,046
หน่วยท่ี 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 101
เน่ืองจากค่าท่ีอ่านจากการกดสวิตช์เข้ามาทางพอร์ตแอนาลอกมีโอกาสท่ี ตัวเลข
จะแกว่งได้ ดงั นนั้ หากเขยี นโปรแกรมโดยวธิ กี ารตรวจสอบการเท่ากนั ของค่าทก่ี าหนดมโี อกาส
จะคลาดเคล่อื นได้ ทางแก้ปัญหาการแกว่งของค่าท าได้โดยเพมิ่ ช่วงในการตรวจสอบแทนท่ี
จะตรวจสอบเพยี งคา่ เดยี ว การทดลองน้เี ป็นการทดลองการกดสวติ ชท์ ร่ี บั เขา้ มาทางพอรต์ แอนา
ลอกและมกี ารเพม่ิ ชว่ งในการตรวจสอบ เป็น ±30 ค่าและแสดงผลเป็นขอ้ ความว่าสวติ ชใ์ ดถกู กด
5.1 ไลบรารีของ Arduino
ไฟล์ไลบรารที ่พี ัฒนาข้นึ มาเป็นเฉพาะสาหรบั บอรด์ Arduino ทงั้ น้ีเพ่ือช่วยลดความ
ซบั ซ้อนในการเขยี นโปรแกรมควบคุมลง Arduino IDE ไดบ้ รรจุไฟล์ไลบรารที ช่ี ่วยใหก้ ารเขยี น
โปรแกรมภาษา C/C++ เพ่อื ใชง้ านไมโครคอนโทรลเลอรไ์ ดง้ า่ ยขน้ึ โดยไฟลไ์ ลบรารที ส่ี าคญั และ
ใชง้ านกบั บอรด์ Arduino ประกอบดว้ ย
5.1.1 EEPROM
บรรจไุ ลบรารแี ละคาสงั่ สาหรบั ตดิ ต่อกบั หน่วยความจาข้อมลู ออี พี รอม ภายในตวั
ไมโครคอนโทรลเลอร์ เมอ่ื ตอ้ งการใชง้ านตอ้ งผนวกไฟลไ์ ลบรารไี วใ้ นตอนตน้ ของโปรแกรม
รปู แบบคาสงั่ #include <EEPROM.h>
5.1.2 LiquidCrystal
บรรจุไลบรารีและคาสัง่ สาหรบั ติดต่อกับโมดูล LCD แบบอักขระเพ่ือแสดงผล
ขอ้ ความและตวั เลข รองรบั ทงั้ การติดต่อแบบ 4 บติ และ 8 บติ ใชง้ านได้กบั โมดูล LCD 8, 16 และ
20 ตวั อกั ษร 1, 2 และ 4 บรรทดั เม่อื ต้องการใช้งานต้องผนวกไฟล์ไลบรารไี ว้ในตอนต้นของ
โปรแกรม
รปู แบบคาสงั่ #include <LiquidCrystal.h>
5.1.3 servo
บรรจุไลบรารแี ละคาสงั่ สาหรบั เรยี กใช้งานการขบั เซอร์โวมอเตอร์ ต้องทางาน
รว่ มกบั เซอรโ์ วมอเตอรแ์ ละต้องใชไ้ ฟเลย้ี งแยกสาหรบั เซอรโ์ วมอเตอร์ เม่อื ต้องการใช้งานต้อง
ผนวกไฟลไ์ ลบรารไี วใ้ นตอนตน้ ของโปรแกรม
รปู แบบคาสงั่ #include <servo.h>
5.1.4 SoftwareSerial
บรรจไุ ลบรารแี ละคาสงั่ สาหรบั ใช้งานขาพอรต์ ของ Arduino ในการส่อื สารขอ้ มูล
อนุ กรมไลบรารีจะถูกนามาใช้งานเม่ือขาเช่ือมต่อพอร์ตอนุ กรมหลัก (RxD และ TxD)
หน่วยท่ี 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 102
ของ Arduino ถูกใช้งานไปแล้ว และมคี วามต้องการติดต่ออุปกรณ์ท่ตี ้องใช้การส่อื สารข้อมูล
อนุกรม การใชง้ านไลบรารจี ะช่วยให้ผู้ใชง้ านสามารถใช้ ขาพอรต์ ของ Arduino ขาอ่นื ท่วี ่างมา
ทาหน้าท่เี ป็นขาพอรต์ สาหรบั ส่อื สารขอ้ มูลอนุกรม เม่อื ต้องการใช้งานต้องผนวกไฟล์ไลบรารี
ไวใ้ นตอนตน้ ของโปรแกรม
รปู แบบคาสงั่ #include <SoftwareSerial.h>
5.1.5 SPI
บรรจุไลบรารแี ละคาสงั่ สาหรบั ตดิ ต่อกบั อุปกรณ์ผ่านบสั SPI (Serial Peripheral
Interface) โดยต้องใช้ขาพอร์ต 12 (MISO), 11 (MOSI) และ 10 (SS) ในการติดต่ออุปกรณ์ท่ี
ทางานผ่านบสั แบบ SPI ประกอบ ด้วยไอซีหน่วยความจาอีอีพรอมในอนุกรม 93Cxxx, ไอซี
แปลงสญั ญาณแอนะล็อกเป็นดิจติ อล, ไอซีแปลง สัญญาณดิจติ อลเป็นแอนะล็อก, ไอซีวดั
อุณหภูม,ิ ไอซขี บั LED ตวั เลข 7 ส่วน เป็นต้น เม่อื ต้องการใชง้ านต้องผนวกไฟลไ์ ลบรารไี วใ้ น
ตอนตน้ ของโปรแกรม
รปู แบบคาสงั่ #include <SPI.h>
5.1.6 Wire
บรรจุไลบรารแี ละคาสงั่ สาหรบั ตดิ ต่อกบั อปุกรณ์ผ่านบสั I2C โดยตอ้ งใชข้ าพอรต์
A4 (SDA) และ A5 (SCL) ในการติดต่ออุปกรณ์ ท่ีทางานผ่านบัส I2C มีมากมายเช่นไอซี
หน่วยความจาออี พี รอมในอนุกรม 24Cxxx, ไอซแี ปลงสญั ญาณแอนนาล๊อกเป็นดจิ ติ อล, ไอซี
แปลงสญั ญาณดจิ ติ อลเป็นแอนนาล๊อก ,ไอซวี ดั อุณภมู ิ , ไอซขี ยายพอรต์ อนิ พุตเอาต์พตุ, โมดูล
วทิ ยุ FM, ตวั ตรวจจบั ความชน้ื , ตวั ตรวจจบั ความดนั บรรยากาศ, ตวั ตวั ตรวจจบั ความเรง่ แบบ 3
แกน เป็นตน้ เมอ่ื ตอ้ งการใชง้ านตอ้ งผนวกไฟลไ์ ลบรารไี วใ้ นตอนตน้ ของโปรแกรม
รปู แบบคาสงั่ #include <Wire.h>
ทงั้ น้ีสาหรบั ฮารด์ แวร์ Arduino Leonardo ซ่งึ บอรด์ Arduino ก็เป็นฮารด์ แวรแ์ บบหน่ึง
ท่ีเข้ากันได้มไี ลบรารพี ิเศษท่ีเพิ่มเติมข้นึ มานัน่ คือ ไลบรารี USB ในการใช้งานไลบรารขี อง
ไลบรารี USB น้ีไม่ต้องทาการผนวกไลบรารเี พ่ิมเติมแต่อย่างใด ผู้พฒั นาโปรแกรมสามารถ
เรยี กใชง้ านไลบรารไี ดเ้ ลย ไลบรารี USB มี 2 ไลบรารยี อ่ ยคอื
Mouse บรรจุไลบรารีและคาสัง่ เพ่ือให้ฮาร์ดแวร์ Arduino Leonardo หรือบอร์ด
Arduino ทางานเป็นเมาส์ USB
Keyboard บรรจุไลบรารแี ละคาสัง่ เพ่ือให้ฮาร์ดแวร์ Arduino Leonardo หรือบอร์ด
Arduino ทางานเป็ นคีย์บอร์ด USB นอกไปจากไลบรารีมาตรฐานและไลบรารี USB
หน่วยท่ี 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 103
ท่ที าง Arduino เตรยี มมาให้พร้อมใช้งานการเรยี กใช้งานชุดคาสงั่ ย่อยต่าง ๆ เพ่อื การพฒั นา
โปรแกรมควบคุมสาหรบั บอรด์ Arduino ผู้พฒั นาต้องผนวกไฟล์ไลบรารหี ลกั Arduino.h โดย
#include <Arduino.h> เพ่อื ประกาศใหต้ วั แปลภาษาหรอื คอมไพเลอรร์ จู้ กั ชุดคาสงั่ ยอ่ ยต่าง ๆ ท่ี
กาลงั จะถูกเรยี กใช้งานจากไฟล์ไลบรารี Arduino.h ไลบรารยี ่อย ของไฟล์ไลบรารี Arduino.h
ประกอบดว้ ย
glcd บรรจุไลบรารแี ละคาสงั่ สาหรับแสดงผลข้อความ, ตัวเลข และสร้างภาพกราฟิกสี
ท่ีจอแสดงผลแบบกราฟิ ก LCD สีของแผงวงจร GLCD-XT ไลบรารีน้ีมีการกาหนดขาใช้งานท่ี
เฉพาะเจาะจง
sleep บรรจไุ ลบรารแี ละคาสงั่ สาหรบั การหน่วงเวลา
in out บรรจไุ ลบรารแี ละคาสงั่ สาหรบั อ่านค่าอนิ พุตดจิ ติ อลและส่งค่าออกทางขาพอร์ต
เอาตพ์ ตุ ดจิ ติ อล
analog บรรจไุ ลบรารแี ละคาสงั่ สาหรบั อ่านค่าจากอนิ พตุ แอนะลอ็ กทต่ี ่อกบั ตวั ตรวจจบั
sound บรรจุไลบรารแี ละคาสงั่ สาหรบั สรา้ งเสียงเพ่ือขบั ออกลาโพง ฟังก์ชนั่ น้ีมกี าร
กาหนดขาใชง้ านทเ่ี ฉพาะเจาะจง
motor บรรจุไลบรารแี ละคาสงั่ สาหรบั ขบั มอเตอร์ไฟตรง 2 ช่อง ต้องทางานร่วมกับ
วงจรขบั มอเตอรท์ ่ใี ช้ไอซี TB6612 และต้องใช้ไฟเล้ยี งแยกสาหรบั มอเตอรไ์ ฟตรง ไลบรารนี ้ีมี
การกาหนดขาใชง้ านทเ่ี ฉพาะเจาะจง
servoMotor บรรจไุ ลบรารแี ละคาสงั่ สาหรบั ขบั เซอรโ์ วมอเตอรต์ ้องทางานรว่ มกบั เซอร์
โวมอเตอรแ์ ละต้องใช้ไฟเล้ยี งแยกสาหรบั เซอรโ์ วมอเตอร์ ไลบรารน้ีมกี ารกาหนดขาใช้งานท่ี
เฉพาะเจาะจง
serial บรรจไุ ลบรารแี ละคาสงั่ สาหรบั สอ่ื สารขอ้ มลู อนุกรมผ่านทางพอรต์ USB และผา่ น
ทางขาพอรต์ TxD และ RxD ของบอรด์ Arduino
IRremote บรรจุไลบรารแี ละคาสงั่ สาหรบั อ่านรหสั ของปุ่มรโี มตคอนโทรลอนิ ฟราเรด ท่ี
ใชใ้ นเครอ่ื งใชไ้ ฟฟ้า เมอ่ื ตอ้ งการใชง้ านไลบรารนี ้ี ต้องผนวกไฟลไ์ วใ้ นตอนต้นของโปรแกรมหลงั
คาสงั่ #include <Arduino.h> ดว้ ยคาสงั่ #include <IRremote.h> ในการเรยี นรเู้ พ่อื ใชง้ านบอรด์
Arduino จะใชไ้ ฟลไ์ ลบรารที งั้ แบบมาตรฐาน และไฟล์ Arduino.h รว่ มกนั เพอ่ื ช่วยใหก้ ารพฒั นา
โปรแกรมสาหรบั การใช้งานมปี ระสทิ ธภิ าพสูงสุด และสามารถทาความเขา้ ใจได้ง่าย ทงั้ น้ีเพ่อื
ประโยชน์ในการต่อยอดการเรยี นรขู้ องผใู้ ชง้ านในวงกวา้ ง
หน่วยที่ 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 104
5.2 ไลบรารีเกี่ยวกบั เวลา
5.2.1 sleep และ delay เป็นไลบรารหี น่วงเวลาโดยประมาณภายในโปรแกรมในหน่วย
มลิ ลวิ นิ าที
รปู แบบ
void delay(unsigned int ms)
void sleep(unsigned int ms)
พารามิเตอร์
ms - กาหนดค่าเวลาทต่ี อ้ งการหน่วงในหน่วยมลิ ลวิ นิ าทมี คี ่า 0 ถงึ 65,535
ตวั อย่างการใช้งาน
delay(1000); // หน่วงเวลาประมาณ 1 วนิ าที
sleep(50); // หน่วงเวลาประมาณ 60 มลิ ลวิ นิ าที
5.2.2 delay us เป็นไลบรารหี น่วงเวลาโดยประมาณภายในโปรแกรมในหน่วย
ไมโครวนิ าที
รปู แบบ
void delay_us(unsigned int us)
พารามิเตอร์
us - กาหนดค่าเวลาทต่ี อ้ งการหน่วงในหน่วยไมโครวนิ าทมี คี า่ 0 ถงึ 65,535
ตวั อย่างการใช้งาน
delay_us(500); // หน่วงเวลาประมาณ 500 ไมโครวนิ าที
5.3 การอา่ นคา่ แอนนาล๊อก
เป็ นไลบรารีอ่ านค่ าข้อมู ลแอนนาล๊ อก และแปลงเป็ นสัญ ญ าณ ดิจิตอลขอ ง
ไมโครคอนโทรลเลอร์ ทพ่ี อรต์ A0 ถงึ A6 (สาหรบั Arduino Uno R3) ซง่ึ ใชใ้ นการเชอ่ื มต่อกบั ตวั
ตรวจจบั ทใ่ี หผ้ ลการทางานในรปู แรงดนั ไฟฟ้าในยา่ น 0 ถงึ +5V
รปู แบบ
unsigned int analog(unsigned char channel)
หน่วยที่ 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 105
พารามิเตอร์
channel - กาหนดช่องอนิ พุตแอนนาล๊อกท่ตี ้องการมคี ่า 0 ถงึ 6 ซง่ึ ตรงกบั ขาพอรต์ A0 ถงึ
A6
การคืนค่า
เป็นขอ้ มูลทไ่ี ดจ้ ากการแปลงสญั ญาณของโมดูลแปลงสญั ญาณแอนนาล๊อกเป็นดจิ ติ อล
ภายในไมโครคอนโทรลเลอร์ จากช่องอนิ พุตทก่ี าหนด โดยขอ้ มลู มคี วามละเอยี ด 10 บติ ดงั นัน้
คา่ จะอยรู่ ะหวา่ ง 0 ถงึ 1,023
ตวั อยา่ งโปรแกรมเรยี กอ่านคา่ แอนนาล๊อกทข่ี า A0 จากนนั้ สง่ ค่าออกทาง Serial Plotter
(Ctrl+Shift+L) เปิ ดโปรแกรมตัวอย่างโดยเลือกจากเมนู File > Examples > 03.Analog >
AnalogInOutSerial
รปู ท่ี 5.1 หน้าต่างโปรแกรมตวั อยา่ งการอ่านค่าแอนนาลอ๊ ก
หน่วยที่ 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 106
แบบทดสอบหลังเรยี น
หนว่ ยที่ 5 การอา่ นคา่ แอนนาล๊อก
คาสงั่ จงเลือกคาตอบที่ถกู ที่สดุ เพียงข้อเดียว
1. หน่วยความจาขอ้ มลู ออี พี รอม ภายในตวั ไมโครคอนโทรลเลอรเ์ มอ่ื ตอ้ งการใชง้ านตอ้ งผนวก
ไฟลไ์ ลบรารี ดว้ ยคาสงั่ ?
ก. #include<EEPROM.d>
ข. #include<EEPROM.hpp>
ค. #include<EEPROM.h>
ง. #include<EEPROM.c>
จ. #include<EEPROM.o>
2. ตอ้ งใชค้ าสงั่ ใดในการผนวกไฟลไ์ ลบรารขี อง servo?
ก. #include<servo.d>
ข. #include<servo.hpp>
ค. #include<servo.h>
ง. #include<servo.c>
จ. #include<EEPROM.o>
3. Arduino บรรจฟุ ังกช์ นั่ Wire สาหรบั ตดิ ต่อกบั อุปกรณ์ผา่ นบสั ?
ก. URAT
ข. I2C
ค. SPI
ง. USB
จ. GSM
4. Arduino UNO บรรจฟุ ังกช์ นั่ และคาสงั่ สาหรบั ตดิ ต่อกบั SPI โดยตอ้ งใชข้ าพอรต์ ?
ก. 10 (MISO), 11 (MOSI) และ 12 (SS)
ข. 11 (MISO), 10 (MOSI) และ 12 (SS)
ค. 12 (MISO), 11 (MOSI) และ 10 (SS)
ง. 9 (MISO), 8 (MOSI) และ 7 (SS)
จ. 11 (MISO), 12 (MOSI) และ 13 (SS)
หน่วยท่ี 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 107
5. ไลบรารี Wire ตดิ ต่อกบั อปกุ รณ์ผา่ นบสั I2C ขาพอรต์ ?
ก. A4 (SDA) และ A5 (SCL)
ข. A1 (SDA) และ A2 (SCL)
ค. A2 (SDA) และ A3 (SCL)
ง. A3 (SDA) และ A4 (SCL)
จ. A4 (SDA) และ A3 (SCL)
6. คาสงั่ ใดเป็นไลบรารเี กย่ี วกบั เวลา?
ก. delay
ข. delays
ค. us_delay
ง. sleep_us
จ. void delay_us
7. จานวนขาแอนนาล๊อกบอรด์ Arduino Uno R3?
ก. 4
ข. 5
ค. 6
ง. 8
จ. 10
8. ยา่ นคา่ แรงดนั ทพ่ี อรต์ แอนนาล๊อก?
ก. 0 ถงึ +1v
ข. 0 ถงึ +3.3v
ค. 0 ถงึ +5v
ง. 0 ถงึ +12v
จ. 0 ถงึ +14v
9. คา่ ความละเอยี ดในการแปลงสญั ญาณแอนนาล๊อกเป็นดจิ ติ อลภายไมโครคอนโทรลเลอร์?
ก. 5 บติ
ข. 8 บติ
ค. 10 บติ
ง. 16 บติ
จ. 18 บติ
หน่วยที่ 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 108
10. คา่ ขอ้ มลู แอนนาล๊อกทถ่ี ูกแปลงเป็นดจิ ติ อลจะอยรู่ ะหวา่ ง?
ก. 0 ถงึ 128
ข. 0 ถงึ 256
ค. 0 ถงึ 512
ง. 0 ถงึ 1,023
จ. 0 ถงึ 2,046
หน่วยท่ี 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 109
แบบฝึกหัด
หน่วยที่ 5 การอ่านคา่ แอนนาลอ๊ ก
ตอนที่ 1 ให้ผเู้ รยี นเลือกคาตอบที่ถกู ที่สดุ แล้วกาเคร่อื งหมายกากบาท ( ) ให้ครบทุกข้อ
1. คาสงั่ สาหรบั ตดิ ต่อกบั หน่วยความจาขอ้ มลู ออี พี รอม
ก. #include <EEROM.d>
ข. #include <EROM.h>
ค. #include <EEPROM.h>
ง. #include <EEPROM.hpp>
2. คาสงั่ สาหรบั ตดิ ต่อกบั โมดลู LCD
ก. #include <LiquidCristal.h>
ข. #include <LiquidCrystal.h>
ค. #include <LiquidCrystal.c>
ง. #include <LiquidCrystal.d>
3. คาสงั่ สาหรบั เรยี กใชง้ านการขบั เซอรโ์ วมอเตอร์
ก. #include <servo.h>
ข. #include <servo.f>
ค. #include <servo.d>
ง. #include <servo.c>
4. การส่อื สารขอ้ มลู อนุกรมไลบรารถี ูกนามาใชง้ านเมอ่ื ขาเช่อื มต่อ
ก. RxP และ TxP
ข. RxC และ TxC
ค. RvD และ TvD
ง. RxD และ TxD
5. คาสงั่ สาหรบั อ่านรหสั ของป่มุ รโี มตคอนโทรลอนิ ฟราเรด
ก. #include <IRremote.e
ข. #include <IRremote.k>
ค. #include <IRremote.c>
ง. #include <IRremote.h>
หน่วยที่ 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 110
6. อธบิ ายคาสงั่ delay_us(500);
ก. หน่วงเวลาประมาณ 500 ไมโครวนิ าที
ข. หน่วงเวลาประมาณ 500 นาโนวนิ าที
ค. หน่วงเวลาประมาณ 500 วนิ าที
ง. หน่วงเวลาประมาณ 500 มลิ ลวิ นิ าที
7. คาสงั่ สาหรบั เรยี กอ่านค่าแอนนาลอ๊ กสาหรบั Arduino Uno R3
ก. anelogRead(A0);
ข. anelogRead(A0);
ค. analogRead(A9);
ง. analogRead(A6);
8. การตดิ ต่ออุปกรณ์ทท่ี างานผ่านบสั แบบ SPI ยอ่ มาจาก
ก. Serial Peripheral Interface
ข. Serial Permission Interlock
ค. Serial Monitor Interface
ง. Serial Monitor Interlock
หน่วยที่ 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 111
ตอนที่ 2 ใหผ้ เู้ รยี นทาการทดลองจากโปรแกรมตวั อยา่ ง EEPROM, Analog และเขยี น
โปรแกรม
รบั คา่ จาก LDR ดว้ ยบอรด์ Arduino Uno R3 โดยใชเ้ วลา 180 นาที
จดุ ประสงคเ์ ชิงพฤติกรรม
1. สามารถทดสอบบอรด์ โปรแกรมตวั อยา่ ง EEPROM และ Analog ได้
2. สามารถอธบิ าย เขยี นโปรแกรม และแกป้ ัญหาในการรบั คา่ จาก LDR ดว้ ยบอรด์
Arduino Uno R3 ได้
อปุ กรณ์การทดลอง 1 โปรแกรม
1 เสน้
1. โปรแกรม Arduino IDE 1 บอรด์
2. สายโหลด USB Arduino Uno R3 1 ชดุ
3. บอรด์ Arduino Uno R3 1 เครอ่ื ง
4. สายต่อวงจร 1 ตวั
5. เครอ่ื งคอมพวิ เตอร์
6. แผงต่อวงจร
การทดลองท่ี 3.1 การเขียนและลบ EEPROM
รปู ท่ี 5.2 ตวั อยา่ งการเช่อื มต่อบอรด์ Arduino กบั คอมพวิ เตอร์
ขนั้ ตอนการทดลอง
1. เปิดโปรแกรม Arduino IDE
2. ต่อบอรด์ Arduino เขา้ กบั คอมพวิ เตอร์
3. เปิดโปรแกรมตวั อยา่ ง File > Examples > EEPROM
ประเมินผลการทดลอง
1. สามารถตดิ ตงั้ โปรแกรม Arduino IDE ไดถ้ กู ตอ้ ง 10 คะแนน
10 คะแนน
2. สามารถทดสอบและอธบิ ายการทางานไดถ้ กู ตอ้ ง ………… คะแนน
รวมคะแนนภาคปฏิบตั ิ
หน่วยท่ี 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 112
การทดลองท่ี 5.2 การอ่านค่าแอนนาลอ๊ ก
รปู ที่ 5.3 ตวั อยา่ งการเชอ่ื มต่อบอรด์ Arduino กบั คอมพวิ เตอร์
ขนั้ ตอนการทดลอง
1. เปิดโปรแกรม Arduino IDE
2. ต่อบอรด์ Arduino เขา้ กบั คอมพวิ เตอร์
3. เปิดโปรแกรมตวั อยา่ ง File > Examples > 03.Analog
ประเมินผลการทดลอง 10 คะแนน
10 คะแนน
1. สามารถเขยี นโปรแกรมไดถ้ ูกตอ้ งตามเงอ่ื นไข
2. สามารถทดสอบและอธบิ ายการทางานได้ …………………… คะแนน
ถูกตอ้ ง
รวมคะแนนภาคปฏิบตั ิ
หน่วยท่ี 5 : การอ่านคา่ แอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 113
การทดลองท่ี 5.3 การอ่านค่าแอนนาลอ๊ ก จากตวั รบั แสง LDR
รปู ท่ี 5.4 รปู แบบการต่อวงจรการทดลองท่ี 5.3
ขนั้ ตอนการทดลอง
1. ต่อวงจรตามรปู ท่ี 5.4
2. เขยี นโปรแกรมรบั ค่าจาก LDR
2.1 ใชค้ าสงั่ if… else if… else
2.2 เงอ่ื นไขแสดงขอ้ ความแบง่ เป็น 4 ระดบั ออกทาง Serial Monitor
ประเมินผลการทดลอง
1. สามารถเขยี นโปรแกรมไดถ้ กู ตอ้ งตามเงอ่ื นไข 10 คะแนน
2. สามารถทดสอบและอธบิ ายการทางานได้ 10 คะแนน
ถกู ตอ้ ง
…………………..… คะแนน
รวมคะแนนภาคปฏิบตั ิ
หน่วยท่ี 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 114
เฉลยแบบทดสอบก่อนเรียน 5. ก
10. ง
หน่วยท่ี 5 การอ่านค่าแอนนาลอ๊ ก
1. ค 2. ค 3. ค 4. ค
6. ก 7. ค 8. ค 9. ค
เฉลยแบบทดสอบหลงั เรียน 5. ข
10. ค
หน่วยที่ 5 การอ่านค่าแอนนาลอ๊ ก
1. ก 2. ง 3. ข 4. ข
6. ง 7. ก 8. ง 9. ข
เฉลยแบบฝึ กหดั 5. ง
หน่วยที่ 5 การอ่านค่าแอนนาลอ๊ ก
ตอนท่ี 1 จงเลือกคาตอบที่ถกู ท่ีสดุ เพียงข้อเดียว
1. ค 2. ข 3. ก 4. ง
6. ก 7. ง 8. ก
หน่วยท่ี 5 : การอ่านค่าแอนนาลอ๊ ก
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 105
หน่วยที่ 6
การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณเ์ อาต์พุต
สาระสาคญั
หลอดแสดงผล LED (Light Emitting Diode) หรือไดโอดเปล่งแสดง เป็ นอุปกรณ์
อิเล็กนิกส์ท่ีใช้ในการแสดงผล นิยมใช้กนั อย่างแพร่หลายเน่ืองจากใช้งานง่าย และราคาถูก
โดยส่วนใหญ่จะใช้แสดงสถานะการทางานของอุปกรณ์และสถานะของไมโครคอนโทรลเลอร์
ในหน่วยการเรยี นน้ีจะกล่าวถงึ การเขยี นโปรแกรมควบคุมการทางานของหลอดแสดงผล LED
การประยุกต์การใช้งานไมโครคอนโทรลเลอร์ควบคุมการทางานหลอดแสดงผล LED ซ่งึ เป็น
การเขยี นโปรแกรมควบคุมขนั้ พน้ื ฐาน
หลอดแสดงผล 7-Segment หรอื LED 7 ส่วน เป็นอุปกรณ์อิเล็กทรอนิกส์ท่ใี ช้ในการ
แสดงผลเช่นเดียวกับหลอดแสดงผล LED ทัว่ ไป แต่แตกต่างตรงท่ีแสดงผล 7-Segment
เป็นการนาเอาหลอดแสดงผล LED จานวน 7 หลอดมาต่อกนั เป็นรปู ตวั เลข เพ่อื นามาแสดงผล
เป็นตวั เลข 0 ถึง 9 ซ่งึ ในหน่วยการเรยี นน้ีจะกล่าวถึงการเขยี นโปรแกรมควบคุมการทางาน
ของแสดงผล 7-Segment และการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ควบคุมการทางาน
ของแสดงผล 7-Segment หลอดแสดงผล LED 7-Segment แบบ 4 หลกั หรอื เรยี กว่า Digital
Tube คอื การนาหลอดแสดงผล LED 7-Segment จานวน 4 หลกั ใช้เทคนิคท่เี รยี กว่า Timing-
Multiplexing เพ่อื ช่วยประหยดั การใชข้ าสญั ญาณได้ หรอื ต่อใชง้ านผ่านไอซอี ่นื เพ่อื เป็นตวั ช่วย
โดยหัวข้อน้ีเป็ นโมดูลใช้ชิป TM1637 เป็ นตัวควบคุมการทางาน ไอซีเบอร์ TM1637
ใช้ ข า สั ญ ญ า ณ เพี ย ง 2 เส้ น คื อ ข า CLK แ ล ะ ข า DIO ใ น ก า ร ส่ื อ ส า ร ข้ อ มู ล
กบั ไมโครคอนโทรลเลอร์ ทาให้ประหยดั ขาสญั ญาณในการเช่อื มต่อ และสามารถเลอื กระดบั
ความสว่างของ LED ได้ 8 ระดบั
สาระการเรียนรู้
6.1 การเรยี นรเู้ กย่ี วกบั หลอดแสดงผล LED
6.2 การเรยี นรเู้ กย่ี วกบั วงจรขบั หลอดแสดงผล LED
6.3 การเรยี นรเู้ กย่ี วกบั หลอดแสดงผล 7-Segment
6.4 การเรยี นรเู้ กย่ี วกบั วงจรขบั หลอดแสดงผล LED 7-Segment
6.5 การประยกุ ตใ์ ชง้ านไมโครคอนโทรลเลอรก์ บั หลอดแสดงผล LED
และหลอดแสดงผล LED 7-Segment
หน่วยที่ 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 106
จุดประสงค์เชิงพฤติกรรม
1. นกั เรยี นอธบิ ายการความรเู้ บอ้ื งตน้ เก่ยี วกบั หลอดแสดงผล LED และหลอดแสดงผล
LED 7-Segment ไดถ้ ูกตอ้ ง
2. นักเรียนต่อวงจรขับหลอดแสดงผล LED และวงจรขบั หลอดแสดงผล LED 7-
Segment ไดถ้ ูกตอ้ ง
3. นกั เรยี นเช่อื มต่อคอนโทรลเลอรก์ บั หลอดแสดงผล LED และหลอดแสดงผล LED 7-
Segment ไดถ้ ูกตอ้ ง
4. นักเรยี นใชง้ านคอนโทรลเลอรก์ บั หลอดแสดงผล LED และหลอดแสดงผล LED 7-
Segment ไดถ้ กู ตอ้ ง
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 107
แบบทดสอบกอ่ นเรียน
หนว่ ยที่ 6 การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อุปกรณ์เอาตพ์ ุต
คาสงั่ จงเลือกคาตอบท่ีถกู ที่สดุ เพียงข้อเดียว
1. LED ยอ่ มาจาก?
ก. Light Emotion Diode
ข. Light Emitting Direct
ค. Light Emitting Diode
ง. Life Emitting Diode
จ. Light Emotion Direct
2. หลอดแสดงผล 7-Segment สามารถแสดงตวั เลข?
ก. 0 - 6
ข. 0 - 9
ค. 0 - 11
ง. 1 – 10
จ. 0 - 10
3. หลอดแสดงผล LED 7-Segment แบบ 4 หลกั หรอื เรยี กวา่ ?
ก. Digital Tube
ข. Digital Hub
ค. Digital LED
ง. Digital 7-Segment
จ. Digital tube display
4. หลอดแสดงผล LED 7-Segment แบบ 4 หลกั ใชเ้ ทคนิค ... เพ่อื ช่วยประหยดั การใช้
ขาสญั ญาณ?
ก. Time-Multiplexing
ข. Timing-Multiplexing
ค. Timing-Multi 7-Segment
ง. Timing-Mult-Tube
จ. Time- Mult-Tube
หน่วยท่ี 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 108
5. การจดั ขาของหลอดแสดงผล LED 7-Segment แบบ 4 หลกั ใชไ้ อซเี บอร?์
ก. TM7905
ข. LS1637
ค. TM7805
ง. TM1637
จ. LS7805
6. ไอซเี บอร์ TM1637 ใชข้ าสญั ญาณเพยี ง?
ก. 2 เสน้ คอื CLK, DIO
ข. 2 เสน้ คอื CLK, SCL
ค. 3 เสน้ คอื VCC, GND, CLK
ง. 3 เสน้ คอื VCC, GND, DIO
จ. 3 เสน้ คอื VCC, CLK, DIO
7. หลอดแสดงผล LED 7-Segmant แบบ 4 หลกั สามารถปรบั ความสวา่ งของ LED ได?้
ก. 6 ระดบั
ข. 7 ระดบั
ค. 8 ระดบั
ง. 9 ระดบั
จ. 11 ระดบั
8. แต่ละส่วนของหลอดแสดงผล 7-Segment คอื ?
ก. a, b, c, d, e, f, และ g
ข. a, b, c, d, e, f, g และ dp
ค. a, b, c, d, e, f, g และ common a
ง. a, b, c, d, e, f, g และ common k
จ. a, b, c, d, e, f, g และ common L
9. หลอดแสดงผล 7-Segment สามารถบางตามลกั ษณะการต่อ ได้ 2 ชนิด คอื ?
ก. Common Anode และ Common Emitting
ข. Common Anode และ Common Segment
ค. Common Anode และ Common Diode
ง. Common Anode และ Common Cathode
จ. Common Anode และ Common Emittion
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 109
10. Common Anode คอื การใชข้ าใดรว่ มกนั เพอ่ื ต่อกบั ?
ก. GND
ข. VCC
ค. A
ง. K
จ. G
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 110
การเลอื กเบอร์ไอซไี มโครคอนโทรลเลอรน์ ัน้ ขน้ึ อยู่กบั ปรมิ าณงานและความยากง่าย
ของงานนัน้ ๆ ถ้าหากเป็นงานท่ใี ชไ้ มโครคอนโทรลเลอรใ์ นการการควบคุมทวั่ ๆ ไปสามารถ
เลอื กใช้ได้ ทุกเบอรท์ ุกตระกูล แต่ถ้าหากงานควบคุมนัน้ มีความละเอียดสูง มฟี ังก์ชนั มาก
ต้องใช้ไมโครคอนโทรลเลอร์เบอร์เฉพาะ สาหรบั ไมโครคอนโทรลเลอร์เบอร์ PIC18F4550
เพราะสามารถศกึ ษาหลกั การทางานของไมโครคอนโทรลเลอรไ์ ดม้ ากพอสมควร
การควบคุมหลอดไฟ (LED) และหลอดแสดงผล 7-Segment
.
หลอดแสดงผล LED (Light Emitting Diode) หรือไดโอดเปล่งแสดง เป็ นอุปกรณ์
อเิ ลก็ นิกสท์ ใ่ี ชใ้ นการแสดงผล นิยมใชก้ นั อยา่ งแพรห่ ลายเน่ืองจากใชง้ านง่าย และราคาถูก โดย
ส่วนใหญ่จะใช้แสดงสถานะการทางานของอุปกรณ์และสถานะของไมโครคอนโทรลเลอร์
ในหน่วยการเรยี นน้ีจะกล่าวถงึ การเขยี นโปรแกรมควบคุมการทางานของหลอดแสดงผล LED
การประยุกต์การใช้งานไมโครคอนโทรลเลอรค์ วบคุมการทางานหลอดแสดงผล LED ซ่งึ เป็น
การเขยี นโปรแกรมควบคุมขนั้ พน้ื ฐาน
หลอดแสดงผล 7-Segment หรอื LED 7 ส่วน เป็นอุปกรณ์อเิ ล็กทรอนิกส์ท่ใี ช้ในการ
แสดงผลเช่นเดยี วกบั หลอดแสดงผล LED ทวั่ ไป แต่แตกต่างตรงทห่ี ลอดแสดงผล 7-Segment
เป็นการนาเอาหลอดแสดงผล LED จานวน 7 หลอดมาต่อกนั เป็นรปู ตวั เลข เพ่อื นามาแสดงผล
เป็นตวั เลข 0 ถึง 9 ซ่งึ ในหน่วยการเรยี นน้ีจะกล่าวถึงการเขยี นโปรแกรมควบคุมการทางาน
ของหลอดแสดงผล 7-Segment และการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ควบคุม
การทางานของหลอดแสดงผล 7-Segment
รปู ท่ี 6.1 ตวั อยา่ ง LED และ 7 Segment แบบ 4 Digit
หน่วยท่ี 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 111
6.1 การทางานของหลอดไฟ LED
หลอดแสดงผล LED แตกต่างจากหลอดไสค้ อื หลอดไส้จะใช้การเผาไหม้ของขดลวด
ทาให้เกิดความรอ้ นท่ีหลอดและทาให้เกิดแสงสว่างข้นึ แต่หลอดแสดงผล LED เป็นการทา
ปฏกิ ิรยิ าของสารก่งึ ตวั นาชนิดเดยี วกบั กบั ทรานซสิ เตอร์ จงึ ไม่เกิดความรอ้ นและปลอดภยั ใน
การใชง้ านดงั รปู ท่ี 6.2
รปู ที่ 6.2 การต่อใชง้ านหลอดแสดงผล LED
จากรูปท่ี 6.2 การต่อใช้งานหลอดแสดงผล LED จะมกี ารต่อตวั ต้านทาน 220 โอห์ม
เพ่อื ทาหน้าทจ่ี ากดั กระแสใหเ้ หมาะสมกบั หลอดแสดงผล Led ไมใ่ ห้หลอดแสดงผล LED สว่าง
มากเกนิ ไปหรอื น้อยเกนิ ไป ซง่ึ หลอดแสดงผล LED จะใชก้ ระแสประมาณ 10 ถงึ 30 มลิ ลแิ อมป์
รูปท่ี 6.2 (ก) เม่อื มกี ารต่อไฟ 5 โวลต์หรอื สญั ญาณลอจกิ “1” ผ่านตัวต้านทานไปยงั หลอด
แสดงผล LED จะทาใหห้ ลอดแสดงผล LED สว่าง และเมอ่ื มกี ารต่อไฟ 0 โวลต์หรอื ส่งสญั ญาณ
ลอจกิ “0” ดงั รปู ท่ี 6.2(ข) ผ่านตวั ต้านทานไปยงั หลอดแสดงผล LED หลอดแสดงผล LED จะดบั
เน่อื งจากไมม่ กี ระแสไฟฟ้าไหลผ่าน
6.2 การเชอ่ื มต่อไมโครคอนโทรเลอรก์ ับหลอดไฟ LED
6.2.1 ฟังกช์ นั่ พื้นฐานสาหรบั การใช้งานบอรด์ ไมโครคอนโทรลเลอรก์ บั หลอดไฟ
LED
- pinMode (pin,mode) ใชก้ าหนดขาพอรต์ ใด ๆ ใหเ้ ป็นพอรต์ ดจิ ติ อล เมอ่ื
pin คอื หมายเลขขาทต่ี อ้ งการเรยี กใชง้ าน
mode คอื โหมดการทางานเป็น INPUT หรอื OUTPUT
- digitalWrite (pin, value) สงั่ งานใหข้ าพอรท์ ร่ี ะบุไวม้ คี ่าสถานะเป็นลอจกิ สงู
(HIGH หรอื 1) หรอื ลอจกิ ต่า (LOW หรอื 0) เมอ่ื
pin คอื หมายเลขขาทต่ี อ้ งการเรยี กใชง้ าน
value คอื สถานะลอจกิ ทต่ี อ้ งการ HIGH หรอื LOW
หน่วยท่ี 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 112
6.2.2 โปรแกรมสงั่ ให้หลอดไฟ LED กะพริบ
ในการทดลองเก่ยี วกบั ไมโครคอนโทรลเลอร์ เร่อื งแรกกค็ อื การสงั่ ใหพ้ อรต์ ทางาน
เป็นเอาต์พุต และสงั่ ให้มี ค่าเป็น HIGH หรอื LOW ได้ตามท่ตี ้องการ โดยจะต่อกับหลอดไฟ
LED และสงั่ ใหห้ ลอดไฟ LED ติดดบั ต่อเน่ืองกนั ตลอดเวลาเรยี กว่า ไฟกะพรบิ (blink) ในการ
ทดลองขบั LED อยา่ งง่าย ไดย้ กโปรแกรมตวั อยา่ งช่อื Blink ซง่ึ มตี วั อยา่ งในโปรแกรม Arduino
IDE อยแู่ ลว้
ในตวั อย่างน้ีจะนาโปรแกรม Blink.ino มาประยุกต์สงั่ เอาต์พุตควบคุมหลอดไฟ
LED สองดวงให้ตดิ ดบั สลบั กนั โดยเรม่ิ ต้นด้วยการต่อวงจรส่วนของหลอดไฟ LED จะต่อวงจร
ให้ LED ทางานทล่ี อจกิ 1 คอื เมอ่ื สงั่ ใหข้ าเป็น HIGH จะทาให้ LED ตดิ เม่อื สงั่ ใหข้ าเป็น LOW
หลอดจะดบั ในการต่อหลอดไฟ LED สาหรบั บอรด์ สามารถใช้แผงวงจรต่อตรงกบั จุดต่อของ
พอรต์ ได้ทันที เม่อื ต่ออุปกรณ์แล้วให้เขยี นโปรแกรมตามโปรแกรมท่ี 6.1 ทดลองคอมไพล์
และอปั โหลดลงบอรด์ คอนโทรลเลอร์ Arduino Uno R3 ศกึ ษาผลการทางานวงจรทดลองดจิ ติ อิ ล
เอาตพ์ ตุ สงั่ ใหห้ ลอดไฟ LED 2 ดวงกะพรบิ สลบั กนั
ตวั อย่างโปรแกรมท่ี 6.1
รปู ที่ 6.3 โปรแกรมตวั อยา่ ง Blink 2 ดวงกะพรบิ สลบั กนั
หน่วยที่ 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 113
วงจรท่ี 6.1
รปู ท่ี 6.4 การต่องวงจรสาหรบั โปรแกรม Blink 2 ดวงกะพรบิ สลบั กนั
6.2.3 โปรแกรมไฟว่ิง LED 3 ดวง
การทางานของโปรแกรมน้ีเรม่ิ ด้วยการสงั่ ให้ LED1 สว่าง 0.2 วินาที ดบั 0.2
วนิ าทแี ล้วสงั่ ให้ LED2 สว่าง 0.2 วนิ าที ดบั 0.2 วนิ าที ตามดว้ ย LED3 สว่างและดบั เป็นลาดบั
วนต่อเน่ืองตลอดเวลา จากโปรแกรมสงั่ ให้ LED สว่างและดบั ตามลาดบั ดงั โปรแกรมท่ี 6.2
เขยี นโดยใชต้ วั แปรอะเรยเ์ พอ่ื ควบคุมหลอดไฟวง่ิ แบบใชต้ วั แปรอะเรย์
ตวั อย่างโปรแกรมท่ี 6.2
รปู ท่ี 6.5 โปรแกรมไฟวง่ิ LED 3 ดวง
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 114
6.3 การทางานของหลอดไฟ 7-Segment
หลอดแสดงผล LED 7-Segment เป็นการนาเอาหลอด LED จานวน 7 ตัว มาต่อกัน
เป็นรปู ตวั เลขโดยมชี ่อื เรยี กแต่ละส่วนคอื a, b, c, d, e, f ,g และ dp แสดงดงั รปู ท่ี 6.6
หลอดแสดงผล 7-Segment สามารถบางตามลกั ษณะการต่อ ได้ 2 ชนดิ คอื
1. ชนดิ ต่อแบบแอโนดรว่ ม หรอื คอมมอนแอโนด (Common Anode)
2. ชนิดต่อแบบแคโทดรว่ ม หรอื คอมมอนแคโทด (Common Cathode)
ซง่ึ โครงสรา้ งการต่อหลอดแสดงผล LED 7-Segment ทงั้ 2 ชนิด แสดงดงั รปู ท่ี 6.7
รปู ที่ 6.6 โครงสรา้ งและขาของหลอดแสดงผล LED 7-Segment
ที่มา : www.circuitstoday.com
รปู ท่ี 6.7 โครงสรา้ งการต่อหลอดแสดงผล LED 7-Segment
ที่มา : sites.google.com/site/stemsos2016arduino01
หน่วยท่ี 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 115
รูปท่ี 6.7 (ก) เป็นการต่อหลอดแสดงผล LED 7-Segment แบบแอโนดร่วม โดยการ
ป้อนไฟบวกเขา้ ทข่ี ารว่ มหรอื ขาคอมมอน (Common) และถา้ ตอ้ งการใหห้ ลอดแสดงผล LED 7-
Segment แสดงผลหรอื สว่าง ตอ้ งป้อนไฟลบหรอื ส่งลอจกิ “0” มาทข่ี าแคโทด ส่วนรปู ท่ี 6.7 (ข)
เป็นการต่อหลอดแสดงผล LED 7-Segmentแบบแคโทด โดยต้องป้อนไฟลบหรอื กราวด์ท่ขี าร่วม
หรอื ขาคอมมอน และถ้าตอ้ งการใหห้ ลอดแสดงผล LED 7-Segment แสดงผลหรอื สว่างตอ้ งป้อน
ไฟบวกหรอื สง่ ลอจกิ “1” มาทข่ี าแอโนด
6.4 การเชอื่ มต่อไมโครคอนโทรเลอรก์ บั หลอดไฟ 7-Segment
สาหรบั การเช่อื มต่อไมโครคอนโทรลเลอรร์ ่วมกบั หลอดแสดงผล LED 7-Segment ควร
ต่อรว่ มกบั ตวั ตา้ นทานดว้ ยเพ่อื ไมใ่ หก้ ระแสไหลเกนิ อาจเกดิ ความเสยี หายได้ หรอื อาจต่อรว่ มกบั
ไอซบี ฟั เฟอร์ (เบอร์ 74LS245) ร่วมด้วย เพ่อื ขยายกระแสใหห้ ลอดแสดงผล LED 7-Segment
สวา่ งเท่ากนั ทุกหลอด และป้องกนั การลดั วงจรของหลอดแสดงผล LED 7-Segment ได้
รปู ที่ 6.8 การต่อใชห้ ลอดแสดงผล LED 7-Segment กบั ไมโครคอนโทรลเลอร์ Arduino Uno
R3
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 116
รปู ที่ 6.9 การต่อใชห้ ลอดแสดงผล LED 7-Segment ร่วมกบั ไอซบี ฟั เฟอรเ์ บอร์ 74LS245
6.5 การเขยี นโปรแกรมสง่ ขอ้ มูลออกหลอดแสดงผล LED 7-Segment
ไมโครคอนโทรเลอรก์ บั หลอดไฟ 7-Segment
การต่อไมโครคอนโทรลเลอร์ร่วมกบั หลอดแสดงผล LED 7-Segment เพ่ือแสดงผล
ออกมาเป็นตวั เลขต่าง ๆ จะตอ้ งมกี ารสง่ ขอ้ มลู ออกพอรต์ ของไมโครคอนโทรลเลอรท์ ต่ี ่อรว่ มอยู่
กับหลอดแสดงผล LED 7-Segment และข้อมูลท่ีจะส่งออกพอร์ตนั้นก็ข้ึนอยู่กับชนิดของ
หลอดแสดงผล LED 7-Segment ด้วย ซ่ึงข้อมูลท่ีจะส่งออกพอร์ตของหลอดแสดงผล
LED 7-Segment แบบต่อแอโนดรว่ มและต่อแคโทดรว่ มแสดงดงั ตารางท่ี 6.1 และ 6.2
6.5.1 ฟังก์ชนั่ สาหรบั การใช้งานบอรด์ ไมโครคอนโทรลเลอรก์ บั หลอดแสดงผล
LED 7-Segment
DDRD = 0xFF; ใชก้ าหนดพอรต์ D (ขา 0-7) ใหเ้ ป็นพอรต์ OUTPUT
PORTD = 0xF9; ใชก้ าหนดขอ้ มลู ทส่ี ง่ ออกพอรต์ แบบต่อแอโนดรว่ ม
PORTD = 0x06; ใชก้ าหนดขอ้ มลู ทส่ี ่งออกพอรต์ แบบต่อแคโนดรว่ ม
variable << number_of_bits; เล่อื นบติ
ตวั อยา่ ง byte bits = bits | B00000001;
bits = bits << 1; //เล่อื นไปทางซา้ ย 1 บติ
ผลลพั ท์ bits = B00000010;
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 117
ตวั อย่างโปรแกรมท่ี 6.3
รปู ที่ 6.10 โปรแกรมแสดงแต่ละส่วนของหลอดแสดงผล LED 7-Segment
ตวั อย่างโปรแกรมที่ 6.4
รปู ท่ี 6.11 โปรแกรมแสดงเลข 0 – 3 ของหลอดแสดงผล LED 7-Segment
หน่วยที่ 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 118
ต า ร า ง ท่ี 6 .1 แ ส ด ง ข้อ มู ล ท่ี ส่ งอ อ ก พ อ ร์ต ข อ งห ล อ ด แ ส ด งผ ล LED 7-Segment
แบบต่อแอโนดรว่ ม ค่าข้อมลู ส่งออกพอรต์ แสดงผล
(เลขฐานสิบหก) ตวั เลข
คา่ ขอ้ มลู (เลขฐานสอง)
g f E d c ba 0x40 0
1 0 0 0 0 00 0x79 1
1 1 1 1 0 01 0x24 2
0 1 0 0 0 10 0x30 3
0 1 1 0 0 00 0x19 4
0 0 1 1 0 01 0x12 5
0 0 1 0 0 10 0x02 6
1 1 1 1 0 00 0x78 7
0 0 0 0 0 00 0x00 8
0 0 1 0 0 00 0x10 9
ต า ร า ง ที่ 6 .2 แ ส ด ง ข้อ มู ล ท่ี ส่ งอ อ ก พ อ ร์ต ข อ งห ล อ ด แ ส ด งผ ล LED 7-Segment
แบบต่อแคโนดรว่ ม
ค่าข้อมลู ส่งออก แสดงผล
ค่าข้อมลู (เลขฐานสอง) พอรต์ ตวั เลข
(เลขฐานสิบหก)
g f Edcb a 0x3F 0
1 0 0000 0 0x06 1
1 1 1100 1 0x5B 2
0 1 0001 0 0x4F 3
0 1 1000 0 0x66 4
0 0 1100 1 0x6D 5
0 0 1001 0 0x7D 6
1 1 1100 0 0x07 7
0 0 0000 0 0x7F 8
0 0 1000 0 0x6F 9
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 119
6.5.2 โมดลู หลอดแสดงผล LED 7-Segment แบบ 4 หลกั
หลอดแสดงผล LED 7-Segment แบบ 4 หลกั หรอื เรยี กว่า Digital Tube คือ
การนาหลอดแสดงผล LED 7-Segment จานวน 4 หลัก ใช้เทคนิคท่ีเรียกว่า Timing-
Multiplexing เพ่อื ช่วยประหยดั การใช้ขาสญั ญาณได้ หรอื ต่อใชง้ านผ่านไอซอี ่นื เพ่อื เป็นตวั ช่วย
โดยหัวข้อน้ีเป็ นโมดูลใช้ชิป TM1637 เป็ นตัวควบคุมการทางาน ไอซีเบอร์ TM1637
ใช้ ข า สั ญ ญ า ณ เพี ย ง 2 เส้ น คื อ ข า CLK แ ล ะ ข า DIO ใ น ก า ร ส่ื อ ส า ร ข้ อ มู ล
กบั ไมโครคอนโทรลเลอร์ ทาให้ประหยดั ขาสญั ญาณในการเช่อื มต่อ และสามารถเลอื กระดบั
ความสวา่ งของ LED ได้ 8 ระดบั
ข้อมลู เชิงเทคนิคเกี่ยวกบั ไอซี TM1637
- ใชแ้ รงดนั ไฟเลย้ี ง (Voltage Supply): VDD = 4.5V ถงึ 5.5V
- โปรแกรมไดผ้ ่านสญั ญาณ CLK (Clock) และ DIO (Data I/O)
- ขา DIO ใชง้ านแบบสองทศิ ทาง หรอื bidirectional และตอ้ งต่อตวั ตา้ นทาน Pull-up
ดว้ ย (เช่น 10kΩ)
- ใชค้ วามถข่ี องสญั ญาณ CLK ไดถ้ งึ 450kHz
การส่ือสารข้อมูลกับไอซี TM1637 จะใช้สัญญาณ 2 เส้นคือ CLK และ DIO โดยท่ี
ไมโครคอน โทรลเลอร์ซ่ึงเป็นฝ่ ายส่ง จะต้องสร้างสัญญาณ CLK และส่งข้อมูลทีละบิตผ่าน
ขาสญั ญาณ DIO ในสถานะปรกตหิ รอื Idle ท่ยี งั ไม่มกี ารส่อื สารขอ้ มลู ใด ๆ สญั ญาณ CLK และ
DIO จะต้องเป็น HIGH จากนนั้ เม่อื เรม่ิ ตน้ ส่อื สารขอ้ มลู ฝ่ายส่งจะตอ้ งส่งบติ Start แลว้ ตามดว้ ย
ขอ้ มูลไบต์แรก (ส่งทลี ะบติ แบบ LSB First) และไอซี TM1637 ซง่ึ เป็นฝ่ ายรบั จะต้องตอบกลบั
ดว้ ยบติ Ack (Acknowledge) การส่อื สารขอ้ มลู จะต้องจบด้วย บติ Stop (หรอื End) โดยรวมจะ
เห็นได้ว่า มรี ูปแบบการทางานเหมอื นกับกรณีของ I2C แต่อันท่จี รงิ แล้วมคี วามแตกต่างกนั
เช่น ขอ้ มลู ไบตแ์ รกจะไมใ่ ช่ Control Byte เพอ่ื ระบหุ มายเลขทอ่ี ยแู่ ละบติ เขยี น-อ่าน
การส่งข้อมูลไปแสดงผล จะต้องส่ง "คาสัง่ " 3 ชุด ได้แก่ Command1 (0x40)
ซง่ึ หมายถงึ คาสงั่ เขยี นขอ้ มลู ลงหน่วยความจาภายใน, Command2 (0xC0) เป็นคาสงั่ เขยี นค่า
ใหมใ่ ห้ 7-Segment Digit ทต่ี ้องการซง่ึ ต้องระบุหมายเลขทอ่ี ย่ดู ว้ ย และตามดว้ ยขอ้ มลู หน่ึงไบต์
ท่ีต้องการเขยี นค่าใหม่ลงไป และ Command3 (0x80) เป็นคาสงั่ เพ่ือระบุค่าท่ีกาหนดระดบั
ความสว่าง
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 120
รปู ที่ 6.12 โมดลู หลอดแสดงผล LED 7-Segment แบบ 4 หลกั
ท่ีมา : www.aliexpress.com
6.5.3 การเขียนโปรแกรมประยุกต์ใช้งานโมดูลหลอดแสดงผล LED 7-Segment
แบบ 4 หลกั
สาหรับการเขียนโปรแกรมเรียกใช้งานโมดูลหลอดแสดงผล LED 7-Segment
แบบ 4 หลัก เบ้ืองต้นต้องไปดาวน์โหลดไลบรารที ่ี http://wiki.seeedstudio.com/Grove-4-
Digit_Display/
ฟังกช์ นั่
tm1637.set(); กาหนดความสวา่ งของโมดูลแสดงผล โดยใสค่ ่าไดต้ งั้ แต่ 0-7
หรอื
BRIGHT_TYPICAL = 2;
BRIGHT_DARKEST = 0;
BRIGHTEST = 7;
tm1637.init(); เรม่ิ ตน้ ใชง้ านโมดลู
tm1637.display(); กาหนดตวั เลขทใ่ี ชใ้ นการแสดงผล
tm1637.point(POINT_ON); เปิดใชง้ านเครอ่ื งหมาย colon
tm1637.point(POINT_OFF); ปิดใชง้ านเครอ่ื งหมาย colon
หน่วยท่ี 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 121
ตวั อย่างโปรแกรมที่ 6.5
รปู ที่ 6.13 โปรแกรมแสดงเลข 0–9 ของหลอดแสดงผล LED 7-Segment แบบ 4 หลกั
ตวั อย่างโปรแกรมที่ 6.6
รปู ที่ 6.14 โปรแกรมแสดงค่า Analog จากขา A0 ดว้ ยหลอดแสดงผล LED
7-Segment แบบ 4 หลกั
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 122
แบบทดสอบหลังเรียน
หนว่ ยที่ 6 การเชอื่ มต่อไมโครคอนโทรลเลอร์กับอปุ กรณ์เอาต์พุต
คาสงั่ จงเลือกคาตอบท่ีถกู ท่ีสดุ เพียงข้อเดียว
1. LED ยอ่ มาจาก?
ก. Light Emotion Diode
ข. Light Emitting Direct
ค. Light Emitting Diode
ง. Life Emitting Diode
จ. Light Emotion Direct
2. หลอดแสดงผล 7-Segment สามารถแสดงตวั เลข?
ก. 0 - 6
ข. 0 - 9
ค. 0 - 11
ง. 1 – 10
จ. 0 - 10
3. หลอดแสดงผล LED 7-Segment แบบ 4 หลกั หรอื เรยี กว่า?
ก. Digital Tube
ข. Digital Hub
ค. Digital LED
ง. Digital 7-Segment
จ. Digital tube display
4. หลอดแสดงผล LED 7-Segment แบบ 4 หลกั ใชเ้ ทคนิค ... เพ่อื ชว่ ยประหยดั การใช้
ขาสญั ญาณ?
ก. Time-Multiplexing
ข. Timing-Multiplexing
ค. Timing-Multi 7-Segment
ง. Timing-Mult-Tube
จ. Time- Mult-Tube
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 123
5. การจดั ขาของหลอดแสดงผล LED 7-Segment แบบ 4 หลกั ใชไ้ อซเี บอร?์
ก. TM7905
ข. LS1637
ค. TM7805
ง. TM1637
จ. LS7805
6. ไอซเี บอร์ TM1637 ใชข้ าสญั ญาณเพยี ง?
ก. 2 เสน้ คอื CLK, DIO
ข. 2 เสน้ คอื CLK, SCL
ค. 3 เสน้ คอื VCC, GND, CLK
ง. 3 เสน้ คอื VCC, GND, DIO
จ. 3 เสน้ คอื VCC, CLK, DIO
7. หลอดแสดงผล LED 7-Segmant แบบ 4 หลกั สามารถปรบั ความสวา่ งของ LED ได?้
ก. 6 ระดบั
ข. 7 ระดบั
ค. 8 ระดบั
ง. 9 ระดบั
จ. 11 ระดบั
8. แต่ละส่วนของหลอดแสดงผล 7-Segment คอื ?
ก. a, b, c, d, e, f, และ g
ข. a, b, c, d, e, f, g และ dp
ค. a, b, c, d, e, f, g และ common a
ง. a, b, c, d, e, f, g และ common k
จ. a, b, c, d, e, f, g และ common L
9. หลอดแสดงผล 7-Segment สามารถบางตามลกั ษณะการต่อ ได้ 2 ชนิด คอื ?
ก. Common Anode และ Common Emitting
ข. Common Anode และ Common Segment
ค. Common Anode และ Common Diode
ง. Common Anode และ Common Cathode
จ. Common Anode และ Common Emittion
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 124
10. Common Anode คอื การใชข้ าใดรว่ มกนั เพอ่ื ต่อกบั ?
ก. GND
ข. VCC
ค. A
ง. K
จ. G
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 125
แบบฝกึ หดั
หน่วยที่ 6 การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณเ์ อาตพ์ ุต
ตอนที่ 1 ใหผ้ เู้ รยี นกาเคร่อื งหมายถกู ( ) หน้าขอ้ ทค่ี ดิ ว่าถกู และกาเครอ่ื งหมายผดิ ( )
ในขอ้ ทค่ี ดิ วา่ ผดิ
หลอดแสดงผล LED เป็นการทาปฏกิ รยิ าของสารกง่ึ ตวั นาชนิดเดยี วกนั กบั
ทรานซสิ เตอร์
หลอดแสดงผล LED จะใชก้ ระแสประมาณ 100 ถงึ 300 มลิ ลแิ อมป์
โปรแกรมสงั่ ใหห้ ลอดไฟ LED ตดิ ดบั ต่อเน่อื งกนั ตลอดเวลาเรยี กวา่ ไฟกะพรบิ
(blink)
pinMode (pin,mode) ใชก้ าหนดขาพอรต์ ใด ๆ ใหเ้ ป็นพอรต์ อนาล๊อก
ถา้ ตอ้ งการใหห้ ลอดแสดงผล LED 7-Segment แสดงผลหรอื สวา่ ง ตอ้ งส่งลอจกิ
“0” มาทข่ี าแคโทด ชนดิ ต่อแบบแอโนดรว่ ม
ถา้ ตอ้ งการใหห้ ลอดแสดงผล LED 7-Segment แสดงผลหรอื สว่าง ตอ้ งส่งลอจกิ
“0” มาทข่ี าแอโนด ชนิดต่อแบบแคโทดรว่ ม
เพอ่ื ไมใ่ หก้ ระแสไหลเกนิ อาจเกดิ ความเสยี หายไดก้ บั หลอดแสดงผล LED 7-
Segment ควรต่อรว่ มกบั ตวั ตา้ นทาน
เพ่อื ขยายกระแสใหห้ ลอดแสดงผล LED 7-Segment สวา่ งเท่ากนั ทกุ หลอด และ
ป้องกนั การลดั วงจรของหลอดแสดงผล LED 7-Segment ควรต่อรว่ มไอซี
บฟั เฟอรเ์ บอร์ 74LS245
DDRD = 0xFF; ใชก้ าหนดพอรต์ D (ขา 0-7) ใหเ้ ป็นพอรต์ OUTPUT
PORTD = 0x06; ใชก้ าหนดขอ้ มลู ทส่ี ง่ ออกพอรต์ แบบต่อแอโนดรว่ ม
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วิชา ไมโครคอนโทรลเลอร์ 126
ตอนท่ี 2
คาสัง่ ให้ผู้เรียนทดลองการเช่ือมไมโครคอนโทรลเลอร์กับอุปกรณ์ภายนอกด้วยบอร์ด
Arduino Uno R3 โดยใชเ้ วลา 180 นาที
จดุ ประสงคเ์ ชิงพฤติกรรม
1. สามารถควบคุมหลอดไฟ LED ไดถ้ ูกตอ้ ง
2. สามารถควบคมุ หลอดแสดงผล LED 7-Segment ไดถ้ กู ตอ้ ง
3. สามารถแกป้ ัญหาในการทางานของบอรด์ Arduino Uno R3 ได้
4. สามารถต่อใชง้ านและอพั โหลดโปรแกรมใหก้ บั บอรด์ Arduino Uno R3 ได้
อปุ กรณ์การทดลอง 1 โปรแกรม
1 เสน้
1. โปรแกรม Arduino IDE 1 บอรด์
2. สายโหลด USB Arduino Uno R3 1 ชดุ
3. บอรด์ Arduino Uno R3 1 เครอ่ื ง
4. สายต่อวงจร 5 หลอด
5. เครอ่ื งคอมพวิ เตอร์
6. LED 5 ตวั
7. Resistor 220Ω
การทดลองที่ 6.1 โปรแกรมไฟว่ิง LED 5 ดวง
ขนั้ ตอนการทดลอง
1. เปิดโปรแกรม Arduino IDE
2. ต่อวงจรดงั รปู ท่ี 6.15
3. เขยี นโปรแกรมและอพั โหลดโปรแกรม
รปู ท่ี 6.15 การเชอ่ื มต่อบอรด์ Arduino รว่ มกบั หลอดไฟ LED สาหรบั การทดลองท่ี 6.1
หน่วยท่ี 6 : การเช่ือมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 127
Code
รปู ที่ 6.16 โปรแกรมสาหรบั การทดลองท่ี 6.1
ประเมินผลการทดลอง
1. สามารถเขยี นโปรแกรมและต่อวงจรไดถ้ กู ตอ้ ง 10 คะแนน
2. สามารถทดสอบและอธบิ ายการทางานไดถ้ ูกตอ้ ง 10 คะแนน
รวมคะแนนภาคปฏิบตั ิ ……………………… คะแนน
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ
เอกสารประกอบการสอน วชิ า ไมโครคอนโทรลเลอร์ 128
การทดลองที่ 6.2 การเชื่อมต่อไมโครคอนโทรเลอรก์ บั หลอดไฟ 7-Segment
แสดงเลข 0 – 9
ขนั้ ตอนการทดลอง
1. เปิดโปรแกรม Arduino IDE
2. ต่อวงจรดงั รปู ท่ี 6.17
3. เขยี นโปรแกรมและอพั โหลดโปรแกรม
รปู ท่ี 6.17 การเชอ่ื มต่อบอรด์ Arduino รว่ มกบั หลอดแสดงผล 7-Segment
สาหรบั การทดลองท่ี 6.2
Code
รปู ท่ี 6.18 โปรแกรมสาหรบั การทดลองท่ี 6.2 10 คะแนน
ประเมินผลการทดลอง 10 คะแนน
………………… คะแนน
1. สามารถเขยี นโปรแกรมและต่อวงจรไดถ้ ูกตอ้ ง
2. สามารถทดสอบและอธบิ ายการทางานไดถ้ กู ตอ้ ง
รวมคะแนนภาคปฏิบตั ิ
หน่วยที่ 6 : การเชื่อมต่อไมโครคอนโทรลเลอรก์ บั อปุ กรณ์เอาตพ์ ตุ