NXT Shield per Arduino Mega

Salve ragazzi sto cercando di usare la NXTShield MX su Arduino Mega.

Questa shield mi fornisce tutte le librerie necessarie, compresa la documentazione ma a causa della mia poca esperienza ho riscontrato dei problemi.

Devo leggere il registro 0x41 della mia shield per leggere il voltaggio dell'alimentazione.

Questo è il mio programma:

#include <Wire.h>
#include <NXShield.h>
#include <NXShieldI2C.h>


NXShield         nxshield;
NXShieldI2C      Shield();



int a;



void setup() {
  
  Serial.begin(9600);

  nxshield.init( SH_SoftwareI2C );

  Serial.println ("Press GO button to continue");
  nxshield.waitForButtonPress(BTN_GO);

}

void loop() {

  a = Shield.readByte(0x41);

  Serial.println(a);
  
  delay(1000);
}

Non ci so fare molto con la programmazione a oggetti... Potete dirmi dove sto sbagliando?

L'errore è questo: error: request for member 'readByte' in 'Shield', which is of non-class type 'NXShieldI2C ()()'

Link alla documentazione della libreria: http://www.openelectrons.com/NXShield/html/class_n_x_shield_i2_c.html#a1cff5922dedb607a0b40097b47a66013

Quando dichiari i due oggetti:

NXShield         nxshield;
NXShieldI2C      Shield();

Non mettere le tonde, il secondo le metti, non credo devi metterle.

Mi da errore se non le metto... in teoria dovrei passargli il parametro i2c_address, se non metto nulla dovrebbe fare lui di default.

Guardando il .h non mi pare puoi tralasciare quel parametro:
http://www.openelectrons.com/NXShield/html/_n_x_shield_i2_c_8h_source.html

Devi passargli il valore, qui http://www.openelectrons.com/NXShield/html/class_n_x_shield_i2_c.html dice:

NXShieldI2C::NXShieldI2C ( uint8_t i2c_address )
Class constructor for the NXShieldI2C; derived from both BaseI2CDevice and SoftI2cMaster; i2c address must be passes as a parameter

Solo la classe NXShield ha due parametri opzionali. Quella I2C "must" passare parametro.

Grazie mille per la risposta, nel file pdf dei registri I2C mi dice che il Device ID della shield va dal registro 0x10 a 0x17, se inserisco come parametro 0x10 non mi da più errori di compilazione ma non mi segna il voltaggio della batteria quindi non funziona... che parametro devo passare quindi?

Provali tutti, da 0x10 a 0x17 ;D

Non conosco il prodotto, non c'e' scritto questo valore sui doc allegati al prodotto ?