Ja, er zijn veel sukkels minder handige mensen die onnodig gecompliceerde progammas schrijven.
Reageert het ding helemaal niet? Controleer of je gewoon na de adres-fase een "ACK" krijgt. Loop alle adressen af.
Met I2C is het lastige dat er 7 adres bits zijn. Het ONDERSTE bitje geeft aan of het om een READ of een write gaat. Als je dan de bovenste 7 bits als 7-bit adres ziet dan zijn de adressen 0-127. Andere mensen vinden het prettiger om te werken met 8 bit adressen, waarbij alle even adressen bestaan en de oneven niet. (of even zijn write adressen, oneven zijn read). Nu is de range ineens 0-254.
Door deze verwarring kan jij volgens het datasheet zien dat het adres 0x40 is, maar mogelijk gebruiken je i2c routines de andere conventie. Gevolg, in je code moet je geen 0x40 maar 0x20 of 0x80 opgeven.
Ik zou voorstellen gewoon alle adressen te scannen en te kijken wanneer je een ACK krijgt.