Arduino Uno en LCD 16x2 I2C met backlight

Hoi,

Als newbie op het gebied van Arduino ben ik aan het experimenteren met een LCD Display (details zie op onderstaande links).

https://iprototype.nl/products/components/led-lcd/lcd16x2-I2C-BL

Zoals aangegeven op deze link heb ik de LCD aangesloten op analoog 4 en 5.

Helaas krijg ik enkel witte blokjes op het scherm en niet de gehoopte "Hello World".

Weet iemand raad?

Heb al adres 20 en 27 geprobeerd maar zonder resultaat.

greetz,

Bart

Hieronder mijn code:

//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
Serial.begin(9600);
lcd.init(); // initialize the lcd

// Print a message to the LCD.
lcd.backlight();
lcd.println("Hello, world!");
Serial.println("Hello World!");
}

void loop()
{
}

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 potmeter goed ingesteld?

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 vermoed dat je met pull weerstanden gewone weerstanden bedoeld?

heb nl net verschillende opstellingen geprobeerd met onderstaande maar zonder positief resultaat

https://iprototype.nl/products/components/resistors/3K3

Bart

Kan je even een foto posten hoe je het nu hebt aangesloten?

Ow en na je upload even een keer je reset knop van je arduino indrukken!

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.

probeer eens:

lcd.setCursor(0,0); // de positie waar hij moet beginnen met de tekst
lcd.print("Hello, world!");

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...

net alles aangesloten zoals voorgesteld en de de sketch geupload maar krijg steeds de melding No I2C devices found...

wat nu?

Bart

Dan moet het toch ergens in de aansluiting zitten... Kan je een foto maken van je opstelling?

Welke arduino heb je? Een Uno rev3 toevallig, want dan zit je SDA en SCL niet op 4 en 5 maar boven je digitale-i/o's

het is inderdaad een uno rev 3 en had reeds geprobeerd om ze op de SDA en SCL rechtstreeks aan te sluiten.

maar nu krijg ik wel onderstaande bij het uitvoeren van de sketch

I2C device found at address 0x20 !
I2C device found at address 0x7C !

Probleem is nog steeds dat mijn tekst er niet op komt.

Bart

Ik heb hetzelfde display aangeschaft en deze krijg je werkend door het juiste adres in te stellen en de correcte library te gebruiken.

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.

erbij

was het een LCD display van www.Banggood.com een LCM 1602 IIc V1 (T313S06)
aangezien ik dezelfde problemen heb

Cuylenborg peter

@TOMh65

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.

Succes en bedankt

Frank