PS: ligne 40 de ta lib est-ce normal les double point virgule ? " return Wire.read();; "
fôte de phrape
Le Wire.begin n'est pas dans la lib car on peut avoir plusieurs instances ou plusieurs chips sur l'I2C
Donc dans mon exemple d'utilisation il est dans setup()
De même je n'accède pas à l'I2C dans le constructeur.
En effet il faut être conscient que pour tous les objets instanciés en variable globale, le constructeur est appellé AVANT setup() !!!!!
Je pense que ton problème est là.
Je suggère :
1) Vire tout accès à l'I2C des constructeurs de tes classes. Dans les constructeurs ne touche pas au hard d'une manière générale (même pas pinmode ou digitalRead/digitalWrite), contente toi d'initialiser tes variables uniquement.
Met toute l'init hard dans une fonction begin().
2) dans setup() appelle Wire.begin
puis appelle la fonction begin() de tes objets.