Jeśli chcesz po prostu stworzyć klawiaturę, bez korzystania z Makey Makey, możesz to zrobić za pomocą funkcji GPIO Raspberry Pi. Ale, jak skomentowano wcześniej, Raspberry Pi nie ma wystarczającej liczby pinów, aby klawiatura była naprawdę przydatna.
Jeśli jednak chcesz dodać 2 układy scalone, możesz stworzyć klawiaturę z tak dużą ilością klawiszy, że będziesz miał problem z wymyśleniem funkcji dla każdego klawisza!
Moją sugestią jest podłączenie 2 układów scalonych I2C do szyny I2C na Raspberry Pi i użycie ich do stworzenia własnej matrycy skanowania.
Jeśli używasz jednego PCF8574, masz 8 styków we / wy, a jeśli masz PCF8575, masz nawet 16 styków we / wy. Łącząc, możesz uzyskać matrycę skanowania:
- 64 klucze: (2x PCF8574)
- 128 klawiszy: (1x PCF8574 i 1x PCF8575)
- 256 klawiszy: (2x PCF8575)
Zawsze musisz użyć jednego z nich jako danych wyjściowych, a drugiego jako danych wejściowych. Na wyjściu pozwalasz nieco „przejść” od bitu 0 do bitu n (7 lub 15), są to kolumny macierzy. Z drugiej strony stale odczytujesz wartość danych wejściowych, a są to rzędy macierzy. Kombinacja tego, który bit wyjściowy jest aktywny i który bit wejściowy ma wartość „1”, jest naciskany.
W rzeczywistości tworzenie macierzy jest najbardziej pracochłonne i podczas gdy na niej jesteś, nie zapomnij dodać diody po każdym przełączniku, który umieścisz w matrycy, ta dioda (normalna 1N4148 da sobie radę) musi być umieszczona z anodą do przełącznika i katody do wiersza rzędu. Spadek napięcia o 0,6 V na tej diodzie nie powinien stanowić problemu, a pozostałe (3,3 V-0,6 V) 2,7 V powinny nadal być logicznym „1”.
Powodem tego obciążenia diod jest to, że zapobiegnie to zjawisku zjawy i maskowania kluczy. Zjawy to efekt, że jeśli naciśniesz więcej niż trzy klawisze jednocześnie, możliwe jest, że zostanie zinterpretowany jako zupełnie inny klawisz, ponieważ więcej wierszy będzie miało logiczne „1”. Maskowanie to efekt polegający na tym, że po naciśnięciu wielu klawiszy i zwolnieniu klawisza (w niektórych sytuacjach) nie zostanie on wykryty, ponieważ wiersz dla tego klawisza jest nadal logicznym „1”.
Zdjęcie pokazuje przykład zjawy, przyciski A, B, D są wciśnięte, a poza wierszem 1 (dla przycisku A) również wiersz 2 (dla przycisku C) jest wysoki, w tej chwili kolumna 1 jest aktywna, co jest nieprawidłowe.
Po całej przygodzie sprzętowej musisz napisać lub dostosować sterownik jądra, aby faktycznie używać klawiatury w systemie Linux. Dobrym punktem wyjścia może być ten link: Sterownik do klawiszy w ekspanderze ICA TCA6416 I2C , jest to podobny pomysł, ale używa tylko 16-klawiszowej klawiatury.
Mam nadzieję, że to ci trochę pomoże.