สำหรับ LEDวิธีที่ชัดเจนในการทำเช่นนี้คือมีเอาต์พุตสำหรับแต่ละแถวและแต่ละคอลัมน์ของกระดานหมากรุก: รวม 8 + 8 = 16 พิน ขั้วบวกจะเชื่อมต่อกับสายลวดและขั้วลบกับสายคอลัมน์ สำหรับ LED ที่คุณต้องการให้แสงสว่างคุณจะทำให้ขั้วบวกเป็นบวก (ตรรกะ 1) และขั้วลบของลวดขั้วลบ (ตรรกะ 0) ในขณะที่รักษาแสงอื่นไว้ในสถานะย้อนกลับ (ดังนั้น LED ที่เหลือจะมีความเป็นกลางหรือกลับกัน)
ฉันตั้งสมมติฐานที่นี่ว่าไมโครคอนโทรลเลอร์ให้แรงดันสูง / ต่ำอย่างพอเหมาะสำหรับคุณที่จะสามารถเชื่อมต่อ LED จากที่หนึ่งไปยังอีกที่หนึ่ง หากไม่เป็นเช่นนั้นคุณจะต้องมีทรานซิสเตอร์หรือบัฟเฟอร์สำหรับแต่ละบรรทัด ด้วยการจ่ายไฟ 5V ให้แน่นพิจารณา LED จะลดลงประมาณ 2V และคุณต้องการแรงดันไฟฟ้าที่เหมาะสมกับตัวต้านทานที่ จำกัด ในปัจจุบันของคุณ (โปรดทราบว่าคุณต้องติดตั้งสิ่งเหล่านี้ในบรรทัดแถวหรือคอลัมน์คอลัมน์ไม่ใช่ทั้งสองอย่าง)
หากผลลัพธ์ของคุณคือสถานะไตร (นั่นคือนอกเหนือจากตรรกะ 0 และตรรกะ 1 พวกเขาสามารถตั้งค่าสถานะความต้านทานสูงอาจโดยการกำหนดค่าชั่วคราวเป็นอินพุต) จากนั้นคุณสามารถฉลาดและใช้ตาราง 4x8 กับ LED ของ เชื่อมต่อเป็นคู่กันแบบขนาน สิ่งสำคัญคือการตั้งค่าเอาต์พุตที่ไม่ได้ใช้เป็นความต้านทานสูงในการตั้งค่านี้มิฉะนั้น LED ที่ไม่ต้องการจะสว่างขึ้น
ไม่ว่าในกรณีใดคุณจะต้องคำนึงถึงการดึงในปัจจุบันและไม่ว่าจะเป็นที่ยอมรับได้หรือไม่ที่จะเสี่ยงต่อการเกิดข้อผิดพลาดของซอฟต์แวร์ที่ไฟ LED ทั้งหมดติดกันในคราวเดียว (ซึ่งหากไม่นับ .)
กรณีของเซ็นเซอร์มีความซับซ้อนมากขึ้น ฉันจะสมมติว่าคุณใช้เซ็นเซอร์ตัวต้านทานแม้ว่าตัวรับส่งสัญญาณจะไม่รับประกันว่าจะทำในทิศทางเดียวเท่านั้น
คุณสามารถใช้เอาต์พุต 8 แถวเดียวกับที่คุณใช้ส่องแสง LED ของคุณ แต่คุณจะต้องใช้อินพุตคอลัมน์ 8 คอลัมน์เพื่อการตรวจจับ ไม่ต้องสงสัยเลยว่าคุณเคยเห็นวงจรสำหรับแผงปุ่มกดแบบนี้ โปรดจำไว้ว่าสิ่งเหล่านี้ได้รับการออกแบบให้กดปุ่มครั้งละหนึ่งปุ่มเท่านั้น หากผู้ใช้กด 1,3,7 และ 9 ร่วมกันแป้นพิมพ์จะไม่สามารถตรวจพบว่าผู้ใช้ปล่อยปุ่มใดปุ่มหนึ่งในสี่ปุ่มเหล่านี้หรือไม่เนื่องจากยังมีเส้นทางปัจจุบันผ่านสวิตช์สามตัวอื่น ๆ
วิธีแก้ปัญหาที่ใช้กับคีย์บอร์ดดนตรี (ซึ่งได้รับการออกแบบให้มีมากกว่าหนึ่งองค์ประกอบของเมทริกซ์ที่ดำเนินการในแต่ละครั้ง) คือการมีไดโอดเป็นอนุกรมพร้อมสวิตช์ทุกสวิตช์
วิธีแก้ปัญหาอื่นก็คือการซื้อไอซีถอดรหัส 4 ถึง 16 ไอซีที่มีเอาต์พุตตัวเก็บรวบรวมแบบเปิด (หรือการระบายแบบเปิดหากใช้ MOSFET IC) เช่นนี้: http://www.unicornelectronics.com/ftp/Data%20Sheets/74159.pdf Open collector หมายความว่าเอาท์พุทของ IC จะจมเฉพาะในปัจจุบันไม่ใช่แหล่งที่มา ดังนั้นคุณสามารถเชื่อมต่อเซ็นเซอร์ 16 ตัวเข้ากับเอาต์พุต 16 ตัวของชิปและใช้ปลายอีกด้านร่วมกับตัวต้านทานแบบดึง (คุณจะเชื่อมต่อ ADC ของคุณที่นี่ด้วย) คุณนำเอาท์พุทต่ำหนึ่งตัว (กำลังดำเนินการ) และอีกอันที่ 15 ยังคงอยู่ในระดับสูง (ไม่เป็นตัวนำ) ซึ่งตรงกันข้ามกับเอาต์พุตลอจิกมาตรฐานโดยที่เอาต์พุตอีก 15 ตัวจะไหลลงสู่จุดร่วม
อินพุตของ IC เหล่านี้คือไบนารี่ 4 บิตเพื่อเลือกหนึ่งใน 16 เอาต์พุต แต่มีอินพุตเพิ่มเติมเพื่อเปิดใช้งาน / ปิดใช้งานชิป ดังนั้นคุณอาจมีชุดตัวเก็บรวบรวมแบบเปิด 64 ชุดซึ่งเชื่อมต่อกับเซ็นเซอร์ 64 ตัวพร้อมกับปลายอีกด้านของเซ็นเซอร์ทั้งหมดที่ใช้ร่วมกับตัวต้านทานแบบดึงขึ้นครั้งเดียวและตัวแปลงอนาล็อกเป็นดิจิตอล คุณจะต้องมีเอาต์พุตทั้งหมด 8 ตัวบนไมโครคอนโทรลเลอร์ของคุณสำหรับสิ่งนี้: สี่ตัวเพื่อรับสัญญาณแบบ 4-to-16 (ร่วมกับชิปทั้งสี่ตัว) และสี่ตัวเพื่อรับสัญญาณการเปิดใช้งาน (หนึ่งตัวสำหรับแต่ละชิป)
แก้ไข: ตัวถอดรหัส 3 ถึง 8 ตัว (เรียกอีกอย่างว่า 1 จาก 8 = 1 สายจาก 8) ดูเหมือนจะมีมากกว่า 4 ถึง 16 แต่ 8 IC ของมันยุ่งมากกว่า 4 แบบอื่นของ IC ซึ่งอาจเป็นประโยชน์คือตัวนับ octal (และลูกพี่ลูกน้องที่พบบ่อยมากขึ้นของตัวนับทศวรรษซึ่งสามารถกำหนดค่าเป็นตัวนับ octal โดยการเชื่อมต่อ ouput ที่เก้ากับบรรทัดการตั้งค่าใหม่) สิ่งเหล่านี้ต้องใช้ชีพจรอนุกรมเพื่อเลื่อนจากเอาต์พุตหนึ่งไปยังอีก I / O หมุดบนไมโครคอนโทรลเลอร์มากกว่าตัวถอดรหัส IC พวกเขามักจะมีอินพุตเพิ่มเติมสำหรับการรีเซ็ตและเปิดใช้งาน นอกจากนี้ยังมี IC ที่เรียกว่าshift registerซึ่งมีให้เลือกสองแบบ: แบบหนึ่งสำหรับการแปลงอนุกรมเป็นแบบขนานและอีกแบบหนึ่งสำหรับการแปลงแบบขนานเป็นอนุกรม ในที่สุดก็มีบัฟเฟอร์ซึ่งคุณสามารถใส่ระหว่าง Rasberry Pi และกระดานหมากรุกของคุณเพื่อให้ Pi ไม่ถูกทำลายในกรณีที่กระแสเกิน สิ่งเหล่านี้มีประโยชน์ในวงจรทวีคูณ