arduino ADK + android пример мигания светодиода ошибки компиляции

Я пытаюсь создать проект с помощью платы Arduino ADK http://arduino.cc/en/Main/ArduinoBoardADK и Sony Ericsson Xperia Play под управлением Android 2.3.4. Для начала все, что я хочу сделать, это помигать светодиодом на моем устройстве Android, используя хороший учебник, который можно найти здесь http://allaboutee.com/2011/12/31/arduino-adk-board-blink-an-led-with-your-phone-code-and-explanation/. Мне удалось скомпилировать приложение для Android, но у меня большие трудности с эскизом arduino, я не могу разрешить импорт, и оно не скомпилируется в Windows7. Я понимаю, что есть некоторые проблемы с версией Arduino IDE. Пробовал компилировать и на 0022,0023 и на 1.0. Самое большее, что я мог сделать с кодом, я получал эти ошибки компиляции после редактирования AndroidAccessory.h:

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:37: error: 'EP_RECORD' does not name a type

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:50: error: 'EP_RECORD' has not been declared

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:50: error: 'EP_RECORD' has not been declared

D:\arduino-0023\libraries\AndroidAccessory/AndroidAccessory.h:64: error: 'USB_NAK_LIMIT' was not declared in this scope

Кажется, я прочитал всю документацию и не могу найти решение своей проблемы. Настройка это такая боль ... Мне действительно нужно, чтобы это работало. Заранее спасибо! :)

----------------------------------------------------------------------------- -------------------------------------------------- --------------------------

EDIT1: решение, которое сработало для меня, состояло в том, чтобы скомпилировать скетч в Linux (Ubuntu)

----------------------------------------------------------------------------- -------------------------------------------------- --------------------------

EDIT2: еще раз, используя новейшую библиотеку USB с веб-сайта arduino, код НЕ компилируется. . Я пытался скомпилировать в IDE v22 и v1.0.2 под управлением Windows 8 и Ubuntu 12.10 со следующими ошибками:

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h: In function 'void setup()':

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h:68: error: 'void AndroidAccessory::powerOn()' is private
sketch_jan10a:16: error: within this context

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h: In function 'void loop()':

E:\Development\arduino-1.0.2\libraries\UsbHost/AndroidAccessory.h:66: error: 'int AndroidAccessory::read(void*, int, unsigned int)' is private
sketch_jan10a:23: error: within this context

person androidu    schedule 29.01.2012    source источник


Ответы (7)


Я думаю, если мы действительно знаем, что такое EP_Record epRecord[8]; это все о том, что может помочь. EP_Record не был объявлен в этом файле. Следовательно, у него нет типа. Когда я дал USB_NAK_LIMIT тип int, эта ошибка исчезла. Я понятия не имею, какой тип указать для EP_Record? Единственное, о чем я могу думать, так это о том, что это может быть массив epRecord[8]; похоже на массив.

Хотя сайт разработчика Android полезен, он во многом уступает. Одним из них может быть онлайн-помощь для разработчиков. Кажется, это единственный источник ответов на вопросы, и большинство из них на самом деле не решают проблемы.

person EdB    schedule 20.01.2014

Библиотека была написана и протестирована на:

Ардуино Альфа 0022

Вы пытались добавить это в ArduinoAccessory.h?

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif 

Также я бы рекомендовал прочитать это, а также:

http://developer.android.com/guide/topics/usb/adk.html#installing

В нем особо упоминается, что вам также нужна библиотека CapSense для экрана Android на Arduino:

http://www.arduino.cc/playground/Main/CapSense

Также упоминается, что вам также необходимо установить avr-libc:

sudo apt-get install avr-libc

MAC OS X:

