Problem mit 20x4 LiquidCrystal Display

Ich habe Probleme mein LiquidCrystal Display zum laufen zu bekommen.

Ich habe mir die Libary LiquidCrystal_V1.2.1.zip hier geladen: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
und sie in den Ordner Programme Arduino Libaries geladen. (Wird auch korrekt unter Beispiele angezeigt)

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);

void setup()
{
   Serial.begin(9600);  // Used to type in characters
   lcd.begin(20,4);         // initialize the lcd for 20 chars 4 lines
   lcd.setCursor(3,0); //Start at character 4 on line 0
   lcd.print("Hello, world!");
}

void loop()
{
}

Ich möchte den folgenden Sketch übertragen, erhalte aber folgende Fehlermeldung:

HelloWorld:4: error: 'NEGATIVE' was not declared in this scope

LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);
Habe ich der Seite des Verkäufers entnommen!

Ansonsten bin ich ähnlich dieser Anleitung vorgegangen:
http://arduino-info.wikispaces.com/LCD-Blue-I2C#v2

Könnt ihr mir bitte weiterhelfen? Danke!

Du kannst nicht einfach einem Tutorial folgen und eine andere Libary nutzen! Das geht nicht.

Du hast Beispielsdateien bei deiner Libary dabei.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>



#define BACKLIGHT_PIN     13

LiquidCrystal_I2C lcd(0x38);  // Set the LCD I2C address

//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);  // Set the LCD I2C address


// Creat a set of new characters
const uint8_t charBitmap[][8] = {
   { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
   { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
   { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
   { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
   { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
   { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
   { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
   { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
   
};

void setup()
{
   int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));

  // Switch on the backlight
  pinMode ( BACKLIGHT_PIN, OUTPUT );
  digitalWrite ( BACKLIGHT_PIN, HIGH );
  
  lcd.begin(16,2);               // initialize the lcd 

   for ( int i = 0; i < charBitmapSize; i++ )
   {
      lcd.createChar ( i, (uint8_t *)charBitmap[i] );
   }

  lcd.home ();                   // go home
  lcd.print("Hello, ARDUINO ");  
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print (" FORUM - fm   ");
  delay ( 1000 );
}

void loop()
{
   lcd.home ();
   // Do a little animation by writing to the same location
   for ( int i = 0; i < 2; i++ )
   {
      for ( int j = 0; j < 16; j++ )
      {
         lcd.print (char(random(7)));
      }
      lcd.setCursor ( 0, 1 );
   }
   delay (200);
}

Habe ich auch nicht gemacht.

Er schreibt auch, das er die Libary genommen hat und der Verkäufer hat auch

Tutorial:

// Get the LCD I2C Library here: 
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

Verkäufer des Displays, ein 1 X IIC/I2C/TWI 2004 Serial LCD Module:

LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE);

Oder bin ich da auf dem falschen Dampfer?

Hier der Link zum Display, brauch ich eventuell eine ältere Libary?

EDIT:

Das überspielen hat nun geklappt....doch leider zeigt das Display nur Vierecke in Zeile 1 und 3.

Habe auch mal beide Sketches (Positive und Negative) von hier ausprobiert, leider ohne Erfolg :frowning:
http://arduino-info.wikispaces.com/LCD-Blue-I2C#v2

Vierecke deuten auf falsche Initialisierung hin. Es kann aber auch an einem deutlich zu hoch eingestellten Kontrast hindeuten.

Hallo,
Verdrahtungsfehler, Wiederstände am I2C-Bus?
Den Link zum Display...
Gruß und Spaß
Andreas

Danke für die schnellen Antworten:

http://www.aliexpress.com/snapshot/6194623724.html

Verkabelung wie folgt:

GND -> GND
VCC -> 5V
SDA ->A4
SCL -> A5

mehr brauch das Display anscheinend nicht?

Mit dem Kontrast habe ich experimentiert...die Vierecke verschwinden, es kommt aber nicht anderes (leere)

EDIT: Hab jetz sämtliche Sketches und Initialisierungen durchprobiert, es bleibt unverändert..bei den Vierecken in Zeile 1 und 3.

Auf dem Display steht hinten LCM1602 IIC V1, daher gehe ich davon aus, das

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

die richtige Initialisierung ist.

Hallo,
an den I2C gehören PullUp Widerstände so um die 4,5k
SDA-Widerstand-Versorgungsspannung
SCL-Widerstand-Versorgungsspannung

Dann steht da noch folgendes:

Also got the display to work on 'new liquid crystal' library.
On new i2c board (GY-LCD-V1) address is 0x20 (but in description still says 0x27)

LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE); // Set the LCD I2C address

Gruß und Glück
Andreas

Danke!

Ich habe den LCM1602 IIC V1

daher sollte es

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

sein!

Hast du einen Schaltplan für mich? das heißt ich muss noch 5V an SCDA und SCL beide mit einem 4500 Ohm Widerstand anschließen?

Hallo,
als aller erstes teste ich immer die Adresse mit dem I2CScanner:

// I2C Scanner
// Written by Nick Gammon
// Date: 20th April 2011

#include <Wire.h>

void setup() {
  Serial.begin (9600);
  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;

  Wire.begin();
  for (byte i = 1; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

Gruss
Kurti

I2C scanner. Scanning ...
Done.
Found 0 device(s).

Hier ist nichts von Widerständen und Versorgungsspannung zu sehen.

Hab jetzt rausgefunden das sie am Mega an Digital 20 und 21 müssen...aber auch da nichts :frowning:

Arduino Mega, SDA is digital pin 20 and SCL is 21.

Langsam bin ich mit meinem Latein am Ende!

Hallo,
warum am Ende- im Gegenteil, Fehler gefunden.
"I2C scanner. Scanning ...
Done.
Found 0 device(s)."

Mit Deinem I2C Bus stimmt etwas nicht. Was ist es den für ein Arduino?
Und suche Dir Widerstände.
Gruß und Spaß
Andreas

Hallo 'ohne Angst',

dein Display meldet sich nicht am Bus.
Ich habe etliche von den Platinen im Einsatz, Widerstände musste ich bisher nicht dazuschalten.

Ich rate Dir, die Verdrahtung zu kontrollieren.
Plus und Minus vertauscht oder falsche Pins am Arduino erwischt sind Klassiker.
Auf der I2C Platine müsste auch eine Power-LED sein, leuchtet die ?
und natürlich:
hast Du den Bus richtig angeschlossen ?

Am einfachsten: die 4 Strippen entfernen und sorgfältig erneut stecken.
Dann I2C Test

Gruss
Kurti

Recht hast du! War ein Verkabelungsproblem! Vielen Dank!