Page 199 - เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น
P. 199
เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์เบื้องต้น 15
รูปที่ 4.4 การต่อวงจร RC อินติเกรเตอร์ เพื่อแก้ไขปัญหาสัญญาณรบกวนจากการกดสวิตช์
หรือถ้าแก้โดยใช้ไมโครคอนโทรลเลอร์ จะสามารถแก้ไขได้ด้วยกระบวนการทางซอฟต์แวร์ โดยเขียน
โปรแกรมให้ตรวจจับการเปลี่ยนแปลงระดับลอจิกของสวิตช์ ถ้าพบว่ามีการเริ่มกดสวิตช์ ก็คือระดับลอจิกเปลี่ยน
จาก “1” เป็น “0” โปรแกรมจะหน่วงเวลารอจนเลยช่วงเวลาเกิดเบาซ์ของสวิตช์ เมื่อเลยเวลาแล้วให้ท าการอ่านค่า
สถานะของสวิตช์อีกครั้งถ้ายังคงเป็น “0” แสดงว่ากดสวิตช์สมบูรณ์แล้ว
ระยะเวลาที่ต้องหน่วงเวลาหาได้จากการใช้ออสซิลโลสโคปวัดระดับสัญญาณ หรือใช้การทดลองป้อนค่า
หน่วงเวลาแล้วปรับค่าจนกระทั่งได้ค่าที่แก้ปัญหาการเบาวซ์ของสวิตช์ได้อย่างสมบูรณ์ ในโปรแกรมทดลองที่ 4.5
ได้ทดลองโดยใช้ค่าของการหน่วงเวลาเท่ากับ 10 มิลลิวินาที ซึ่งสามารถเปลี่ยนได้ที่บรรทัด
#define Debounce 10
โปรแกรมที่ 4.5
ไฟล์ DebounceSW.ino โปรแกรมภาษา C ของ Arduino อ่านค่าสวิตช์เพื่อควบคุม LED แบบมีการ
แก้สัญญาณรบกวนจากการกดสวิตช์หรือดีเบาซ์
/*
* Read input from push button for control status of LED.
* Change operation of push button to togle switch.
* File : DebouncedSW.ino */
#define IN_PIN 7 // the number of the input pin
#define OUT_PIN 11 // the number of the output pin
#define Debounce 10 // debounce time = 10 ms
int state = HIGH; // the current state of the output pin
int reading; // the current reading from the input pin
int previous = HIGH; // the previous reading from the input pin
หน่วยที่ 4 ฟังก์ชั่นพื้นฐานของ Arduino และการควบคุมหลอดไฟ LED เรียบเรียงโดยครูทันพงษ์ ภู่รักษ์