fink install avr-libc avr-gcc avr-binutils avrdude 
person fulvio    schedule 30.01.2012
comment
да, я сделал :( это небольшое редактирование заголовка завело меня так далеко, но все же оставило меня с ошибками, которые вы видите выше... - person androidu; 30.01.2012
comment
Ну, я также попробовал это на версии 0022, и я получаю ту же ошибку... Я не понимаю, что я делаю неправильно... - person androidu; 30.01.2012
comment
@MarciCăşvan См. мой обновленный ответ для ссылки на документацию по установке необходимых библиотек. - person fulvio; 06.02.2012
comment
Я выполнил все шаги, необходимые для установки, за исключением avr-libc, потому что я запускаю IDE в Windows, а не в Linux, и в Windows нет необходимости устанавливать avr-libc... Моя проблема все еще остается :( - person androidu; 06.02.2012
comment
@MarciCăşvan Вы добавляете мой приведенный выше код в ArduinoAccessory.h? Также попробуйте включить #include <Usb.h> в свой эскиз. - person fulvio; 06.02.2012
comment
да да и да, я перепробовал все возможные комбинации... все те же ошибки компилятора. я схожу с ума - person androidu; 06.02.2012
comment
@MarciCăşvan Я знаю, что это может быть больно. Однако у меня нет никаких проблем в среде Mac OS X Lion и в среде Ubuntu 11.10. Не могли бы вы рассмотреть возможность установки одной из этих операционных систем? - person fulvio; 06.02.2012
comment
В этом случае либо я делаю что-то не так, либо одна из библиотек глючит, либо не подходит для компиляции кода. Кроме того, я не единственный, у кого есть эти ошибки, я прочитал несколько сообщений в сети. с теми же ошибками, но не смог найти решение. Думаю, я продолжу попытки ... я не знаю ... на какой версии arduino IDE вы пытались скомпилировать код? 0022? - person androidu; 06.02.2012

EP_RECORD определен как часть USB Host Shield 1.0. Однако он удаляется в библиотеке USB Host Shield 2.0.

См. объявление здесь: http://www.circuitsathome.com/mcu/usb-host-shield-library-version-2-0-released

Таким образом, сообщения об ошибках, которые у вас есть с EP_RECORD, снова появятся, если вы когда-нибудь обновитесь до 2.0. Также ознакомьтесь с файлами adk.h и adk.cpp версии 2.0 на GitHub. В обновленном примере DemoKit 2.0 больше не используется файл AndroidAccessory.h/.cpp.

person Glorithm    schedule 26.03.2012
comment
Я обязательно проверю это, и если у меня получится, я отмечу ваш ответ :) спасибо - person androidu; 26.03.2012

Мне кажется, что вам просто не хватает USB_Host_Shield/Usb заголовок .h, определяющий эти константы.

person Zenexer    schedule 09.02.2012
comment
Я также импортировал библиотеки USB_Host_Shield и USB... Где-то должен быть конфликт версии библиотеки... Я еще раз проверю - person androidu; 09.02.2012
comment
@MarciCăşvan Я думаю, что именно в этом ваша проблема. Что-то мешает правильному включению этого заголовка. - person Zenexer; 09.02.2012

Поместите этот код там, где другие определения находятся в Usb.h.

#define USB_NAK_LIMIT       32000   //NAK limit for a transfer. 0 means NAKs are not counted 

Поместите это сразу после typedef SETUP_PKT в Usb.h

/* Endpoint information structure               */
/* bToggle of endpoint 0 initialized to 0xff    */
/* during enumeration bToggle is set to 00      */
typedef struct {        
    byte epAddr;        //copy from endpoint descriptor. Bit 7 indicates direction ( ignored for control endpoints )
    byte Attr;          // Endpoint transfer type.
    unsigned int MaxPktSize;    // Maximum packet size.
    byte Interval;      // Polling interval in frames.
    byte sndToggle;     //last toggle value, bitmask for HCTL toggle bits
    byte rcvToggle;     //last toggle value, bitmask for HCTL toggle bits
    /* not sure if both are necessary */
} EP_RECORD;
person Orman    schedule 07.03.2013
comment
Хороший ответ, если он решает проблему, хотя вы можете объяснить, что не так и почему требуется ваше решение. - person Tass; 07.03.2013
comment
Определения отсутствуют в заголовках, я не знаю почему, поэтому я покопался в старом коде и нашел их. Прямо сейчас я бы порекомендовал установить библиотеки Macroduino, так как они работают без проблем. practicalmaker.com/projects/macroduino-project-page - person Orman; 22.03.2013

Это похоже на проблему, которая у меня была некоторое время назад. (поэтому я использовал microbridge, а не ADK с USBDroid) Мне пришлось зайти в 3 библиотеки, сообщение об ошибке указало мне на них

//(Примечание: которые были скопированы в общую папку эскизов arduino, а не в расположение обычных библиотек arduino) Это может быть вашей проблемой?)

Затем я заменяю wire.h на Arduino.h в каждом (Примечание: сделайте резервную копию всего, чтобы сохранить кое-что, если это не ваша проблема). Затем скопируйте в папку с тем же именем, но с номером перед именем таким образом, когда вы перезапустите программное обеспечение arduino, вы получите сообщение об ошибке, игнорируйте это и компилируйте.

В результате USBdroid работал, как показано на http://www.youtube.com/watch?v=h7aa_6PNdRI Работа еще не завершена, но я доволен. У меня все еще есть несколько ошибок, которые нужно решить.

Привет, Ал

person Alex    schedule 06.02.2012
comment
Я скопировал библиотеки в папку /libraries, как указано в документации. - person androidu; 06.02.2012

  1. Установите ArduinoADK BETA 001, который является последней версией ADK, доступной на сегодняшний день.

  2. Разархивируйте его и в папке arduino найдете библиотеки и библиотеки-V2.

  3. Если вы скопируете USB-хост в библиотеки, вы получите приватную ошибку чтения androidaccessory.h.

  4. Скопируйте хост USB из библиотеки V 2, которую вы сможете успешно скомпилировать. Я был.

person Kshitij Dabhade    schedule 28.04.2015