Как определить, есть ли на Android-устройстве режим открытых аксессуаров
Кто-нибудь знает, как это проверить? Я только что купил Samsung Galaxy Tab 2 (7"версия под Android 4.0.3) с намерением использовать его для подключения к моей плате Arduino Mega ADK. Но я не уверен, есть ли на вкладке galaxy необходимый режим Open Accessory, указанный здесь: http://developer.android.com/guide/topics/usb/adk.html
Кажется, только то, что программное обеспечение правильно, не означает, что устройство совместимо, и это зависит от производителя. Так как это новый планшет я ничего не нахожу. Любая помощь?
5 ответов
Добавьте Galaxy Nexus в список.
Nexus S ICS 4.0.4 работает, 4.0.3 сломан.
Убедитесь, что питания достаточно - по крайней мере, Nexus S вылетит и периодически перестанет видеть плату ADK, если на тандем "плата + телефон" подается питание от USB-концентратора.
Я не знаю, как вы можете узнать, имеет ли ваше устройство этот режим ADK (я не смог следовать этому примеру, когда пытался настроить мои вещи.) Но вот несколько ошибок, которые я выяснил:
убедитесь, что вы используете Arduino IDE v1.0, я пытался 23 некоторое время. Но вы должны использовать новый набор.
Мне также пришлось редактировать эскиз, чтобы заставить его работать. Здесь был мой новый метод настройки. Я просто добавил несколько утверждений для печати, чтобы я мог определить, в какой части это не удалось. Оказалось для меня init_joystick ( 5 );
Зов был там, где он умирал. Я прокомментировал это, и все прошло хорошо.
void setup()
{
Serial.begin(115200);
Serial.print("\r\nStart");
init_leds();
Serial.print("\r\nDone LED");
init_relays();
Serial.print("\r\nDone Relay");
init_buttons();
Serial.print("\r\nDone button");
//init_joystick( 5 );
// autocalibrate OFF
touch_robot.set_CS_AutocaL_Millis(0xFFFFFFFF);
servos[0].attach(SERVO1);
servos[0].write(90);
servos[1].attach(SERVO2);
servos[1].write(90);
servos[2].attach(SERVO3);
servos[2].write(90);
b1 = digitalRead(BUTTON1);
b2 = digitalRead(BUTTON2);
b3 = digitalRead(BUTTON3);
//b4 = digitalRead(JOY_SWITCH);
c = 0;
acc.powerOn();
Serial.print("\r\nDone Setup");
}
Это изменение метода настройки в наброске демо-набора ADK позволило зарегистрировать соединение и сделать приложение еще более интересным.
Однако я тестировал только те устройства, которые, как я знал, поддерживали ADK:
- Galaxy Nexus
- Nexus S
- Motorola Xoom
Вам нужно будет обеспечить достаточное питание для устройства ADK - по крайней мере, Nexus S может работать нестабильно, когда устройство ADK получает питание от USB-концентратора. Контрольные признаки - это режим ADK, исчезающий без видимой причины.
У меня есть Samsung Galaxy Tab 2 (7"версия под управлением Android 4.0.3) и аксессуар Android, который работает как минимум с 3 другими устройствами, но не на вкладке. Возможно, это связано с тем, что в 4.0.3 он поврежден (как и в случае с Nexus S, в котором 4.0.3 не работает, а 4.0.4 нет). Кроме того, 2.3.4+, работающий на других устройствах Samsung, лишен библиотеки USB-аксессуаров.
Проблема с capsense заключается в том, что capsense не существует! Вам нужно добавить CapacitiveSensor.h в проект, а затем изменить все ссылки на capsense на CapacitiveSensor для устранения этих ошибок (arduino ide 1.5.2). Все еще могу получить соединение.(4.1.3), и я задаюсь вопросом, нравится ли SExperia mini pro и нужна ли док-станция.
Я только что получил свой Samsung Galaxy Tab 2 с 7-дюймовым экраном. Он работает под управлением Android 4.0.3, и я могу заставить его работать с Arduino Mega ADK! Я использую интерфейс Arduino 0023 для компиляции кода. Интерфейс Arduino 1.0 сломал слишком много библиотек, поэтому я переключился на старый интерфейс. Закомментируйте строку "init_joystick( 5);" если у вас нет щита. Я мог проверить, что формы сигналов для 3 сервоприводов были правильными, используя осциллограф.
Если вы все еще не можете заставить его работать, попробуйте закомментировать любой код, связанный с джойстиком, так как он, вероятно, висит на коммуникациях I2C. В противном случае перейдите на веб-сайт dfrobot и закажите щит ADK примерно за 60 долларов, чтобы джойстик читался правильно. Это мой следующий шаг.
Обновление: заметил, что скорость обновления планшета была очень медленной. Исправить было закомментировать эту строку, если у вас нет щита:
// touchcount = touch_robot.capSense (5);
Сенсорное устройство подключено к последовательным линиям, поэтому я предполагаю, что его отсутствие вызывает длительную задержку из-за тайм-аута.