หน่วยที่ 5
Arduino กับพอร์ตดิจิตอลอินพุต
1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino
ตัวอย่างอุปกรณ์อินพุตได้แก่ สวิตช์หรือปุ่มกด สัญญาณอินพุตที่ต่อเข้าพอร์ตไมโครคอนโทรลเลอร์ Arduino มีการเปลี่ยนแปลงสถานะอยู่ 2 สภาวะ คือ ลอจิก “1” กับลอจิก “0”
Button Switch
Slide Switch
DIP Switch
Rotary Switch
Toggle Switch
Micro Switch
1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino
การต่อสวิตช์เข้าพอร์ต Arduino สามารถต่อใช้งานได้ 2 แบบ ได้แก่
1. การต่อสวิตช์แบบแอคทีฟ ไฮท์ (Active High) เป็นการต่อจากแหล่งจ่ายไฟผ่านสวิตช์และตัวต้านทานลงกราวด์ จุดต่อระหว่างขาสวิตช์กับตัวต้านทานต่อเข้าที่พอร์ตไมโครคอนโทรลเลอร์ Arduino ลักษณะการต่อตัวต้านทานแบบนี้เรียกว่า การต่อตัวต้านทานแบบพูลดาวน์ (Pull- down resistor)
1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino
2. การต่อสวิตช์แบบแอคทีฟ โลว์ (Active low) เป็นการต่อจากแหล่งจ่ายไฟผ่านตัวต้านทานและผ่านสวิตช์ลงกราวด์ จุดต่อระหว่างขาตัวต้านทานกับสวิตช์ต่อเข้าพอร์ตดิจิตอลของไมโครคอนโทรลเลอร์ Arduino ลักษณะการต่อตัวต้านทานแบบนี้เรียกว่า การต่อตัวต้านทานแบบพูลอัฟ
1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino
การต่อสวิตช์สวิตช์แบบแอคทีฟ ไฮท์ (Active High) หรือแบบแอคทีฟ โลว์ (Active low) มีปัญหาที่เกิดขึ้นในการใช้สวิตช์แบบหน้าสัมผัสคือ ขณะกดสวิตช์และปล่อยสวิตช์นั้นเกิดการแตะกันของหน้าสัมผัสหลายๆ ครั้งเกิดขึ้น
ขณะกดสวิตช์
ขณะปล่อยสวิตช์
2. การแก้ปัญหาด้วยฮาร์ดแวร์ ดีเบราว์ (Hardware Debouncing)
วงจรการแก้ปัญหาด้วยฮาร์ดแวร์ ดีเบราว์
3. การแก้ปัญหาด้วยซอฟแวร์ ดีเบราว์ (Softwave Debouncing)
การแก้ปัญหาด้วยวิธีนี้สามารถทำได้ง่ายที่สุดคือ เมื่อโปรแกรมทำ การตรวจสอบว่าสวิตช์ถูกกดแล้ว ให้ทำการหน่วงเวลาออกไปประมาณ 10 มิลลิวินาที
คำสั่ง digitalRead( ); เป็นการอ่านค่าสถานะของตำแหน่งพอร์ตดิจิตอลที่ต้องการอ่าน ตั้งแต่พอร์ต 0 ถึง 13 ว่ามีค่าเป็น HIGH หรือ LOW
รูปแบบคำสั่ง
digitalRead (ตำแหน่งพอร์ต)