Arduino Uno — сборка контроллера

arduino-uno io-expander

У меня есть Arduino Uno, и я работаю над проектом по созданию контроллера с различными входами и выходами для считывания данных. В классическом стиле я приобрел Arduino Uno, прежде чем понял, что мне может не хватить точек ввода-вывода для подключения всего, что я хочу.

Я считаю, что есть способ расширить мой Uno с помощью расширителя ввода-вывода? Кто-нибудь делал что-то подобное? Контроллер будет предназначен для конкретной игры под названием Kerbal Space Station. Есть довольно много статей, которые помогают в сборке, но не относятся конкретно к тому, что я рассматриваю.

Компоненты, которые я буду использовать:

ВХОДЫ:

  • 2 3-осевых джойстика
  • 11 микропереключателей
  • 6 тумблеров
  • 1 аналоговый слайдер.
  • 1 10-позиционный поворотный переключатель.

РЕЗУЛЬТАТЫ:

  • 4 12-контактных светодиодных гистограммы.
  • 1x последовательный ЖК-дисплей модуля.

, 👍1


2 ответа


1

Да, все это уже делалось. Вот несколько советов по компонентам:

  • MCP23S17/MCP23017 — расширитель ввода-вывода SPI/I2C (16 контактов ввода-вывода, многие из которых можно соединить вместе) (библиотека MCP23S17)
  • MCP3208 — 8-канальный 12-битный АЦП SPI (библиотека MCP3208)
  • TLC59116 — ШИМ-драйвер светодиодов постоянного тока I2C (16 каналов) (библиотека TLC59116)

Некоторые другие полезные руководства, которые могут вам помочь:

  • Клавиатура — множество кнопок/переключателей с небольшим количеством контактов.
  • Мультиплекс - Управляйте множеством светодиодов с помощью небольшого количества контактов ввода-вывода.
,

0

Sparkfun также продает модуль SX1509 по очень хорошей цене. Он может самостоятельно выполнять матричную клавиатуру (аппаратная поддержка) с аналогичным (независимым аппаратным управлением) светодиодным контролем пульса. Помимо этого, вы можете использовать любые оставшиеся контакты как обычный ввод-вывод (чтение/запись/ШИМ). Всего контактов 16, и они управляются через I2C.

У Adafruit также есть плата Seesaw, представляющая собой небольшой процессор Atmel SAMD09 с подчиненной прошивкой I2C. Он работает аналогично, но количество контактов гораздо более ограничено.

В любом случае вы просто включаете библиотеку в свой код и используете объект для взаимодействия с выводами, а не обычные функции вашего Arduino. Похоже, что большинство из них используют синтаксис, идентичный синтаксису (someclass.digitalWrite()...) обычным функциям Arduino.

,