Нужна помощь в принципиальной схеме матрицы герконового выключателя 8*8
Я разрабатываю матрицу геркона 8*8, которая будет подключена к Arduino. Я использую Arduino Duemilanove. Я завершил часть матрицы, но не знаю, как соединить и где соединить другие элементы.
Я решил использовать следующие пункты:
- Arduino (Duemilanove)
- 64x Геркон
- 64x диод (1N4148)
- резисторы 20x (10K)
- 1x 74HC595
- 1x 74HC165
Я не знаю, где разместить резисторы и сдвиговые регистры и подключение от сдвиговых регистров к arduino. Мне нужна помощь в схеме. Пожалуйста, помогите мне со схемой.
Ссылка: https://mtifall10.wordpress.com/2010/12/10/magnetic-sensing-chessboard/
@, 👍1
Обсуждение2 ответа
Этот ответ основан на предыдущей версии вопроса
Не обязательно. Вы можете использовать внутренние подтягивания arduino, если вы готовы согласиться с тем, что чтение "1" означает, что там нет фрагмента, а чтение "0" означает, что фрагмент есть.
Подключите каждый провод к контакту на arduino. Если вы сделаете это с умом, шаг 3 станет довольно легким.
Вам необходимо настроить контакты, подключенные к буквенным проводам, в качестве входов с включенными съемниками. Установите также числовые контакты на входы, но без включенного подтягивания, чтобы они были плавающими. Числовые контакты будут последовательно установлены в качестве выходных, при этом значение будет низким (неактивные числовые контакты будут возвращены на входы). При этом вы можете прочитать контакты на проводах с буквами и построить изображение платы.
Пример
Вот как бы я это сделал, просто наивно взглянув на это. Я уверен, что есть более эффективные способы сделать это.
Проводка:
Настройте выходы и входы в настройках
:
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
pinMode(14, INPUT); //A0
pinMode(15, INPUT); //A1
pinMode(16, INPUT); //A2
pinMode(17, INPUT); //A3
pinMode(18, INPUT); //A4
Создайте функцию для сканирования строк в массив байтов:
void scan_rows(uint8_t *rows)
{
uint8_t i, j;
for (i = 0; i < 8; i++)
{
if (i)
{
pinMode(i+9, INPUT);
}
pinMode(i+10, OUTPUT);
digitalWrite(i+10, LOW);
for (j = 2; j <= 9; j++)
{
rows[i] <<= 1;
if (digitalRead(j))
rows[i] |= 1;
}
}
pinMode(18, INPUT);
}
Теперь просто вызывайте эту функцию с указателем на массив с 8 байтами в нем всякий раз, когда вам нужно сканировать плату. Каждый байт в массиве представляет одну из строк, а каждый бит представляет столбец.
[примечание модератора: Этот ответ появляется в этой теме в результате слияния]
Используйте 16 цифровых выводов ввода-вывода на Arduino. Те, которые подключены к a-h, должны быть сконфигурированы как ВЫХОДНЫЕ контакты. Те, которые подключены к 1-8, должны быть сконфигурированы в качестве входных контактов. Начните с низкого уровня всех выходов (a-h).
Вы проверяете наличие замкнутого переключателя в левом нижнем углу, сделав выходной вывод, подключенный к "а", ВЫСОКИМ, затем посмотрите на значение входного вывода, подключенного к "1". Если он высокий, то этот переключатель закрыт. Если он низкий, то этот переключатель открыт.
В то время как выход " a "ВЫСОК, вы можете проверить остальную часть левого столбца, посмотрев на входы" 2 " - "8".
Я не вижу никакой необходимости в резисторах или сдвиговых регистрах, но, возможно, ваш учитель что-то имел в виду.
ПРАВКА: Я вижу, что при использовании регистров сдвига вам нужен только один входной вывод и один ВЫХОДНОЙ вывод на Arduino. Я оставлю это для вас, чтобы вы поняли, так как я думаю, что дал достаточно, чтобы вы начали.
- Как использовать этот 3-контактный ползунковый переключатель?
- Кнопка с таймером переключения и функцией сброса времени + светодиод обратной связи
- digitalRead не читает входной контакт ESP8266-01
- Как подключить трехконтактный переключатель включения-выключения для считывания входных данных?
- Как переключить 12 В с помощью esp32?
- Использование транзистора NPN в качестве переключателя для включения/выключения двигателя постоянного тока
- Arduino зависает через 10-15 минут
- Двигатель постоянного тока Arduino с 2 кнопками
Связанный "полный набор фотографий" из вашей статьи, кажется, показывает, как именно расположены переключатели и диоды. Разве вы не смотрели на фотографии? Неужели в них есть что-то такое, чего ты не понимаешь? В противном случае ваш вопрос кажется очень странным, так как вы процитировали ссылку, которая, по-видимому, дает полный ответ., @Richard Crowley
Вы знаете, какие фигуры находятся там, где начинается игра. Вы отслеживаете, какой из них удален с платы и где он заменен. Таким образом, вы знаете, где находятся части без необходимости их идентификации. Вы также должны иметь Arduino звук предупреждение и отказываться играть больше, если более одной части когда-либо вне платы в одно время во время хода. Он также должен распознавать, когда фигура должна быть удалена с платы (захвачена) и не бросать тогда фитинг., @JRE