LCD I2C-Code-Error

Hallo zusammen,

ich bastel jetzt schon die ganze Zeit daran, den LCD zum laufen zu kriegen, der über einen I2C an meinem Atmega 328 P-PU hängt.

Der Code:

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27);

void setup()
{
  lcd.begin(16,2);
  
  lcd.home();
  lcd.print("Hello ARDUINO");
  lcd.setCursor(0,1);
  lcd.print("World!");
  
  pinMode(9, OUTPUT);
}

void loop()
{
  digitalWrite(9, HIGH);
  delay(50);
  digitalWrite(9, LOW);
  delay(50);
}

(Die blinkende LED hab ich eingebunden, damit ich seh, ob überhaupt was geht.)

Ich verwende dieses Display: http://www.ebay.de/itm/161219589094?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2648
und diesen I2C: http://www.ebay.de/itm/111253304988?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2648

Den I2C hab ich mit SCL an analogen 5 und den SDA am analogen 4 angeschlossen.

DIe Fehlermeldung:

(mit orangen Hintergrund:)
no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int)'

(mit schwarzen Hintergrund:)
sketch_mar08a:5: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int)'
C:\Users\Phillip\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58: note: candidates are: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t)
C:\Users\Phillip\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:56: note: LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&)

Den Code hab ich von hier:
https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home (zweiter Code).

Hoffe, ihr könnt mir helfen

LG

Fipsi

P.S.: Wenn ich die Fehlerzeile mit 3 Ziffern, z. B. für die Pins austausch, dann kommt der Fehöer nicht mehr, funktionieren tut trotzdem nichts.

Hallo , das Problem hatte ich auch , habe lange gesucht! versuch mal den Link, das passt zu deinem I2C Modul, einfach testen!

http://arduino-info.wikispaces.com/LCD-Blue-I2C#v1

MfG Marco

Hey,

den Code hatte ich auch schon gefunden. Funktioniert auch nicht, bleibt die gleiche Fehlerzeile und der gleiche Fehler.

LG

Fipsi

Ist seltsam, da der Konstruktor definitiv in der Lib existiert:

LiquidCrystal_I2C (uint8_t lcd_Addr);

Du kannst auch mal eine andere Lib probieren:
http://www.dfrobot.com/image/data/DFR0154/LiquidCrystal_I2Cv1-1.rar
http://www.dfrobot.com/wiki/index.php?title=I2C_TWI_LCD2004_(SKU:DFR0154)
Bei der übergibt man im Konstruktor die Adresse und die Größe und macht dann in setup() init() ohne Parameter.

Ich kann es nicht mit Arduino IDE 1.0.5 laden, warum auch immer kommt Fehler. Ich verwende Atmel Studio 6 und damit geht´s.
Ich habe so 6St. von den I2C Modulen und alle funktionieren ohne Probleme auch mit 16x4 LCD. Lade dir noch mal die Lib´s neu runter, kann auch helfen.

MfG Marco

So.. hab jetzt mal den Code ein wenig abgeändert:

LiquidCrystal_I2C lcd(0X20, 16, 2); // (oder auch bei 0X27 passiert nichts)

void setup()
{
lcd.init();
lcd.backlight();
lcd.home();
lcd.print("Hello ARDUINO");
lcd.setCursor(0,1);
lcd.print("World!");
}

Fnktionieren tut immer noch nichts. Dis Hintergrundgeleuchtet blinkt mehrmals für ein paar Millisekunden auf und dann ist wieder Ende. An der Anzeige ändert sich nichts.

Und die Lib's hab ich mir heut erst runter geladen.

LG

Fipsi

P.S.: Das blinken des Display's ist nur bei 0X27, bei 0X20 passiert nichts.

Das war ich geschrieben habe ist für eine andere Lib!

Serenifly:
Das war ich geschrieben habe ist für eine andere Lib!

Setzt ich diesen Code und Lib ein, dann ist auch nichts anders, außer dass die Hintergrund-LED länger blinkt.

LG

Fipsi

Geht es an deinem UNO? Nicht dass das Problem wieder irgendwie an dem blanken Prozessor hängt.

Kann ich noch nicht sagen, ich hab den noch nicht, der ist noch unterwegs.

LG

Fipsi

Hi, mal eine ganze einfache Frage, hast du den Kontrast schon mal geändert? Also am Poti auf dem Modul?
Die Adresse 0x27 ist die Richtige und 3x blinken, bedeutet erkannt!
Mit was lädts du den sketch?

