W przypadku diod LED oczywistym sposobem na osiągnięcie tego jest uzyskanie wyjścia dla każdego wiersza i każdej kolumny szachownicy: łącznie 8 + 8 = 16 pinów. Anody byłyby podłączone do drutów rzędowych, a katody do drutu kolumnowego. Dla diody LED, którą chcesz zapalić, ustaw jej przewód anodowy dodatni (logika 1), a drut katodowy ujemny (logika 0), utrzymując pozostałe w odwrotnym stanie (tak aby pozostałe diody LED miały neutralne lub odwrócone odchylenie).
Przyjmuję tutaj założenie, że mikrokontroler zapewnia wystarczająco wysokie / niskie napięcie, abyś mógł mostkować diody LED między sobą. Jeśli tak nie jest, będziesz potrzebował tranzystora lub bufora dla każdej linii. Przy zasilaniu 5 V jest szczelny, biorąc pod uwagę, że diody LED spadają o około 2 V i chcesz rozsądnego spadku napięcia na oporniku ograniczającym prąd (pamiętaj, że musisz je zainstalować tylko w liniach rzędowych lub kolumnowych, a nie w obu).
Jeśli Twoje wyjścia są w stanie tri (to znaczy, oprócz logiki 0 i logiki 1, można je ustawić na stan wysokiej impedancji, być może przez tymczasowe skonfigurowanie ich jako wejścia), możesz uzyskać sprytne i użyć siatki 4x8 z diodami LED połączone parami antyrównoległymi. Ważne jest, aby ustawić nieużywane wyjścia na wysoką impedancję w tym ustawieniu, w przeciwnym razie zapalą się niechciane diody LED.
W obu przypadkach będziesz musiał pomyśleć o bieżącym losowaniu i czy można zaryzykować ryzyko błędu programowego zapalającego wszystkie diody LED w jednym rzędzie (co, jeśli nie zostanie to uwzględnione, może spowodować przetężenie linii wiersza mikrokontrolera) .)
Sprawa czujników jest bardziej skomplikowana. Zakładam, że używasz czujników rezystancyjnych, chociaż fototranzystory niekoniecznie gwarantują, że będą przewodzić tylko w jednym kierunku.
Możesz użyć tych samych 8-rzędowych wyjść, których używasz do oświetlania diod LED, ale będziesz potrzebować 8 wejść kolumnowych przeznaczonych do wykrywania. Bez wątpienia zobaczysz obwody dla takich manipulatorów . Pamiętaj, że są one zaprojektowane tak, aby naciskać tylko jeden klawisz na raz . Jeśli użytkownik naciśnie 1,3,7 i 9 jednocześnie, klawiatura nie będzie w stanie wykryć, czy użytkownik zwolni jeden z tych czterech klawiszy, ponieważ nadal istnieje bieżąca ścieżka przez pozostałe trzy przełączniki.
Rozwiązaniem stosowanym w klawiaturach muzycznych (które są zaprojektowane tak, aby więcej niż jeden element matrycy przewodził w tym samym czasie) jest dioda połączona szeregowo z każdym przełącznikiem.
Innym rozwiązaniem byłoby kupienie czterech układów scalonych z dekoderem 4 do 16 z wyjściami z otwartym kolektorem (lub z otwartym odpływem, jeśli używane są układy MOSFET), takich jak: http://www.unicornelectronics.com/ftp/Data%20Sheets/74159.pdf Otwarty kolektor oznacza, że wyjścia układu scalonego będą jedynie pochłaniać prąd, a nie źródło. W ten sposób możesz podłączyć 16 czujników do 16 wyjść układu, a pozostałe końcówki połączyć razem z rezystorem podciągającym (tutaj również podłączymy ADC). Sprowadzasz jedno wyjście niskie (przewodzące), a pozostałe 15 pozostaje wysokie (nieprzewodzące). Jest to przeciwieństwo standardowego wyjścia logicznego, gdzie pozostałe 15 wyjść wylewałoby prąd do wspólnego punktu.
Wejście tych układów scalonych jest 4-bitowe binarnie, aby wybrać jedno z 16 wyjść, ale mają również dodatkowe wejście, aby włączyć / wyłączyć układ. W ten sposób możesz potencjalnie mieć szereg 64 zlewozmywaków z otwartym kolektorem, połączonych z 64 czujnikami, z innymi końcami czujników wspólnymi dla jednego rezystora podciągającego i przetwornika analogowo-cyfrowego. W tym celu potrzebujesz 8 wyjść na mikrokontrolerze: cztery, aby pobrać sygnały wyboru od 4 do 16 (wspólne dla wszystkich czterech układów) i cztery, aby pobrać sygnały aktywacji (po jednym dla każdego układu).
EDYCJA: od 3 do 8 dekoderów (zwanych również 1 z 8 = 1 linia z 8) wydaje się być bardziej dostępnych niż 4 do 16, ale 8 układów scalonych jest znacznie bardziej bałaganiarskich niż 4. Innym typem układów scalonych, które mogą być przydatne, jest licznik ósemkowy (i jego bardziej popularny kuzyn licznik dekady , który można skonfigurować jako licznik ósemkowy, podłączając jego dziewiąty sygnał wyjściowy do linii resetowania). Wymagają one szeregowego impulsu, aby przejść z jednego wyjścia do drugiego, więc potrzebowałby mniej Piny we / wy mikrokontrolera niż układy scalone dekodera. Zazwyczaj mają dodatkowe wejścia do resetowania i włączania. Istnieją również układy scalone zwane rejestrami przesuwnymi , które są dostępne w dwóch typach: jeden do konwersji serii na równoległy, a drugi do konwersji równoległej na szereg. Wreszcie sąbufory , które można umieścić między Rasberry Pi a szachownicą, aby Pi nie uległo zniszczeniu w przypadku przetężenia. Wszystkie te mogą być przydatne w obwodach multipleksujących.