I2C Library

Hallo,

Ich habe da ein Problem mit einem I2C Modul
Ich habe mir für mein LCD Display (1602 ) und vielleicht noch zu Porterweiterung dieses Modul geholt:
http://www.ebay.de/itm/201004359626?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Habe ein Arduino NANO V3 , Arduino Version 1.6...
Doch ich bekomme diesen einfachen Code nicht richtig zum laufen:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2);
 
void setup()
{
    lcd.init();
    lcd.setCursor(0,0);
    lcd.print("Hello, world!");
}
 
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Sek. seit Start");
  lcd.setCursor(0,1);
  lcd.print(millis()/1000);
}

Es wird immer nur das erste Zeichen der Zeile angezeigt.
Also bei den obigen Code: 1.Zeile: „H „ , 2.Zeile : „ eine Ziffer zählt hoch „
Wenn ich den loop weg lasse und „Hallo, world!“ in zwei Zeilen schreiben bekommen ich nur die ersten Buchstaben pro Zeile. An welcher Stelle das Wort bzw. nur der erste Buchstabe steht kann ich frei wählen.
Wenn ich jeden Buchstaben einzeln befehle:
lcd.setCursor(0,0);
lcd.print("H");
lcd.setCursor(1,0);
lcd.print("e");
lcd.setCursor(2,0);
lcd.print("l");
….
Kann ich ein Wort schreiben.

Ich habe verschieden Library´s ( LiquidCrystal_I2C.h) durchprobiert immer das gleiche Ergebnis.
Mit der Wire.h Library habe ich nix gemacht ( mit Arduino Software von diesem Jahr ).
Bei den Library´s gab es ein Beispiel-Code wie man per Serial Monitor Zeichen übertragen kann und da kann ich ganze Wörter auf den LCD übertragen.
Ich habe es mit zwei Adressen versucht:
(0x20,16,2)und(0x27,16,2) (alle A0-A2 Brücken beim PCF8574 rein und wieder raus )
Display habe ich auch schon ausgetauscht.
SDA und SCL über 10kOhm mit Masse verbunden.
Schaltung separat aufgebaut ( um Störungen auszuschließen )

Ich könnte zwar jetzt jedes Zeichen einzeln schreiben aber das ist ja nicht im sinne des Erfinders und wenn da irgendwo der Wurm drin ist will ich nicht drauf aufbauen.

Das liegt nicht an der Library, das ist ein bekanntes Problem der Arduino IDE, V1.6.6.
Nimm die 1.6.5 oder 1.6.8, dann wird es funktionieren.

Und die I2C-Leitungen darfst du nicht gegen Masse schalten, sondern über den Widerstand (besser 4,7 k) gegen + 5Volt.

So ne Antwort habe ich gebraucht :slight_smile:
Und dann gleich die erste …
Danke

Und die I2C-Leitungen darfst du nicht gegen Masse schalten, sondern über den Widerstand (besser 4,7 k) gegen + 5Volt.
Ja stimmt! einfach falsch aufgeschrieben !

Dogger330:
So ne Antwort habe ich gebraucht :slight_smile:
Und dann gleich die erste …
Danke

Und die I2C-Leitungen darfst du nicht gegen Masse schalten, sondern über den Widerstand (besser 4,7 k) gegen + 5Volt.
Ja stimmt! einfach falsch aufgeschrieben !

Na prima, dann freue ich mich auf ein Karma von dir.

Vielen Dank :slight_smile:

Ich werde es heute Abend ausprobieren können !
Dein Karma hast du schon !
Kann die arduino IDE direkt im Programm updaten oder muss ich sie neu installieren?

Dogger330:
Ich werde es heute Abend ausprobieren können !
Dein Karma hast du schon !
Kann die arduino IDE direkt im Programm updaten oder muss ich sie neu installieren?

Ja, habe ich gesehen, danke.

Das Update kannst du als "ZIP-Version" reinkopieren oder als komplette Version installieren. Dazu muss die vorherige deinstalliert werden. Ich würde die Zip-Version wählen.

