หากคุณต้องการสร้างแป้นพิมพ์โดยไม่ใช้ Makey Makey คุณสามารถทำได้โดยใช้ฟังก์ชัน GPIO ของ Raspberry Pi แต่เช่นเดียวกับที่แสดงความคิดเห็นก่อนหน้านี้ Raspberry Pi ไม่มีพินเพียงพอที่จะทำให้แป้นพิมพ์ที่มีประโยชน์จริง ๆ
อย่างไรก็ตามหากคุณยินดีที่จะเพิ่ม 2 IC ของคุณสามารถทำให้ตัวเองแป้นพิมพ์ด้วยปุ่มมากมายที่คุณจะมีปัญหาที่จะเกิดขึ้นกับฟังก์ชั่นสำหรับทุกปุ่ม!
คำแนะนำของฉันคือการเชื่อมต่อ 2 I2C ของ IC กับบัส I2C บน Raspberry Pi และใช้สิ่งเหล่านั้นเพื่อสร้างเมทริกซ์สแกนของคุณเอง
หากคุณใช้ PCF8574 หนึ่งตัวคุณจะมี 8 I / O พินให้ใช้งานถ้าคุณได้ PCF8575 คุณก็จะมี 16 I / O พิน โดยการรวมแล้วคุณจะได้รับเมทริกซ์สแกนของ:
- 64 ปุ่ม: (2x PCF8574)
- 128 ปุ่ม: (1x PCF8574 และ 1x PCF8575)
- 256 ปุ่ม: (2x PCF8575)
คุณต้องใช้หนึ่งในนั้นเป็นเอาต์พุตและอีกอันใช้เป็นอินพุต บนเอาต์พุตคุณปล่อยให้ 'เดิน' เล็กน้อยจากบิต 0 ถึงบิต n (7 หรือ 15) นี่คือคอลัมน์ของเมทริกซ์ คุณอ่านค่าของอินพุตอย่างต่อเนื่องและนี่คือแถวของเมทริกซ์ การรวมกันของบิตเอาต์พุตใดที่แอ็คทีฟและอินพุตบิตคือ '1' คือคีย์ที่ถูกกด
จริง ๆ แล้วการสร้างเมทริกซ์นั้นใช้งานได้ดีที่สุดและในขณะที่คุณอยู่ที่นี่อย่าลืมที่จะเพิ่มไดโอดหลังจากเปลี่ยนทุกครั้งที่คุณใส่ในเมทริกซ์ไดโอดนี้ (ปกติ 1N4148 จะทำได้ดี) จะต้องวางไว้กับขั้วบวก เพื่อสวิทช์และแคโทดไปยังบรรทัดแถว แรงดันไฟฟ้าตกที่ 0.6V สำหรับไดโอดนี้ไม่น่าจะมีปัญหาส่วนที่เหลือ (3.3V-0.6V) 2.7V ยังคงเป็นตรรกะ '1'
เหตุผลในการโหลดไดโอดรถบรรทุกนี้คือมันจะป้องกันสิ่งต่าง ๆ เช่นโกสต์และการปิดบังคีย์ Ghosting เป็นเอฟเฟกต์ที่ถ้าคุณกดปุ่มมากกว่าสามปุ่มในเวลาเดียวกันมันเป็นไปได้ที่มันจะถูกตีความว่าเป็นคีย์ที่แตกต่างกันโดยสิ้นเชิงเพราะแถวมากขึ้นจะมีตรรกะ '1' การปิดบังเป็นเอฟเฟกต์ที่หากคุณกดหลาย ๆ ปุ่มแล้วปล่อยปุ่มนี้จะไม่สามารถตรวจพบได้ (ในบางสถานการณ์) เนื่องจากแถวสำหรับคีย์นั้นยังคงเป็นตรรกะ '1'
รูปภาพแสดงตัวอย่างของ ghosting ปุ่ม A, B, D ถูกกดและนอกเหนือจากแถว 1 (สำหรับปุ่ม A) และแถวที่ 2 (สำหรับปุ่ม C) สูงในขณะที่คอลัมน์ 1 ทำงานซึ่งไม่ถูกต้อง
หลังจากการผจญภัยของฮาร์ดแวร์ทั้งหมดคุณต้องเขียนหรือดัดแปลงไดรเวอร์เคอร์เนลเพื่อใช้แป้นพิมพ์ภายใต้ linux จุดเริ่มต้นที่ดีอาจเป็นลิงค์นี้:ไดร์เวอร์สำหรับคีย์บนตัวขยาย TCA6416 I2C IOนี่เป็นแนวคิดที่คล้ายกัน แต่ใช้คีย์แพด 16 คีย์เท่านั้น
หวังว่านี่จะช่วยคุณได้เล็กน้อย