Arduino Uno — сборка контроллера
У меня есть Arduino Uno, и я работаю над проектом по созданию контроллера с различными входами и выходами для считывания данных. В классическом стиле я приобрел Arduino Uno, прежде чем понял, что мне может не хватить точек ввода-вывода для подключения всего, что я хочу.
Я считаю, что есть способ расширить мой Uno с помощью расширителя ввода-вывода? Кто-нибудь делал что-то подобное? Контроллер будет предназначен для конкретной игры под названием Kerbal Space Station. Есть довольно много статей, которые помогают в сборке, но не относятся конкретно к тому, что я рассматриваю.
Компоненты, которые я буду использовать:
ВХОДЫ:
- 2 3-осевых джойстика
- 11 микропереключателей
- 6 тумблеров
- 1 аналоговый слайдер.
- 1 10-позиционный поворотный переключатель.
РЕЗУЛЬТАТЫ:
- 4 12-контактных светодиодных гистограммы.
- 1x последовательный ЖК-дисплей модуля.
2 ответа
Да, все это уже делалось. Вот несколько советов по компонентам:
- MCP23S17/MCP23017 — расширитель ввода-вывода SPI/I2C (16 контактов ввода-вывода, многие из которых можно соединить вместе) (библиотека MCP23S17)
- MCP3208 — 8-канальный 12-битный АЦП SPI (библиотека MCP3208)
- TLC59116 — ШИМ-драйвер светодиодов постоянного тока I2C (16 каналов) (библиотека TLC59116)
Некоторые другие полезные руководства, которые могут вам помочь:
- Клавиатура — множество кнопок/переключателей с небольшим количеством контактов.
- Мультиплекс - Управляйте множеством светодиодов с помощью небольшого количества контактов ввода-вывода.
Sparkfun также продает модуль SX1509 по очень хорошей цене. Он может самостоятельно выполнять матричную клавиатуру (аппаратная поддержка) с аналогичным (независимым аппаратным управлением) светодиодным контролем пульса. Помимо этого, вы можете использовать любые оставшиеся контакты как обычный ввод-вывод (чтение/запись/ШИМ). Всего контактов 16, и они управляются через I2C.
У Adafruit также есть плата Seesaw, представляющая собой небольшой процессор Atmel SAMD09 с подчиненной прошивкой I2C. Он работает аналогично, но количество контактов гораздо более ограничено.
В любом случае вы просто включаете библиотеку в свой код и используете объект для взаимодействия с выводами, а не обычные функции вашего Arduino. Похоже, что большинство из них используют синтаксис, идентичный синтаксису (someclass.digitalWrite()...) обычным функциям Arduino.
- Проводная связь Arduino с MCP23008 GPIO pin expander для включения светодиода нажатием кнопки
- Как прочитать входной контакт на MCP23017?
- Провод с расширителем ввода-вывода MCP23008 с I2C
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
да, подобная вещь уже обсуждалась раньше... какой тип джойстиков вы будете использовать?, @jsotola