Go Down

Topic: I2C Library (Read 11236 times) previous topic - next topic

Dogger330

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:

Code: [Select]

#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.
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

HotSystems

#1
Apr 04, 2016, 09:49 am Last Edit: Apr 04, 2016, 09:51 am by HotSystems
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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dogger330

So ne Antwort habe ich gebraucht  :)
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 !
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

HotSystems

#3
Apr 04, 2016, 10:28 am Last Edit: Apr 04, 2016, 10:43 am by HotSystems
So ne Antwort habe ich gebraucht  :)
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 :)
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

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?
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dogger330

#6
Apr 05, 2016, 08:09 am Last Edit: Apr 05, 2016, 08:17 am by Dogger330
 :(
Hat leider auch nicht mit der Arduino IDE 1.6.8 funktioniert. Macht genau die gleichen Fehler wie mit 1.6.7 .
 :(

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  :smiley-confuse:
 
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

HotSystems

#7
Apr 05, 2016, 08:22 am Last Edit: Apr 05, 2016, 08:27 am by HotSystems
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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dogger330

Den loop kannst du auch weg lassen.
Auch ohne den schreibt er nur das H von "Hello, world!"
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dogger330

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.
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

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 ?
Sollte ich mal wieder meine Gedanken nicht verständlich zu Text verwandelt haben bestraft mich mit Fragen.

vieledinge

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.

Code: [Select]

// 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.");
}


beginner34

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

Go Up