Mega ADK подключается к контроллеру PS3 - ошибка OSC did not start error
У меня есть проект, над которым я работаю, в котором используется контроллер PS3 для подключения к Arduino Mega 2560 ADK (встроенный USB). Я пытался проверить соединение контроллера/arduino и не могу обойти ошибку «OSC не запускается» через последовательный монитор.
Я создал новую тему, потому что все темы, которые я читал, были основаны на Mega 2560 плюс защитный экран USB, а не на ADK. Теоретически разницы быть не должно, но лучше перестраховаться, чем сожалеть.
Вот мое оборудование: Arduino Mega 2560 ADK - Контроллер TrendNet TWB-106UB — USB-адаптер Навигационный контроллер PS3 Move (только 1)
Библиотеки: USB_Host_Shield USB_Host_Shield_Library_2.0
Скетч: https://gitlab.com/darren-blum/SHADOW
Однако в целях тестирования я попробовал прямые примеры скетчей из библиотек USB Host. Я пробовал примеры PS3USB и PS3BT. Какой бы скетч я ни пробовал, я не могу пройти мимо "OSC не запускается".
Код, который вызывает эту ошибку:
if (Usb.Init() == -1) {
Serial.print(F("\r\nOSC did not start"));
while (1); //halt
}
Я не уверен, что мне не хватает. Вот один из примеров скетчей целиком:
#include <PS3BT.h>
#include <usbhub.h>
// Удовлетворить IDE, которая также должна видеть статус включения в ino.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>
USB Usb;
//USB-концентратор Hub1(&Usb); // Некоторые ключи имеют внутри концентратор
BTD Btd(&Usb); // Вы должны создать экземпляр Bluetooth Dongle следующим образом
/* You can create the instance of the class in two ways */
PS3BT PS3(&Btd); // Это просто создаст экземпляр
//PS3BT PS3(&Btd, 0x00, 0x15, 0x83, 0x3D, 0x0A, 0x57); // Здесь также будет храниться адрес bluetooth — его можно получить из ключа при запуске скетча
bool printTemperature, printAngle;
void setup() {
Serial.begin(115200);
#if !defined(__MIPSEL__)
while (!Serial); // Дождитесь подключения последовательного порта — используется на платах Leonardo, Teensy и других со встроенным последовательным соединением USB CDC
#endif
if (Usb.Init() == -1) {
Serial.print(F("\r\nOSC did not start"));
while (1); // остановка
}
Serial.print(F("\r\nPS3 Bluetooth Library Started"));
}
void loop() {
Usb.Task();
if (PS3.PS3Connected || PS3.PS3NavigationConnected) {
if (PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117 || PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117 || PS3.getAnalogHat(RightHatX) > 137 || PS3.getAnalogHat(RightHatX) < 117 || PS3.getAnalogHat(RightHatY) > 137 || PS3.getAnalogHat(RightHatY) < 117) {
Serial.print(F("\r\nLeftHatX: "));
Serial.print(PS3.getAnalogHat(LeftHatX));
Serial.print(F("\tLeftHatY: "));
Serial.print(PS3.getAnalogHat(LeftHatY));
if (PS3.PS3Connected) { // Контроллер навигации имеет только один джойстик
Serial.print(F("\tRightHatX: "));
Serial.print(PS3.getAnalogHat(RightHatX));
Serial.print(F("\tRightHatY: "));
Serial.print(PS3.getAnalogHat(RightHatY));
}
}
// Значения аналоговых кнопок можно считать практически со всех кнопок
if (PS3.getAnalogButton(L2) || PS3.getAnalogButton(R2)) {
Serial.print(F("\r\nL2: "));
Serial.print(PS3.getAnalogButton(L2));
if (PS3.PS3Connected) {
Serial.print(F("\tR2: "));
Serial.print(PS3.getAnalogButton(R2));
}
}
if (PS3.getButtonClick(PS)) {
Serial.print(F("\r\nPS"));
PS3.disconnect();
}
else {
if (PS3.getButtonClick(TRIANGLE)) {
Serial.print(F("\r\nTraingle"));
PS3.setRumbleOn(RumbleLow);
}
if (PS3.getButtonClick(CIRCLE)) {
Serial.print(F("\r\nCircle"));
PS3.setRumbleOn(RumbleHigh);
}
if (PS3.getButtonClick(CROSS))
Serial.print(F("\r\nCross"));
if (PS3.getButtonClick(SQUARE))
Serial.print(F("\r\nSquare"));
if (PS3.getButtonClick(UP)) {
Serial.print(F("\r\nUp"));
if (PS3.PS3Connected) {
PS3.setLedOff();
PS3.setLedOn(LED4);
}
}
if (PS3.getButtonClick(RIGHT)) {
Serial.print(F("\r\nRight"));
if (PS3.PS3Connected) {
PS3.setLedOff();
PS3.setLedOn(LED1);
}
}
if (PS3.getButtonClick(DOWN)) {
Serial.print(F("\r\nDown"));
if (PS3.PS3Connected) {
PS3.setLedOff();
PS3.setLedOn(LED2);
}
}
if (PS3.getButtonClick(LEFT)) {
Serial.print(F("\r\nLeft"));
if (PS3.PS3Connected) {
PS3.setLedOff();
PS3.setLedOn(LED3);
}
}
if (PS3.getButtonClick(L1))
Serial.print(F("\r\nL1"));
if (PS3.getButtonClick(L3))
Serial.print(F("\r\nL3"));
if (PS3.getButtonClick(R1))
Serial.print(F("\r\nR1"));
if (PS3.getButtonClick(R3))
Serial.print(F("\r\nR3"));
if (PS3.getButtonClick(SELECT)) {
Serial.print(F("\r\nSelect - "));
PS3.printStatusString();
}
if (PS3.getButtonClick(START)) {
Serial.print(F("\r\nStart"));
printAngle = !printAngle;
}
}
#if 0 // Установите значение 1, чтобы увидеть угол контроллера
if (printAngle) {
Serial.print(F("\r\nPitch: "));
Serial.print(PS3.getAngle(Pitch));
Serial.print(F("\tRoll: "));
Serial.print(PS3.getAngle(Roll));
}
#endif
}
#if 0 // Установите значение 1, чтобы включить поддержку контроллера Playstation Move.
else if (PS3.PS3MoveConnected) {
if (PS3.getAnalogButton(T)) {
Serial.print(F("\r\nT: "));
Serial.print(PS3.getAnalogButton(T));
}
if (PS3.getButtonClick(PS)) {
Serial.print(F("\r\nPS"));
PS3.disconnect();
}
else {
if (PS3.getButtonClick(SELECT)) {
Serial.print(F("\r\nSelect"));
printTemperature = !printTemperature;
}
if (PS3.getButtonClick(START)) {
Serial.print(F("\r\nStart"));
printAngle = !printAngle;
}
if (PS3.getButtonClick(TRIANGLE)) {
Serial.print(F("\r\nTriangle"));
PS3.moveSetBulb(Red);
}
if (PS3.getButtonClick(CIRCLE)) {
Serial.print(F("\r\nCircle"));
PS3.moveSetBulb(Green);
}
if (PS3.getButtonClick(SQUARE)) {
Serial.print(F("\r\nSquare"));
PS3.moveSetBulb(Blue);
}
if (PS3.getButtonClick(CROSS)) {
Serial.print(F("\r\nCross"));
PS3.moveSetBulb(Yellow);
}
if (PS3.getButtonClick(MOVE)) {
PS3.moveSetBulb(Off);
Serial.print(F("\r\nMove"));
Serial.print(F(" - "));
PS3.printStatusString();
}
}
if (printAngle) {
Serial.print(F("\r\nPitch: "));
Serial.print(PS3.getAngle(Pitch));
Serial.print(F("\tRoll: "));
Serial.print(PS3.getAngle(Roll));
}
else if (printTemperature) {
Serial.print(F("\r\nTemperature: "));
Serial.print(PS3.getTemperature());
}
}
#endif
}
@Chris Wren, 👍1
1 ответ
Я идиот. Я думал Мега 2560 = ADK. Это не. Как только я переделал свою плату с Mega 2560 на ADK, порт USB заработал.
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Arduino Uno R3 (с Atmega 16u2) и MAC OSX 10.11 (El Capitan) не работают
- Как сделать веб сервер arduino через USB? Без ethernet shield и чипа wifi
- Программа Arduino не запускается при подключении
- Связь с Arduino Mega 2560 последовательных портов через x2 RS232
- подключите USB клавиатуру к Arduino с помощью clk и проводов передачи данных
- Проблемы Funduino USB Host Shield
- Плохо ли питать arduino mega 6V через USB?
Можно принять свой собственный ответ как решение проблемы., @VE7JRO