adk-chat-android.ino
Le protocole Google ADK fait de l'Android un pair : branché sur le port USB-A, il ouvre un canal série avec la carte sans driver. L'app détecte le fabricant « Arduino » et échange des octets dans les deux sens.
Matériel requis
Une Arduino Mega ADK Rev3 (ATmega2560 + puce hôte USB MAX3421E avec port USB-A, broche D7 réservée au reset du MAX3421E). 1 téléphone Android (avec une app Accessory, ex. demo ADK ou Arduino accessory).
Branchement
Câble USB-A vers micro-USB du téléphone ; D7 reste réservée au MAX3421E.
Fonctionnement
AndroidAccessory négocie le mode Accessory (AOAP) à l'énumération ; write/read transportent les données, isReady signale la connexion. Carte « Arduino Mega ADK » dans l'IDE. Pour l'hôte USB/ADK, installez la bibliothèque USB Host Shield 2.0 ; ne pas utiliser D7. Le port USB-A alimente l'accessoire en 5 V.
Pour aller plus loin
Pilotez un moteur depuis l'app, affichez un capteur sur l'écran du téléphone, ou déclenchez une notification.
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);
}