เมื่อปุ่มเชื่อมต่อในการกำหนดค่านั้นอินพุตคือสิ่งที่เรียกว่าลอยซึ่งหมายความว่าไม่ใช่ 0 หรือ 1 เมื่อกดปุ่มมันจะเชื่อมต่อกับกราวด์ดังนั้นมันจึงเป็น 0 แต่เมื่อไม่กดลง เราไม่รู้ค่าของพิน
ตัวต้านทานดึงขึ้น
เราจำเป็นต้องรวมสิ่งที่เรียกว่าตัวต้านทาน "pull-up" เพื่อดึงสัญญาณขึ้นสู่ลอจิก 1 เมื่อไม่ได้กดปุ่ม
ภาพจาก Sparkfun
สิ่งนี้หมายความว่าเมื่อไม่กดปุ่ม Arduino จะอ่านลอจิก 1 เมื่อกดปุ่มกระแสจะไหลผ่านตัวต้านทานไปยังกราวด์และ Arduino จะอ่านลอจิก 0
ตัวต้านทานแบบดึงขึ้นภายใน
Arduino ยังมีตัวต้านทานแบบดึงขึ้นภายในดังนั้นคุณไม่จำเป็นต้องเพิ่มส่วนประกอบพิเศษในวงจรของคุณ มีสองวิธีในการใช้สิ่งนี้
คุณเคยต้องทำเช่นนี้:
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
ตอนนี้เราสามารถทำได้ง่ายๆในหนึ่งบรรทัด:
pinMode(pin, INPUT_PULLUP);
สิ่งนี้จะช่วยให้ตัวต้านทานดึงขึ้น 20k บนพินนั้น อินพุตจะไม่ลอยเมื่อไม่ได้กดปุ่ม
หมายเหตุ:ใช้งานได้เฉพาะเมื่อปลายอีกด้านเชื่อมต่อกับกราวด์