adk-chat-android.ino
El protocolo Google ADK convierte el Android en par: enchufado al USB-A abre un canal serie con la placa sin drivers. La app detecta el fabricante « Arduino » y los bytes fluyen en ambos sentidos.
Hardware necesario
Un Arduino Mega ADK Rev3 (ATmega2560 + chip de host USB MAX3421E con puerto USB-A; el pin digital 7 queda reservado para el reset del MAX3421E). 1 teléfono Android (con app Accessory, p. ej. la demo ADK).
Cableado
Cable USB-A a micro-USB del teléfono; D7 sigue reservado al MAX3421E.
Funcionamiento
AndroidAccessory negocia el modo Accessory (AOAP) en la enumeración; write/read transportan datos, isReady informa del enlace. Placa « Arduino Mega ADK » en el IDE. Para host USB/ADK, instale la biblioteca USB Host Shield 2.0; no use D7. El puerto USB-A alimenta el accesorio a 5 V.
Para ir más lejos
Controle un motor desde la app, muestre un sensor en pantalla o dispare una notificación.
adk-chat-android.ino
// Chat ADK : la carte detecte un Android en mode Accessory (USB-A).
// Bibliotheque : USB Host Shield 2.0 (AndroidAccessory.h).
#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>
AndroidAccessory adk("Arduino", "Mega ADK", "Pont 1.0", "1.0", "Fab", "Num");
void setup() {
Serial.begin(9600);
adk.Init();
Serial.println(F("Attente d'un Android en mode Accessoire..."));
}
void loop() {
if (adk.isReady()) {
// 1) envoyer l'heure de debug vers l'app
String msg = "Bonjour ADK " + String(millis() / 1000);
adk.write(msg.length(), (uint8_t *)msg.c_str());
// 2) lire les commandes de l'app (LED sur '1'/'0')
if (adk.available()) {
char c = adk.read();
digitalWrite(13, c == '1' ? HIGH : LOW);
Serial.print(F("Recu: ")); Serial.println(c);
}
}
delay(500);
}