2012-01-29 17 views
6

Tôi đang cố gắng để thực hiện một dự án bằng cách sử dụng bảng ADK Arduino http://arduino.cc/en/Main/ArduinoBoardADK và Sony Ericsson Xperia Play chạy Android 2.3.4. Để bắt đầu tất cả những gì tôi muốn làm là nhấp nháy một dẫn từ thiết bị Android của tôi, bằng cách sử dụng hướng dẫn tốt đẹp tìm thấy ở đây http://allaboutee.com/2011/12/31/arduino-adk-board-blink-an-led-with-your-phone-code-and-explanation/. Tôi quản lý để biên dịch ứng dụng android nhưng tôi đang gặp khó khăn lớn trên bản phác thảo Arduino, tôi không thể giải quyết và nó sẽ không biên dịch trên Windows7. Tôi hiểu có một số vấn đề phiên bản IDE arduino. Tôi đã thử biên dịch cả trên 0022, 0023 và trên 1.0. Xa nhất tôi có thể đi với mã tôi đã nhận được các biên dịch lỗi sau khi chỉnh sửa AndroidAccessory.h:arduino ADK + android LED blink ví dụ biên dịch lỗi

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 

Tôi nghĩ tôi đọc toàn bộ tài liệu hướng dẫn và tôi không thể tìm thấy một giải pháp cho vấn đề của tôi. Thiết lập này là một nỗi đau ... Tôi thực sự cần phải thực hiện công việc này. Cảm ơn bạn trước! :)

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

EDIT1: Giải pháp làm việc cho tôi là biên dịch ký họa Linux (Ubuntu)

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

EDIT2: Một lần nữa sử dụng thư viện USB mới nhất từ ​​arduino website mã KHÔNG biên dịch. tôi đã cố gắng biên soạn trên v22 IDE và v1.0.2 chạy cả Windows 8 và Ubuntu 12.10 với errrors sau:

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 

Trả lời

0

Tôi nghĩ rằng nếu chúng ta thực sự biết những gì EP_Record epRecord này [ số 8]; là tất cả về điều đó có thể hữu ích. EP_Record chưa được khai báo trong tệp này. Do đó, nó không có một loại. Khi tôi đưa USB_NAK_LIMIT một loại int, lỗi đó biến mất. Tôi không có ý tưởng loại để cung cấp cho EP_Record? Điều duy nhất tôi có thể nghĩ là nó có thể là một mảng epRecord [8]; trông giống như một mảng.

Trong khi trang web của nhà phát triển Android hữu ích, nó thiếu theo nhiều cách. Một sẽ là một số trợ giúp trực tuyến cho các nhà phát triển. Điều này có vẻ là nguồn duy nhất cho câu trả lời cho câu hỏi và hầu hết trong số họ không thực sự giải quyết vấn đề.

3

Thư viện đã được viết và thử nghiệm trong:

Arduino Alpha 0022

Có bạn đã thử thêm điều này vào ArduinoAccessory.h?

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

Ngoài ra tôi sẽ khuyên bạn nên đọc qua chuyện này cũng như:

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

Nó đặc biệt đề cập đến bạn cần thư viện CapSense cũng cho lá chắn Android trên một Arduino:

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

Nó cũng đề cập rằng bạn cũng cần phải cài đặt avr-libc:

sudo apt-get install avr-libc 

MAC OS X:

fink install avr-libc avr-gcc avr-binutils avrdude 
+1

