Je moet even 2 pull-up weerstanden tussen je vcc zetten en je sda en scl. Standaard zijn de anologe pinnen "low" echter moeten deze "high" zijn anders komt de data niet door.
Ikzelf gebruik weerstanden van 4,5 K ohm, maar alles tussen de 1800 ohm tot 10k ohm zou moeten werken.
2e plaatje staat 3,3v (zal ook wel werken), ik hang hem altijd aan de +5v vcc.
Contrast pot heeft hier niks mee te maken als je de witte blokjes op je scherm ziet verschijnen. Al zet je hem helemaal open of dicht je ziet altijd wel tekst alleen iets minder duidelijk.
Ik heb even een tekening gemaakt in fritzing dat ziet er iets makkelijker uit dan een schema. Helaas had ik even geen IIC LCD in Fritzing zitten dus moest het even los tekenen maar je snapt het idee. Zorgen wel dat je je SDA en SCL goed hebt zitten.
Edit: zie nu net dat ik niet heb gekeken naar de waardes van de weerstanden in de tekening maar alles boven de 2k ohm werkt!
Contrast pot heeft hier niks mee te maken als je de witte blokjes op je scherm ziet verschijnen. Al zet je hem helemaal open of dicht je ziet altijd wel tekst alleen iets minder duidelijk.
Dat is niet mijn ervaring (met meerdere displays getest). Hangt er waarschijnlijk vanaf wat voor type LCD je hebt.
Of eens kijken of het adres juist is, met de volgende code kan je dit vinden.
// --------------------------------------
// i2c_scanner
//
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
//
// This sketch tests the standard 7-bit addresses
// from 0 to 127. Devices with higher bit address
// might not be seen properly.
//
// Adapted to be as simple as possible by Arduino.cc user Krodal
//
// June 2012
// Using Arduino 1.0.1
//
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 0; 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(8000); // wait 8 seconds for next scan
}
Dat is inderdaad een prima sketch, krijg je een error terug weet je zeker dat je pull-up niet goed zit. Krijg je wel wat terug en heb je het juiste adres dan moeten we het probleem ergens anders zoeken...
Ikzelf heb bij deze leverancier een 4x20 LCD I2C gekocht welke ik niet werkend kreeg.
Bleek dat een complete zending die ze binnen gekregen hadden niet goed was.
Na enkele weken een nieuwe gekregen die het wel deed.
Bedankt voor de library en instructies, na een avondje klooien heb ik de hello world op de LCD gekregen met uw geposte library.
Voor de anderen, deze LCDs blause 16,2 komen ook bij mij van banggood.
Via de nI2C scanner gevonden dat het idd adres 0x27 is.