Нужна помощь в принципиальной схеме матрицы герконового выключателя 8*8

Я разрабатываю матрицу геркона 8*8, которая будет подключена к Arduino. Я использую Arduino Duemilanove. Я завершил часть матрицы, но не знаю, как соединить и где соединить другие элементы. My Matrix circuit

Я решил использовать следующие пункты:

  • Arduino (Duemilanove)
  • 64x Геркон
  • 64x диод (1N4148)
  • резисторы 20x (10K)
  • 1x 74HC595
  • 1x 74HC165

Я не знаю, где разместить резисторы и сдвиговые регистры и подключение от сдвиговых регистров к arduino. Мне нужна помощь в схеме. Пожалуйста, помогите мне со схемой.

Ссылка: https://mtifall10.wordpress.com/2010/12/10/magnetic-sensing-chessboard/

, 👍1

Обсуждение

Связанный "полный набор фотографий" из вашей статьи, кажется, показывает, как именно расположены переключатели и диоды. Разве вы не смотрели на фотографии? Неужели в них есть что-то такое, чего ты не понимаешь? В противном случае ваш вопрос кажется очень странным, так как вы процитировали ссылку, которая, по-видимому, дает полный ответ., @Richard Crowley

Вы знаете, какие фигуры находятся там, где начинается игра. Вы отслеживаете, какой из них удален с платы и где он заменен. Таким образом, вы знаете, где находятся части без необходимости их идентификации. Вы также должны иметь Arduino звук предупреждение и отказываться играть больше, если более одной части когда-либо вне платы в одно время во время хода. Он также должен распознавать, когда фигура должна быть удалена с платы (захвачена) и не бросать тогда фитинг., @JRE


2 ответа


2

Этот ответ основан на предыдущей версии вопроса

  1. Не обязательно. Вы можете использовать внутренние подтягивания arduino, если вы готовы согласиться с тем, что чтение "1" означает, что там нет фрагмента, а чтение "0" означает, что фрагмент есть.

  2. Подключите каждый провод к контакту на arduino. Если вы сделаете это с умом, шаг 3 станет довольно легким.

  3. Вам необходимо настроить контакты, подключенные к буквенным проводам, в качестве входов с включенными съемниками. Установите также числовые контакты на входы, но без включенного подтягивания, чтобы они были плавающими. Числовые контакты будут последовательно установлены в качестве выходных, при этом значение будет низким (неактивные числовые контакты будут возвращены на входы). При этом вы можете прочитать контакты на проводах с буквами и построить изображение платы.

Пример

Вот как бы я это сделал, просто наивно взглянув на это. Я уверен, что есть более эффективные способы сделать это.

Проводка:

Wiring

Настройте выходы и входы в настройках:

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 байтами в нем всякий раз, когда вам нужно сканировать плату. Каждый байт в массиве представляет одну из строк, а каждый бит представляет столбец.

[примечание модератора: Этот ответ появляется в этой теме в результате слияния]

,

1

Используйте 16 цифровых выводов ввода-вывода на Arduino. Те, которые подключены к a-h, должны быть сконфигурированы как ВЫХОДНЫЕ контакты. Те, которые подключены к 1-8, должны быть сконфигурированы в качестве входных контактов. Начните с низкого уровня всех выходов (a-h).

Вы проверяете наличие замкнутого переключателя в левом нижнем углу, сделав выходной вывод, подключенный к "а", ВЫСОКИМ, затем посмотрите на значение входного вывода, подключенного к "1". Если он высокий, то этот переключатель закрыт. Если он низкий, то этот переключатель открыт.

В то время как выход " a "ВЫСОК, вы можете проверить остальную часть левого столбца, посмотрев на входы" 2 " - "8".

Я не вижу никакой необходимости в резисторах или сдвиговых регистрах, но, возможно, ваш учитель что-то имел в виду.

ПРАВКА: Я вижу, что при использовании регистров сдвига вам нужен только один входной вывод и один ВЫХОДНОЙ вывод на Arduino. Я оставлю это для вас, чтобы вы поняли, так как я думаю, что дал достаточно, чтобы вы начали.

,