vâng tôi đã làm :(tiêu đề chỉnh sửa nhỏ này đã cho tôi này xa nhưng vẫn để lại cho tôi với các lỗi mà bạn nhìn thấy ở trên ... – androidu

+1

Vâng, tôi cũng đã cố gắng nó trên phiên bản 0022 và tôi nhận được lỗi tương tự ... Tôi không hiểu những gì tôi đang làm sai ... – androidu

+1

@ MarciCăşvan Xem câu trả lời cập nhật của tôi cho một liên kết đến tài liệu hướng dẫn cài đặt các thư viện cần thiết. – fuzz

0

này nghe có vẻ giống như một vấn đề tôi đã có một thời gian trước. (vì vậy tôi sử dụng microbridge không phải là ADK với một USBDroid) Tôi đã phải đi vào 3 thư viện, Các thông báo lỗi chỉ cho tôi với họ

// (Lưu ý: Những đã được sao chép vào thư mục phác họa Arduino nói chung không arduino vị trí thư viện bình thường) Đó có thể là vấn đề của bạn?)

sau đó tôi thay wiring.h với Arduino.h trong mỗi người. (Lưu ý Thực hiện một sao lưu của tất cả để tiết kiệm một số nhồi xung quanh nếu đây không phải là vấn đề của bạn) Bản sao sau đó vào một thư mục có tên giống nhau nhưng với một số trước khi tên theo cách đó khi bạn khởi động lại phần mềm arduino, bạn sẽ nhận được một lỗi bỏ qua điều này và biên dịch.

Kết quả đang hoạt động USBdroid như đã thấy tại http://www.youtube.com/watch?v=h7aa_6PNdRI Vẫn đang trong quá trình thực hiện nhưng đã làm tôi hạnh phúc. Tôi vẫn còn một vài lỗi để làm việc.

Chúc mừng, Al

+0

tôi sao chép libs vào 'thư mục/libraries' như đã đề cập trong tài liệu – androidu

1

Âm thanh với tôi như bạn chỉ thiếu the USB_Host_Shield/Usb.h header, trong đó xác định những hằng số.

+0

tôi đã nhập USB_Host_Shield và USB thư viện quá ... Cần phải có một cuộc xung đột phiên bản thư viện ở đâu đó ... Tôi sẽ kiểm tra lại – androidu

+1

@ MarciCăşvan Tôi nghĩ đó chắc chắn là vấn đề của bạn. Nội dung nào đó đang ngăn không cho tiêu đề đó được bao gồm đúng cách. – Zenexer

+0

nó không làm việc ra cho tôi, tôi bỏ – androidu

2

EP_RECORD được định nghĩa là một phần của USB Host Shield 1.0. Tuy nhiên, nó đang được gỡ bỏ trong thư viện USB Host Shield 2.0.

Xem thông báo ở đây: http://www.circuitsathome.com/mcu/usb-host-shield-library-version-2-0-released

Vì vậy, các thông báo lỗi bạn có với EP_RECORD sẽ nổi lên một lần nữa nếu bạn đã bao giờ nâng cấp lên 2.0. Ngoài ra, hãy xem adk.h và adk.cpp từ phiên bản 2.0 trên GitHub. Ví dụ DemoKit 2.0 đã cập nhật không còn sử dụng AndroidAccessory.h/.cpp.

+0

Tôi chắc chắn sẽ kiểm tra này và nếu tôi thành công, tôi sẽ đánh dấu câu trả lời của bạn :) nhờ – androidu

1

Nơi mã này vào vị định nghĩa khác là trong Usb.h

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

Nơi này chỉ sau typedef SETUP_PKT trong 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; 
+0

Tốt câu trả lời nếu nó giải quyết được vấn đề, mặc dù bạn có thể muốn giải thích gì sai và tại sao giải pháp của bạn bắt buộc. – Tass

+0

Các định nghĩa bị thiếu từ các tiêu đề, tôi không biết tại sao, vì vậy tôi đào vào mã cũ và tìm thấy chúng. Ngay bây giờ tôi muốn khuyên bạn nên cài đặt các thư viện Macroduino khi họ chạy mà không có bất kỳ vấn đề. http://practicalmaker.com/projects/macroduino-project-page – Orman

0
  1. Cài đặt ArduinoADK BETA 001 là ADK mới nhất hiện có cho đến nay.

  2. Giải nén nó và trong thư mục arduino, bạn sẽ tìm thấy thư viện và thư viện-V2.

  3. Nếu bạn sao chép USB host trong thư viện bạn sẽ nhận được androidaccessory.h đọc lỗi tin

  4. Sao chép USB host từ thư viện V 2 bạn sẽ có thể biên dịch thành công. Tôi đã.