Lequel de twi.h ?
Parce qu'il y en a deux : pourquoi faire simple quand on peux faire compliqué au royaume Arduino ?
Il existe un twi.h dans l'avr-libC, la mère de toutes les librairies.
Il se trouve à deux endroits (aîe ça se gâte même chez Atmel):
(Nota je suis sous linux, je ne connais pas les chemins Windows mais ce doit être équivalent)
1) usr/lib/avr/includes/utility/twi.h
2) usr/lib/avr/includes/compat/twi.h
Et dans la classe TwoWire on trouve l'autre fichier twi.h :
/arduino/libraries/Wire/utility/twi.h,
Toujours pour simplifier Wire est abusivement appelée une classe.
En réalité "Wire" est un objet instancié à partir de la classe "TwoWire". La preuve à la fin du fichier Wire.cpp on trouve la ligne : TwoWire Wire = TwoWire() .
Pour simplifier encore le fichier arduino/libraries/Wire/utility/twi.c inclu les deux fichier twi.h , celui de l'avr-libC : #include et celui de la classe TwoWire : #include "twi.h" , les appels aux fichiers se faisant soit avec des < > soit des " ".
On ne peut pas dire que les auteurs de la classe TwoWire ignoraient l'existence de de ce fichier puisqu'ils l'utilisent.