1 of 7

หน่วยที่ 5

Arduino กับพอร์ตดิจิตอลอินพุต

2 of 7

1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino

ตัวอย่างอุปกรณ์อินพุตได้แก่ สวิตช์หรือปุ่มกด สัญญาณอินพุตที่ต่อเข้าพอร์ตไมโครคอนโทรลเลอร์ Arduino มีการเปลี่ยนแปลงสถานะอยู่ 2 สภาวะ คือ ลอจิก “1” กับลอจิก “0”

Button Switch

Slide Switch

DIP Switch

Rotary Switch

Toggle Switch

Micro Switch

3 of 7

1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino

การต่อสวิตช์เข้าพอร์ต Arduino สามารถต่อใช้งานได้ 2 แบบ ได้แก่

1. การต่อสวิตช์แบบแอคทีฟ ไฮท์ (Active High) เป็นการต่อจากแหล่งจ่ายไฟผ่านสวิตช์และตัวต้านทานลงกราวด์ จุดต่อระหว่างขาสวิตช์กับตัวต้านทานต่อเข้าที่พอร์ตไมโครคอนโทรลเลอร์ Arduino ลักษณะการต่อตัวต้านทานแบบนี้เรียกว่า การต่อตัวต้านทานแบบพูลดาวน์ (Pull- down resistor)

4 of 7

1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino

2. การต่อสวิตช์แบบแอคทีฟ โลว์ (Active low) เป็นการต่อจากแหล่งจ่ายไฟผ่านตัวต้านทานและผ่านสวิตช์ลงกราวด์ จุดต่อระหว่างขาตัวต้านทานกับสวิตช์ต่อเข้าพอร์ตดิจิตอลของไมโครคอนโทรลเลอร์ Arduino ลักษณะการต่อตัวต้านทานแบบนี้เรียกว่า การต่อตัวต้านทานแบบพูลอัฟ

5 of 7

1. การต่อสวิตช์กับไมโครคอนโทรลเลอร์ Arduino

การต่อสวิตช์สวิตช์แบบแอคทีฟ ไฮท์ (Active High) หรือแบบแอคทีฟ โลว์ (Active low) มีปัญหาที่เกิดขึ้นในการใช้สวิตช์แบบหน้าสัมผัสคือ ขณะกดสวิตช์และปล่อยสวิตช์นั้นเกิดการแตะกันของหน้าสัมผัสหลายๆ ครั้งเกิดขึ้น

ขณะกดสวิตช์

ขณะปล่อยสวิตช์

6 of 7

2. การแก้ปัญหาด้วยฮาร์ดแวร์ ดีเบราว์ (Hardware Debouncing)

วงจรการแก้ปัญหาด้วยฮาร์ดแวร์ ดีเบราว์

7 of 7

3. การแก้ปัญหาด้วยซอฟแวร์ ดีเบราว์ (Softwave Debouncing)

การแก้ปัญหาด้วยวิธีนี้สามารถทำได้ง่ายที่สุดคือ เมื่อโปรแกรมทำ การตรวจสอบว่าสวิตช์ถูกกดแล้ว ให้ทำการหน่วงเวลาออกไปประมาณ 10 มิลลิวินาที

คำสั่ง digitalRead( ); เป็นการอ่านค่าสถานะของตำแหน่งพอร์ตดิจิตอลที่ต้องการอ่าน ตั้งแต่พอร์ต 0 ถึง 13 ว่ามีค่าเป็น HIGH หรือ LOW

รูปแบบคำสั่ง

digitalRead (ตำแหน่งพอร์ต)