:frowning:
Hat leider auch nicht mit der Arduino IDE 1.6.8 funktioniert. Macht genau die gleichen Fehler wie mit 1.6.7 .
:frowning:

Ich denke das es eigentlich nur am Programm liegen kann da ja eine Übertragung mit dem Serial Monitor funktioniert. Den Code habe ich vom Beispiel und hab auch schon andere aus dem Netz getestet. Jetzt habe ich auch die neue Arduino IED … Ich bin ratlos :confused:

Das ist allerdings merkwürdig.
Ok, ich hatte gelesen, du hast die V1.6.6, bei der 1.6.7 ist mir das auch nicht bekannt.
Ich sehe mir deinen Sketch mal an.

Edit:
Der Sketch ist es bestimmt nicht.
Hast du die IDE nur reinkopiert?
Wenn ja, ist das wohl das Problem. Dann solltest du doch eine Deinstallation durchführen und die neue neu installieren.
Teste es dann mal mit der 1.6.5, das weiß ich, dass es funktioniert.

Den loop kannst du auch weg lassen.
Auch ohne den schreibt er nur das H von "Hello, world!"

Dogger330:
Den loop kannst du auch weg lassen.
Auch ohne den schreibt er nur das H von "Hello, world!"

Ja, das ist sehr einfach.
Da kompiliert etwas nicht richtig.
Ich kann jetzt nur vermuten, das ein "reinkopieren" dabei nicht funktioniert.

HotSystems:
Ich kann jetzt nur vermuten, das ein "reinkopieren" dabei nicht funktioniert.

Ich habe es auch mit dem Beispiel Sketch versucht und da habe ich nur die Zeile

LiquidCrystal_I2C lcd(0x27,16,2);

angepasst.

Nix kopiert und eingefügt ist ein fertig geschriebenes Programm von dem Entwickler der Library.

Dogger330:
Ich habe es auch mit dem Beispiel Sketch versucht und da habe ich nur die Zeile

LiquidCrystal_I2C lcd(0x27,16,2);

angepasst.

Nix kopiert und eingefügt ist ein fertig geschriebenes Programm von dem Entwickler der Library.

Nein, ich meine die IDE. Die muss vermutlich installiert werden.

Lies bitte nochmal den Post #7.

Ich habe die komplette Arduino IDE 1.6.8 zip runter geladen, entpackt und gestartet.
Und habe die Arduino IDE 1.6.7 unberührt gelassen.
Installiert habe ich da nicht viel.
Wenn ich eine andere Arduino IDE starte dauert der Startvorgang bisschen länger aber bis jetzt haben sich die verschiedenen Versionen auf meinem Rechner nicht behindert
( sollte halt nicht zwei verschieden gleichzeitig laufen lassen ).
Die Arduino IDE 1.6.8 hat auch die Einstellung von der älteren Version übernommen ( Board, Chip..) meinst du da war auch der I2C Fehler mit dabei ?

Ich hatte mal nen ähnlichen Fall mit nem Adapter von SainSmart. Die I2C-LCD-Platinen sehen zwar ähnlich aus, scheinen aber teilweise in der Hardware anders zu sein. Das Ganze war dann nur durch Umbiegen einiger Werte in der I2C-LCD-Lib zu lösen, dann lief es. Ich habe die geänderte Lib mal angehangen, kannste ja mal testen. Musst Du dann natürlich auch mit dem anderen Namen einbinden.

// I2C wird über die Wire Library abgewickelt.
// Muss vor LiquidCrystal_I2C geladen werden!
#include <Wire.h>

// -----------------------------------------------------------------------------
// LCD mit Hitachi HD44780 Treiber ansprechen via I2C
// Für SainSmart-LCD-I2C-Adapter modifizierte Version von LiquidCrystal_I2C
#include "SainSmart_LCD_I2C.h"

// LCD-Objekt erzeugen, SainSmart-I2C-LCD-Adapter nutzt Adresse 0x3F
// LCD mit 16 Zeichen in 2 Zeilen
SainSmart_LCD_I2C lcd_i2c(0x3F,16,2);

