1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- // The source for the Android application can be found at the following link: https://github.com/Lauszus/ArduinoBlinkLED
- // The code for the Android application is heavily based on this guide: http://allaboutee.com/2011/12/31/arduino-adk-board-blink-an-led-with-your-phone-code-and-explanation/ by Miguel
- #include <adk.h>
-
- //
- // CAUTION! WARNING! ATTENTION! VORSICHT! ADVARSEL! ¡CUIDADO! ВНИМАНИЕ!
- //
- // Pin 13 is occupied by the SCK pin on various Arduino boards,
- // including Uno, Duemilanove, etc., so use a different pin for those boards.
- //
- // CAUTION! WARNING! ATTENTION! VORSICHT! ADVARSEL! ¡CUIDADO! ВНИМАНИЕ!
- //
- #if defined(LED_BUILTIN)
- #define LED LED_BUILTIN // Use built in LED
- #else
- #define LED 9 // Set to something here that makes sense for your board.
- #endif
-
-
- // Satisfy IDE, which only needs to see the include statment in the ino.
- #ifdef dobogusinclude
- #include <spi4teensy3.h>
- #include <SPI.h>
- #endif
-
- USB Usb;
- ADK adk(&Usb, "TKJElectronics", // Manufacturer Name
- "ArduinoBlinkLED", // Model Name
- "Example sketch for the USB Host Shield", // Description (user-visible string)
- "1.0", // Version
- "http://www.tkjelectronics.dk/uploads/ArduinoBlinkLED.apk", // URL (web page to visit if no installed apps support the accessory)
- "123456789"); // Serial Number (optional)
-
- uint32_t timer;
- bool connected;
-
- void setup() {
- Serial.begin(115200);
- #if !defined(__MIPSEL__)
- while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
- #endif
- if (Usb.Init() == -1) {
- Serial.print("\r\nOSCOKIRQ failed to assert");
- while (1); // halt
- }
- pinMode(LED, OUTPUT);
- Serial.print("\r\nArduino Blink LED Started");
- }
-
- void loop() {
- Usb.Task();
-
- if (adk.isReady()) {
- if (!connected) {
- connected = true;
- Serial.print(F("\r\nConnected to accessory"));
- }
-
- uint8_t msg[1];
- uint16_t len = sizeof(msg);
- uint8_t rcode = adk.RcvData(&len, msg);
- if (rcode && rcode != hrNAK) {
- Serial.print(F("\r\nData rcv: "));
- Serial.print(rcode, HEX);
- } else if (len > 0) {
- Serial.print(F("\r\nData Packet: "));
- Serial.print(msg[0]);
- digitalWrite(LED, msg[0] ? HIGH : LOW);
- }
-
- if (millis() - timer >= 1000) { // Send data every 1s
- timer = millis();
- rcode = adk.SndData(sizeof(timer), (uint8_t*)&timer);
- if (rcode && rcode != hrNAK) {
- Serial.print(F("\r\nData send: "));
- Serial.print(rcode, HEX);
- } else if (rcode != hrNAK) {
- Serial.print(F("\r\nTimer: "));
- Serial.print(timer);
- }
- }
- } else {
- if (connected) {
- connected = false;
- Serial.print(F("\r\nDisconnected from accessory"));
- digitalWrite(LED, LOW);
- }
- }
- }
|