Игра «Бинарный переключатель» – Проект на Arduino UNO
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| Toggle switch SPDT | 7 |
| M3 x 8 Socket Head Cap Screw | 15 |
| M3 Nut | 3 |
| Adafruit Standard LCD - 16x2 White on Blue | 1 |
| 40mm Standoff | 4 |
| Adafruit Silicone Cover Stranded-Core Wire - 30AWG | 1 |
| Switch Dress Nut 1/4-40 | 9 |
| Rugged Metal Pushbutton with White LED Ring - 16mm White Momentary | 1 |
О проекте
Это игра, которую я создал на Autodesk Circuits для изучения двоичных чисел.
Играбельная онлайн-версия доступна по адресу: https://circuits.io/circuits/2924784-binary-game
Если вы хотите следовать этому руководству и собрать свою версию, файлы и код можно найти на моем GitHub: https://github.com/keebie81/BinaryGame
Шаг 1: Необходимые детали
- 1 — Rugged Metal Pushbutton with White LED Ring - 16mm White Momentary
- 1 — Adafruit METRO 328 с заголовками - ATmega328 (любая вариация Arduino Uno также подойдет. Мне нравится Metro, потому что дно гладкое, поэтому мне не нужны стойки для платы в моем дизайне.)
- 15 — M3 x 8 Socket Head Cap Screw
- 3 — M3 Nuts
- 1 — 16x2 LCD
- 4 — 40mm Standoffs
- Silicone Cover Stranded-Core Wire - 30AWG — я использовал несколько цветов, чтобы упростить следование за проводкой.
- 9 — Toggle Switch SPDT Panel Mount — любой стиль подойдет, но я хотел плоский стиль.
- 9 — Switch Dress Nut 1/4-40 — опционально, для внешнего вида. Можно также использовать комплектацию, идущую с переключателем.
Шаг 2: Проектирование
Я спроектировал корпус в Fusion 360. Это позволило мне разместить все детали и убедиться, что они подходят. После этого я смог 3D-печатать корпус и проверить, как он собирается.
Все хорошо сошлось, затем я создал SVG-файлы двух панелей. Следующий шаг — подготовить файлы для лазерной резки. Я следовал шаблонам Ponoko. Инструкции также размещены на нижней панели, чтобы люди знали, как работает игра.
Получение деталей от Ponoko заняло чуть более недели.
Шаг 3: Сборка верхней панели
Верхняя панель собирается довольно легко.
Сначала вставьте девять тумблеров и затяните их. Затем вставьте винты M3 для дисплея. Наденьте распорки с другой стороны и затяните винты в монтажные отверстия дисплея. Последняя деталь — кнопка 16мм.
Шаг 4: Сборка нижней панели
Используйте 3 винта M3 и гайки для крепления платы к нижней панели. На фото видно, что я ошибся с отверстиями при лазерной резке. Я исправил это для шаблона, выложенного на GitHub.
Шаг 5: Проводка
Для проводки следуйте схеме. Оригинальный дизайн также использовал цифровые пины 1 и 0, но если переключатели не были в правильном положении, плата имела проблемы с загрузкой кода.
Я припаял провода к мужским заголовкам, вставленным в плату Arduino. Это позволяет легко отключать их в будущем, если вы захотите перепрофилировать плату. LCD-дисплей также использует женские заголовки для пайки.
Одна проблема, которую я заметил после проводки — это проводка переключателей. Вы должны проверить связи для замкнутой цепи. Используя переключатели, которые я перечислил ранее, когда рычаг вниз, средний и верхний контакты замкнуты. Поскольку я ошибся с проводкой, мне пришлось изменить код. Для кода, приведенного в этом руководстве, предполагается, что ваша проводка выполнена правильно.
Также при подключении металлической кнопки она должна быть в конфигурации «нормально открыто».
Шаг 6: Питание
Вы можете подключить плату к компьютеру через USB-кабель для питания или использовать портативный зарядный блок для телефона, например: https://www.adafruit.com/products/1959
Шаг 7: Как играть
При включении, если выбран легкий режим, вам дается случайное число от 0 до 15. Если сложный — от 0 до 255.
Затем вы переключаете тумблеры вверх для 1 или вниз для 0, затем нажимаете кнопку, чтобы проверить, правильно ли вы угадали. Если правильно — звучит тональный сигнал правильного ответа и выдается новое число. Если неправильно — звучит гудок и надпись «попробуй снова».
Значение переключателей слева направо: 2^7(128), 2^6(64), 2^5(32), 2^4(16), 2^3(8), 2^2(4), 2^1(2), 2^0(1).
Если случайное число было 18, двоичное значение будет 0001 0010. Потому что 2^4(16) + 2^1(2) = 18.
Если 255 — будет 1111 1111, так как сумма всех чисел равна 255.
Шаг 8: Видео игрового процесса
(Видео доступно в оригинальном проекте)
Код
Код доступен на GitHub: https://github.com/keebie81/BinaryGame
Схемы
Схема подключения доступна во вложениях.
Производственный процесс
- Десятичная и двоичная системы: разрядный вес, эффективность и преобразование
- Сложение в двоичной системе: правила, примеры и роль в цифровых компьютерах
- Отрицательные числа в двоичной системе: знаковый модуль, дополнение и дважды дополнительный код
- Двоичное вычитание с использованием двухкратного дополнения
- Переполнение в двоичной арифметике: влияние знакового бита на сложение
- Понимание четырехбитных двоичных счетчиков
- Проектирование двоичного полусумматора: от логических вентилей к релейным диаграммам
- Шахматы: от древних корней к современному производству — экспертный обзор
- Пинбол: история, дизайн и производство классической аркадной игры
- Футбольный мяч: от древних игр к современным инновациям