Для светодиодов очевидный способ сделать это - иметь выход для каждой строки и каждого столбца шахматной доски: всего 8 + 8 = 16 пинов. Аноды должны быть соединены с проводами ряда, а катоды - с проводом колонны. Для светодиода, который вы хотите зажечь, вы должны сделать его анодный провод положительным (логика 1), а его катодный провод - отрицательным (логика 0), в то же время оставив остальные в обратном состоянии (чтобы оставшиеся светодиоды имели нейтральное или обратное смещение).
Здесь я предполагаю, что микроконтроллер дает достаточно высокое / низкое напряжение, чтобы вы могли соединять светодиод от одного к другому. Если это не так, вам понадобится транзистор или буфер для каждой линии. С напряжением 5 В он напряженный, учитывая, что светодиод падает примерно на 2 В, и вам нужно разумное падение напряжения на резисторе, ограничивающем ток (обратите внимание, что вам нужно устанавливать их либо в линии строк, либо в строки столбцов, а не в обе).
Если ваши выходы находятся в трех состояниях (то есть, в дополнение к логике 0 и логике 1, они могут быть установлены в состояние высокого импеданса, возможно, путем временной настройки их в качестве входов), тогда вы можете стать умнее и использовать сетку 4x8 со светодиодами. соединены в антипараллельные пары. В этой настройке важно установить неиспользуемые выходы на высокое сопротивление, иначе нежелательные светодиоды загорятся.
В любом случае вам придется подумать о текущем потреблении тока и о том, допустимо ли рисковать возможностью программной ошибки при одновременном освещении всех светодиодов в строке (что, если не учитывать, может привести к перегрузке по току в этой строке микроконтроллера) .)
Корпус датчиков более сложный. Я предполагаю, что вы используете резистивные датчики, хотя фототранзисторы не обязательно должны работать только в одном направлении.
Вы можете использовать те же 8 рядных выходов, которые вы используете для освещения своих светодиодов, но вам понадобятся 8 входов столбцов, предназначенных для измерения. Вы, несомненно, видели схемы для таких клавиатур . Имейте в виду, что они предназначены только для одновременного нажатия одной клавиши . Если пользователь нажимает 1,3,7 и 9 вместе, клавиатура не может обнаружить, отпускает ли пользователь какую-либо одну из этих четырех клавиш, потому что все еще существует текущий путь через три других переключателя.
Решение, используемое на музыкальных клавиатурах (которые рассчитаны на одновременное использование более одного элемента матрицы), состоит в том, чтобы последовательно соединить диод с каждым выключателем.
Другое решение состоит в том, чтобы купить четыре ИС с 4 по 16 ИС с выходами с открытым коллектором (или с открытым стоком, если используются ИС с МОП-транзистором), например: http://www.unicornelectronics.com/ftp/Data%20Sheets/74159.pdf Открытый коллектор означает, что выходы микросхемы будут только потреблять ток, а не его источник. Таким образом, вы можете подключить 16 датчиков к 16 выходам микросхемы и объединить другие концы вместе с нагрузочным резистором (здесь вы также должны подключить свой АЦП). Один выход получается низким (проводящий), а остальные 15 остаются высокими (непроводящий). Это в отличие от стандартного логического выхода, где остальные 15 выходов будут подавать ток в общую точку.
Вход для этих микросхем является 4-битным двоичным для выбора одного из 16 выходов, но они также имеют дополнительный вход для включения / выключения микросхемы. Таким образом, вы могли бы иметь массив из 64 приемников с открытым коллектором, подключенных к 64 датчикам, при этом все остальные датчики были бы объединены с одним нагрузочным резистором и аналого-цифровым преобразователем. Для этого вам понадобится 8 выходов на вашем микроконтроллере: четыре для приема сигналов выбора от 4 до 16 (общие для всех четырех микросхем) и четыре для приема сигналов разрешения (по одному для каждой микросхемы).
РЕДАКТИРОВАТЬ: от 3 до 8 декодеров (также называемых 1 из 8 = 1 строка из 8) кажутся более доступными, чем от 4 до 16, но 8 микросхем намного более грязные, чем 4. Другой тип микросхем, который может быть полезен, это восьмеричный счетчик (и его более распространенный кузен счетчик десятилетий , который можно настроить как восьмеричный счетчик, подключив его девятый выходной сигнал к линии сброса.) Для этого требуется последовательный импульс для перехода от одного выхода к следующему, поэтому потребуется меньше Выводы ввода / вывода на микроконтроллере, чем на микросхемах декодера. Обычно они имеют дополнительные входы для сброса и включения. Существуют также микросхемы, называемые сдвиговыми регистрами , которые доступны в двух типах: один для преобразования последовательных в параллельные, другой для преобразования параллельных в последовательные. Наконец, естьбуферы , которые вы можете поместить между Rasberry Pi и вашей шахматной доской, чтобы Pi не разрушался в случае перегрузки по току. Все это может быть полезно в схемах мультиплексирования.