Besoin d'aide sur Mega ADK et Arduino 1.0

Bonjour à tous,

je commence à m'arracher les cheveux sur ce problème, j'ai besoin de vos lumières =(

je possède une carte Arduino Mega ADK et le module "Mega Sensor Shield" de Tinkerkit.
J'essaie de faire fonctionner le programme DemoKit avec un téléphone Samsung Galaxy Nexus.
Le programme Android tourne sur le Nexus, sur la carte Arduino j'ai mis un programme "light" du DemoKit" avec une seule Led branchée sur le O1 et que j'allume ou éteint depuis le Nexus (en appuyant sur le bouton On/Off Relay1 de la page "Out" pour ceux qui connaissent l'appli DemoKit).

Voici le programme que j'utilise :

#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>

#define  LED1         10

AndroidAccessory acc("Google, Inc.",            // Manufacturer
                     "DemoKit",                 // Model
                     "DemoKit Arduino Board",   // Description
                     "1.0",                     // Version
                     "http://www.android.com",  // URI
                     "0000000012345678");       // Serial

void setup();
void loop();

void init_led()
{
  pinMode(LED1, OUTPUT);
}

void setup()
{
  Serial.begin(115200);
  Serial.print("\r\nADK Started\r\n");

  init_led();

  // Power On Android Accessory interface and init USB controller
  acc.powerOn();
}

void loop()
{
  byte data[3];
  if (acc.isConnected()) {
    int len = acc.read(data, sizeof(data), 1);
    if (len > 0) {
      if (data[0] == 0x3) {
        if (data[1] == 0x0) {        
          digitalWrite(LED1, data[2] ? HIGH : LOW);   
          Serial.print("Toggle LED\r\n");
        }
      }
    }
  }

  delay(10);
}

Tout fonctionne correctement si j'utilise la version "Arduino1.0-Beta 1"
Si j'utilise le même code sur la version "Arduino1.0" j'obtiens ces erreurs à la "vérification" :

In file included from sketch_mar09c.cpp:3:
C:\Documents and Settings\[...]\WP1\IO android\arduino-1.0\libraries\AndroidAccessory/AndroidAccessory.h:71: error: conflicting return type specified for 'virtual void AndroidAccessory::write(uint8_t)'
C:\Documents and Settings\[...]\WP1\IO android\arduino-1.0\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'

Je précise que les 2 versions possèdent exactement les mêmes dossiers "AndroidAccessory" et "USB_Host_Shield" qui proviennent de l'"arduino_bundle_ADK" (comme indiqué ici : http://labs.arduino.cc/ADK/AccessoryMode) dans leur dossier "librairies".

Ainsi que le même dossier "CapSense", issu du "CapSense04.zip" censé être compatible avec la version 1.0.

Je comprend bien qu'il y a eu beaucoup de changements entre la version 0023 et la 1.0, mais pourquoi un programme qui fonctionne sur la 1.0beta ne fonctionne pas sur la 1.0 "officielle" ??? :~

Merci pour l'aide que vous pourrez m'apporter, c'est très important pour moi.

Yep!

Je ne pense pas que l'on soit nombreux à posseder to configuration.

Pourrais-tu nous mettre la partie du code de la bibliothèque AndroidAccessory.cpp qui plante, en l'occurence virtual void AndroidAccessory::write(uint8_t)

Cà nous aiderait à voir ce qu'elle fait exactement.

overriding signifie dépassement d'une taille de donnée, en l'occurence uint8_t !!!

As-tu testé sans les guillemets ici ???

AndroidAccessory acc("Google, Inc.",            // Manufacturer
                     "DemoKit",                 // Model
                     "DemoKit Arduino Board",   // Description
                     "1.0",                     // Version
                     "http://www.android.com",  // URI
                     0000000012345678);       // Serial

ou

AndroidAccessory acc("Google, Inc.",            // Manufacturer
                     "DemoKit",                 // Model
                     "DemoKit Arduino Board",   // Description
                     "1.0",                     // Version
                     "http://www.android.com",  // URI
                     "12345678");       // Serial

@+

Zoroastre.

radskin:

In file included from sketch_mar09c.cpp:3:

C:\Documents and Settings[...]\WP1\IO android\arduino-1.0\libraries\AndroidAccessory/AndroidAccessory.h:71: error: conflicting return type specified for 'virtual void AndroidAccessory::write(uint8_t)'
C:\Documents and Settings[...]\WP1\IO android\arduino-1.0\hardware\arduino\cores\arduino/Print.h:48: error:   overriding 'virtual size_t Print::write(uint8_t)'




mais pourquoi un programme qui fonctionne sur la 1.0beta ne fonctionne pas sur la 1.0 "officielle" ??? :~

Je dirais un problème entre version dont le type de valeur de retour des méthode héritée sont différente ... je n'ai pas la version 1.0 beta mais sous la 0.23

virtual void write(uint8_t) = 0; //0.23 

virtual size_t write(uint8_t) = 0;//1.0

Je suppose que la modif n'avait pas encore été faite entre la beta et la final ?

osaka:
Je dirais un problème entre version dont le type de valeur de retour des méthode héritée sont différente ... je n'ai pas la version 1.0 beta mais sous la 0.23

0023 -> return void
1.0 -> return uint8_t

C'est bien un probléme de compatibilité, regarde ce que retourne write() et utilise la version de l'ide adéquate :wink:

(Ps: durant la 1.0-beta les types de retours n'avait pas était modifié, c'est à partir des 1.0-RCx que les types ont étais modifié)