Наблюдать за USB-геймпадом с Arduino?
У меня есть геймпад, который я хочу использовать в качестве датчика для моей платы Arduino. Я хочу, чтобы Arduino запускал определенное действие на основе нажатия кнопок с геймпада. Разные кнопки, разные действия.
Геймпад поставляется с разъемом USB. Я разрезаю USB-кабель, припаиваю его подключаемыми контактами, которые затем подключаются к макету. Я подключаю геймпад к источнику питания 5 В от Arduino и подключаю USB Data+ к аналоговому входному контакту Arduino (A0). Пожалуйста, проверьте изображения ниже.
Я подумал, что, наблюдая за напряжением, поступающим от контакта Data+ геймпада, я, вероятно, смогу определить, нажимается ли кнопка. Однако наблюдаемое входное напряжение в Arduino A0 не создает никакой существенной разницы между нажатием и отпусканием кнопки.
Мой вопрос: Можно ли обнаружить нажатия кнопок геймпада при таком расположении? Если это возможно, то где, по-вашему, я делаю что-то не так?
@Andree, 👍1
Обсуждение2 ответа
Лучший ответ:
Как уже упоминалось, проблема в том, что геймпад, который вы используете, взаимодействует через USB, для связи с которым требуется чип USB - хоста. Однако экраны USB-хоста можно найти на eBay (в разделе "arduino USB Host shield") за 10 долларов, и они поставляются с разъемом USB, поэтому вы можете легко использовать его с другим геймпадом, у которого не был обрезан разъем. Это также позволит использовать HID устройства, такие как мыши и клавиатуры, если вы пожелаете, так что стоит иметь щит.
USB-устройства осуществляют последовательную связь, посылается и принимается серия пакетов битов, с которыми вам не по силам учиться и разговаривать. Использовать экран USB-хоста или чип было бы проще (и дороже), но делать это самостоятельно будет гораздо веселее и познавательнее.
Удивительно, но для некоторых USB-устройств (например, клавиатуры) вам необходимо опросить данные. Ничего не будет отправлено хосту автоматически. Чтобы узнать, по какому протоколу они говорят, вам нужно подключить игровой планшет к ПК и отслеживать сигналы.
Также вам нужно отслеживать как D+, так и D - сигналы, они оба используются.
Вот замечательное видео Бена Едока о USB-клавиатурах, в котором он углубляется в мониторинг сигналов и протокола, может стать хорошим началом для вашего проекта: https://www.youtube.com/watch?v=wdgULBpRoXk
- Первая настройка - отказ в доступе к usb-порту - ubuntu 14.04
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Может ли Arduino взаимодействовать с USB-устройствами без USB-хост-экрана?
- Если USB дает 5 В, как Arduino может подавать 5 В на контакт 5 В? (И еще вопрос)
- Максимальная последовательная скорость CH340
- Можно ли использовать внешний источник питания и USB одновременно на Arduino?
- Эмуляция стандартного периферийного USB-устройства Mifare с помощью RFID-RC522
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
У вас arduino нет хост-контроллера USB, поэтому вы не можете. Вы зря сломали геймпад.., @Eugene Sh.
Хорошо, спасибо за упоминание контроллера USB-хоста, это то, что мне нужно!, @Andree
Добавление хост-контроллера USB к Arduino технически и экономически глупо. Вам было бы лучше с чем-то вроде kl25z, который дешевле, более производителен и имеет встроенную систему. Или вы можете выпотрошить геймпад и заменить электронику., @Chris Stratton
Да, настоящие геймпады SNES или Megadrive гораздо легче читать., @pjc50
Как плата разработки KL25z с закрытым исходным кодом 20 дешевле, чем открытая аппаратная плата 2, - nano с 3,- usb-хост-щит ???, @Joeri