Piet en Frank, jullie zien één detailtje over het hoofd ... Het ADRES van het display.
Niet alle display'tjes hebben hetzelfde adres in I2C.
Daarvoor zit er bij de driver library een programmaatje bij (dat je vindt in je arduino omgeving bij voorbeelden) en dat heet I2Cscanner of iets gelijkaardig.
Sluit alles aan, draai dat programma en kijk eens welk adres hij aangeeft bij het scannen van de I2C bus.
Dat adres moet je dan gebruiken in je programma.
Hier is de broncode van die scan tool:
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}