void setup()
{
	// I2C-Bus initialisieren
	Wire.begin();

	// LCD initialisieren und Hintergrundbeleuchtung einschalten
	lcd_i2c.init();
	lcd_i2c.backlight();

	// Print a message to the LCD.
	lcd_i2c.setCursor(0, 0);
	lcd_i2c.print("Blalubb...");
	lcd_i2c.setCursor(0, 1);
	lcd_i2c.print("...und so.");
}

SainSmart_LCD_I2C.zip (4.39 KB)

Hi, hatte das gleiche Problem mit der Lib. Du brauchst nur ein neue Version und dann geht alles wieder.
Einfach unter github suchen ( die mit dem neuesten Datum)

MfG Marco

Dogger330:
Ich habe die komplette Arduino IDE 1.6.8 zip runter geladen, entpackt und gestartet.
Und habe die Arduino IDE 1.6.7 unberührt gelassen.
Installiert habe ich da nicht viel.
Wenn ich eine andere Arduino IDE starte dauert der Startvorgang bisschen länger aber bis jetzt haben sich die verschiedenen Versionen auf meinem Rechner nicht behindert
( sollte halt nicht zwei verschieden gleichzeitig laufen lassen ).
Die Arduino IDE 1.6.8 hat auch die Einstellung von der älteren Version übernommen ( Board, Chip..) meinst du da war auch der I2C Fehler mit dabei ?

Sorry, ich bin jetzt ein wenig ratlos.

Der von dir geschilderte Fehler ist bisher immer bei der IDE 1.6.6 und vereinzelt auch bei der 1.6.7 aufgetreten. Damit der Fehler (wenn es die IDE ist) nicht mehr auftritt, muss vermutlich eine Deinstallation der alten IDE erfolgen. Danach eine Neuinstallation einer funktionierenden IDE.

Aber teste bitte erst die Vorschläge der "anderen User".

Den beschriebenen I2C-Adapter setze ich bei mir auch ein und habe keinerlei Probleme.
Da du schon mehrere Libraries getestet hast, kann ich mir nicht vorstellen, das es ein Fehler der Lib ist.

Aber der Teufel steckt im Detail.

Ich lade mir mal alles runter und teste dann heute Abend wieder.
Leider kann ich wegen Problemen mit Vodafone zu hause nicht ins Netz.

Wie deinstalliere ich eine Library?
Ich habe bis jetzt immer nur den jeweiligen Ordner aus ..Benutzter/texte/aduino... gelöscht weil ich unter Library´s verwalten nix gefunden habe.
Habe bei einer Library gelesen das sie nicht mit anderen LCD_I2C `s zusammen arbeiten will.
Vielleicht habe ich nicht richtig gelöscht ?
Fand die Datei auch immer unter ..Temp... was ich aber ignoriert habe.

Dogger330:
Wie deinstalliere ich eine Library?
Ich habe bis jetzt immer nur den jeweiligen Ordner aus ..Benutzter/texte/aduino... gelöscht weil ich unter Library´s verwalten nix gefunden habe.
Habe bei einer Library gelesen das sie nicht mit anderen LCD_I2C `s zusammen arbeiten will.
Vielleicht habe ich nicht richtig gelöscht ?
Fand die Datei auch immer unter ..Temp... was ich aber ignoriert habe.

Die Lib brauchst du nur löschen.
Ich würde dann aber auch alle gleichnamigen Libs löschen.
Danach Neustart der IDE.

Diese hier ist sehr neu.

So hab ich´s gemacht !
hab mir jetzt mal 4 Lib´s runter geladen ( es kann eigentlich nur an der Software liegen )

Dogger330:
So hab ich´s gemacht !
hab mir jetzt mal 4 Lib´s runter geladen ( es kann eigentlich nur an der Software liegen )

Mit der Äußerung wäre ich vorsichtig. :wink:
Da haben wir hier schon ganz andere Dinge erlebt.
Aber schaun wir mal.
Ich bin gespannt.