MfG Marco

Hey,

ja, hab ich. Wenn ich das Display ohne Datenleitungen in Betrieb nimm oder nicht ansteuer, dann ist es so eingestellt, dass die obere Reihe sehr gut aus vollen Blöcken erkennbar ist und die untere Reihe leer (bei jeder Stellung allerdings, ich denke, die ist leer programmiert).

Wenn 3x blinken erkannt bedeutet, müsste doch eigentlich auch was angezeigt werden, oder?

Den Sektch lade ich mit einem ISP-Programmer hoch.

LG

Fipsi

So.. mit diesem Code hab ich jetzt die Hintergrundbeleuchtung anbekommen:

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup()
{
  lcd.init();
  lcd.display();
  lcd.home();
  
  lcd.print("Hello");
  lcd.setCursor(0,1);
  lcd.print("Display");
  
  pinMode(9, OUTPUT);
}

void loop()
{
  digitalWrite(9, HIGH);
  delay(50);
  digitalWrite(9, LOW);
  delay(50);
}

(Was hat gefehlt? lcd.display(); )

Allerdings hab ich jetzt immer noch das Problem, dass nur die vollen Felder in der oberen Reihe angezeigt werden anstatt von der Schrift.

LG

Fipsi

Hi, erst mal fehlt in der setup ein Delay von 1000 oder mehr. versuch es mal damit.
Wenn du das Modul verwendest, dann geht dein LCD 0x27,........ nicht
du musst sowas verwenden ( auf dem Modul andere Pinbelegung)
////////////LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#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);
}

MfG Marco

beginner34:
Hi, erst mal fehlt in der setup ein Delay von 1000 oder mehr. versuch es mal damit.
Wenn du das Modul verwendest, dann geht dein LCD 0x27,........ nicht
du musst sowas verwenden ( auf dem Modul andere Pinbelegung)
////////////LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#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);
}





MfG Marco

Wenn ich das Copy + Paste mach, kommt wieder der Fehler, dass ich bei LiquidCrystal_I2C lcd(0x38); // Set the LCD I2C address mehr brauch (also mach ich ",16,2" wieder dazu), dann geht auch nichts. Lösch ich diese Zeile und lass die Zeile drunter verwenden, meckert er, dass POSITIVE nicht deklariert ist.

Das übrigens bei dem UNO, der heute kam.

LG

Fipsi

Du hättest die Adresse ändern sollen. Aber der gleiche fehler kam bei mir auch. Ich habe dann das ganze mit Atmel Studio auf gespielt. Warum es in der Arduino IDE nicht geht, weiß ich nicht. Hatte noch keine Zeit dafür.
Im Atmel Studio geht der Code von der Webseite ohne einer Fehlermeldung. Du kann ihn auch im Studio testen und da sollten keine Fehler kommen.

MfG Marco

Die Adresse hab ich auf 0X27 schon geändert.

Des Atmel Studio wollt ich schon mal installiern, allerdings kam da immer eine Fehlermeldung, warum auch immer.

LG

Fipsi

Okay, Atmel Studio hab ichjetzt zum laufen gekriegt. Aber gibt's des auch auf Deutsch? Oder kann mir jemand sagen, wie ich damit Sketche drauf krieg? Englisch kann ich nicht als eine meiner Stärken nennen.

LG

Fipsi

Hallo,

ich habe das gleiche I2C-Modul wie du. Ich habe es wegen des Flackerns ohne Anzeige als defekt verbucht gehabt. Dank dieses Threads habe ich es mir nochmals vorgenommen.

Ich habe die Library von https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads genommen und den ersten Beispielcode von dieser Seite.

Sketch hochgeladen und es funktioniert!!!!

Theseus:
Hallo,

ich habe das gleiche I2C-Modul wie du. Ich habe es wegen des Flackerns ohne Anzeige als defekt verbucht gehabt. Dank dieses Threads habe ich es mir nochmals vorgenommen.

Ich habe die Library von https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads genommen und den ersten Beispielcode von dieser Seite.

Sketch hochgeladen und es funktioniert!!!!

Könnte mir mal bitte jemand erklären, was zum Teufel bei mir da falsch läuft?

LG

Fipsi

P.S.: Falls jemand meinen Ton als genervt/aggresiv interprtieren sollte, ist es gegen keine Person gerichtet, es geht mir nur auf'n Keks, dass bei mir nich das klappt, was bei jedem anderem funktioniert.