Niedawno kupiłem Makey Makey (oparty na Arduino Leonardo / ATMega32u4), mając nadzieję na zbudowanie pełnej klawiatury typu steampunk USB z niektórych metalowych części. Przed przyjazdem ponownie przeczytałem szczegóły i zdałem sobie sprawę, że ma tylko 18 możliwych danych wejściowych, więc klawisze 85+ nie będą działać. Czy ktoś ma pomysły, jak stworzyć taką bestię, być może z Raspberry Pi? (który łączy się dość łatwo, z poprzednich postów )
15
Odpowiedzi:
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:
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.
źródło
Jeśli chcesz stworzyć pełną klawiaturę do pisania, prawdopodobnie najlepiej byłoby skorzystać z układu scalonego z klawiatury USB. Albo zatrzymaj płytkę drukowaną głęboko w twoim systemie, gdzie jej nie widać, i poprowadź przewody do przełączników, albo stwórz coś niestandardowego przy użyciu tej samej matrycy.
Jeśli naprawdę potrzebujesz zmienić matrycę elektryczną, być może będziesz musiał stworzyć własny projekt od zera, ale w przeciwnym razie nie jest to naprawdę konieczne.
Nawet z niestandardową płytą nadal możesz uzyskać coś, co wylicza i działa jak klawiatura USB, eliminując potrzebę niestandardowych sterowników.
źródło