3.9. สวิตช์และตัวต้านทานดึง¶
GPIO output ขับเคลื่อนฮาร์ดแวร์ภายนอก GPIO input คือสิ่งตรงข้าม: กล้องอ่านแรงดันไฟฟ้าบนพินและรายงานเป็น 0 หรือ 1 อุปกรณ์ input ที่ง่ายที่สุดคือสวิตช์ -- และการทำให้สามารถอ่านได้อย่างน่าเชื่อถือต้องการอิเล็กทรอนิกส์หนึ่งชิ้นเพิ่มเติมนอกจากตัวสวิตช์เอง
3.9.1. สวิตช์และ input ที่ลอยตัว¶
สวิตช์คือหน้าสัมผัสทางกล: โลหะสองชิ้นที่สัมผัสกันเมื่อสวิตช์ปิดและแยกออกเมื่อเปิด ในทางไฟฟ้าคืออุปกรณ์ทั้งหมด ไม่มีแหล่งแรงดันไฟฟ้าอยู่ภายใน สวิตช์เพียงอย่างเดียวให้เพียง "เชื่อมต่อ" หรือ "ตัดการเชื่อมต่อ"
การต่อสายสวิตช์โดยตรงระหว่างพิน GPIO และกราวด์หมายความว่าพินนั้น:
ที่ 0 V เมื่อสวิตช์ปิด (ถูกต่อสายกับกราวด์แล้ว)
ลอยตัว เมื่อสวิตช์เปิด (ถูกต่อกับอะไรก็ไม่ได้)
พินที่ลอยตัวไม่มีแรงดันไฟฟ้าที่กำหนด การอ่าน input จะอ่านค่าใดก็ตามที่อยู่ใกล้เคียง -- การรบกวนจากสัญญาณใกล้เคียง สัญญาณรบกวนจากแหล่งจ่ายไฟ แม้แต่ไฟฟ้าสถิตจากนิ้วมือที่อยู่ใกล้สาย value() ส่งคืนการผสมของ 0 และ 1 ที่คาดเดาไม่ได้หลายครั้งต่อวินาที
3.9.2. ตัวต้านทานดึงขึ้นและดึงลง¶
วิธีแก้ไขคือตัวต้านทานดึง: ตัวต้านทานที่มีค่าสูง (10 kΩ ถึง 100 kΩ เป็นค่าทั่วไป) ที่ยึด input กับราวที่รู้จักเมื่อสวิตช์เปิด
การกำหนดค่าดึงขึ้น (ซ้าย) และดึงลง (ขวา) สำหรับการ input ของสวิตช์¶
ดึงขึ้น. ตัวต้านทานยึด input กับราวแหล่งจ่ายไฟ เมื่อสวิตช์เปิด กระแสเล็กน้อยจะไหลผ่านตัวต้านทานและพินอ่านค่าสูง เมื่อสวิตช์ปิด มันจะลัดวงจรพินไปยังกราวด์; พินอ่านค่าต่ำ ตัวต้านทานจำกัดกระแสที่จะไหลจากแหล่งจ่ายไฟไปยังกราวด์ผ่านสวิตช์ที่ปิด
ดึงลง. ภาพสะท้อน: ตัวต้านทานยึด input กับกราวด์ และสวิตช์เชื่อมต่อกับแหล่งจ่ายไฟ เปิดอ่านค่าต่ำ ปิดอ่านค่าสูง
การดึงขึ้นเป็นแนวทางที่พบบ่อยกว่า -- ปุ่ม "active low" MCU เองมีตัวต้านทานดึงขึ้นและดึงลงในตัวที่สามารถเปิดใช้งานได้ด้วย Pin.PULL_UP หรือ Pin.PULL_DOWN ซึ่งลบตัวต้านทานภายนอกออกทั้งหมด