INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mega 2560 u. I2C-LCD von Sainsmart will nicht...
12.09.2013, 12:30 (Dieser Beitrag wurde zuletzt bearbeitet: 12.09.2013 12:35 von Hobel.)
Beitrag #9
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Hallo,

ich habe auf mikrocontroller.net die richtige Pinbelegung veröffentlicht. Die haben beim I2c die Reihenfolge geändert. Ich habe diese ausgemessen und die Lib anschliessend geändert. Bitte die Lib von diesem Frank nehmen! Die Pins können direkt in der Klasse verändert werden.

Das Display funktioniert einwandfrei, das kann ich dir sagen. Meines blieb auch dunkel und zuckte nur, eben weil diese I2C Platine ein neues Layout hat.

Heir ist mein Beitrag: http://www.mikrocontroller.net/topic/302553

[c]
RS = Bit 0
RW = Bit 1
E = Bit 2
D4 = Bit 4
D5 = Bit 5
D6 = Bit 6
D7 = Bit 7

Backlight = Bit 3 (LED EIN = 0 = Pin auf Masse)

Library: LiquidCrystal_V1.2.1

Konstruktor: LiquidCrystal_I2C lcd(0x3f, BACKLIGHT_PIN, POSITIVE);
Init: lcd.begin(20,4);
[/c]


Du findest keine Doku zu einem 44780 Display? *hüstel* Sorry.... diesen Chip gibt es seit gut 20 Jahren ......
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.09.2013, 22:37
Beitrag #10
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Hallo,
@Ricardo: dein Code klappt leider nicht
@Hobel: deiner leider auch nicht.
Zitat:Du findest keine Doku zu einem 44780 Display? *hüstel* Sorry.... diesen Chip gibt es seit gut 20 Jahren ......
Den Satz versteh ich nun nicht, bitte erklären, danke.

Ich hab mich soweit durch die Beiträge gelesen....und verstehe immer mehr Bahnhof. So, wie geht's bei mir weiter?
Zunächst habe ich die Pins vom PCF8574 auf das Display (16 Pins) verfolgt.
Der I2C-Scanner findet ja die Adresse vom Display, soweit ist das alles ok.
Library selber schreiben? Natürlich wenn man das kann, ich kann es noch nicht.
Ich denke, es liegt einfach an der Pinzuordnung vom PCF->Display. oder?
So und wie bekomme ich nun die richtige Zusammenstellung hin?
Wo muss ich was eintragen?
Leider habe ich vom Display keine Pinbelegung, kann beim Hersteller nur auf ein Foto zurückgreifen. Hier sind die Pins angeschrieben, ob die korrekt sind, kann ich nicht sagen. Aber die Displays sind doch alles Massenware und dürften einer Standardbelegung gleichen.

Wo kann ich noch eingreifen?
Es kann doch nicht sein, dass ich hier der Einzigste sein, der ein Problem mit diesem Massenwarendisplay hat?
Allerdings hab ich nochmal nachgemessen und ich bekomme keine Verbindung von Pin7/PCF8574(p3) auf Pin7/Display. Nachlöten brachte nichts. Ich forsche hier morgen nochmal nach. Momentan kann ich nicht lokalisieren, ob der Fehler in der Hard- oder Software liegt.
Für Tipps bin ich trotzdem froh.

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.09.2013, 22:42 (Dieser Beitrag wurde zuletzt bearbeitet: 12.09.2013 22:58 von Hobel.)
Beitrag #11
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Ok, von vorne:

Das Display selbst ist wohl ein I2C Sainsmart, gell? 4 Zeilen usw. Das Display hat einen Hitachi 44780 Controller mit Parallelschnittelle. Soweit Standard, kein Datenblatt nötig, die sind alle gleich.
Es gibt auch andere Controller bei Displays. Auf dem Display wird nix rumgejumpert.... Finger weg! Eine Platine für diverse Bestückung, wie übliche. I2C Widerstände brauchst du nicht, wohl
aber rate ich dir zu löten und nicht diese Arduino Stecktechnik zu verwenden (billige chin. Steckerleisten), einmal gehustet in die Kabel und du hast Müll auf dem Display. Habe den I2C Bus
komplett "fest" angelötet und auch am Arduino, so dass alle I2C Chips sichere Verbindung haben.

Dahinter ist die I2C Expander Platine.... und genau da liegt der Hase im Peffer, die haben die Reihenfolge Pins geändert, ohne was zu sagen.
D.h. die Library steuert die falschen Pins an. Ergo musst du sie richtig stellen. Entweder in der Klasseninstanz als Parameter oder direkt in der Lib, ich habs direkt da drin gemacht.
Ich habe die Pins durchgepiepst und dem Chip zugeordnet. Leider gibt es von diesen I2C Expandern einige, ich habe 3 verschiedene hier, alle unterschiedlich in der Reihenfolge wie
die Pins des Chips an die des Displays geführt werden.


Such in der LiquidCrystal_I2C.cpp folgende Zeilen und ersetze sie:

// ---------------------------------------------------------------------------
// Created by Francisco Malpartida on 20/08/11.

// Default library configuration parameters used by class constructor with
// only the I2C address field.
// ---------------------------------------------------------------------------
/*!
@defined
@abstract Enable bit of the LCD
@discussion Defines the IO of the expander connected to the LCD Enable
*/
#define EN 2 // Enable bit

/*!
@defined
@abstract Read/Write bit of the LCD
@discussion Defines the IO of the expander connected to the LCD Rw pin
*/
#define RW 1 // Read/Write bit

/*!
@defined
@abstract Register bit of the LCD
@discussion Defines the IO of the expander connected to the LCD Register select pin
*/
#define RS 0 // Register select bit

/*!
@defined
@abstract LCD dataline allocation this library only supports 4 bit LCD control
mode.
@discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module
*/
#define D4 4
#define D5 5
#define D6 6
#define D7 7
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.09.2013, 13:08 (Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2013 17:46 von alpenpower.)
Beitrag #12
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Hallo,

so, wieder nichts. Ich hab nun versucht die Pins zuzuordnen.

Display ---> PCF-Pins
1 VSS
2 VDD
3
4 RS ---> 4
5 RW ---> 5
6 E -----> 6
-----------------------------
7 D0
8 D1
9 D2
10 D3
------------------------------
11 D4 ---> 9
12 D5 ---> 10
13 D6 ---> 11
14 D7 ---> 12

Code:
#include <Wire.h> // Diese Lib fehlte und damit die I2C Ansteuerung
#include <LCD.h> // Standard LCD Funktionen
#include <LiquidCrystal_I2C.h> // Umsetzung I2C auf LCD parallel Interface
#define I2C_ADDR    0x3F  // Adresse anpassen
#define BACKLIGHT_PIN     3
#define En_pin  6
#define Rw_pin  5
#define Rs_pin  4
#define D4_pin  9
#define D5_pin  10
#define D6_pin  11
#define D7_pin  12
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void setup()
{
  lcd.begin (20,4); // Muss in jedem Falle sein um Zeilen/Spalten zu deklarieren
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);   // Backlight an
  lcd.setBacklight(HIGH);
  lcd.home ();
  lcd.print("Da bin ich");  
}
void loop()
{
}

Den Code finde ich übersichtlich u. ohne Schnickschnack, der sollte doch laufen, wenns nun nur an der verdrehten oder falschen Pinzuordnung liegt?

Was sagt die Profigemeinde dazu?
In einem Datenblatt des Herstellers sind die Pins am Display wie folgt: 4=RS, 5=RW, 6=E, 7-14=D0-D7
Ja nun, wer hat noch einen Tipp oder einen Fehler meinerseits gesehen?

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.09.2013, 12:54
Beitrag #13
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Gib mir mal deine Mailadresse, dann sende ich dir meine LIB und einen Sketch zu für den Mega. Das muss 1:1 Funktionieren, sonst liegt es an deinem Aufbau oder der Hardware. Ich hatte noch einen Draht auf dem Expander gezogen, da ein Pin niht angeschlossen war wegen einer kalten Lötstelle. Pieps alles durch! Nur so kannst du sicher sein, dass es nicht die Hardware ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.09.2013, 17:03 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2013 17:18 von alpenpower.)
Beitrag #14
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Hallo,

so, nun tut das Display was es tun soll.
Es war doch noch eine schlechte Lötstelle.
Heute habe ich nachgemessen. Beim Antippen mit der Messspitze wurde es dann doch noch hell und der Text kam zur Anzeige.
Unter dem Mikroskop konnte ich eine schlechte Verbindung feststellen. Jedenfalls klappt nun die Anzeige.
Nun noch für alle Sainsmartgeschädigten hier der funktionierende Code:

Code:
#include <Wire.h> // Diese Lib fehlte und damit die I2C Ansteuerung
#include <LiquidCrystal_I2C.h> // Umsetzung I2C auf LCD parallel Interface
#define I2C_ADDR 0x3F // Adresse anpassen
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
void setup()
{
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(1);
lcd.begin(20,4);
lcd.setCursor(0,0);
lcd.print("Zeile 1");
lcd.setCursor(1,1);
lcd.print("Zeile 2");
lcd.setCursor(2,2);
lcd.print("Zeile 3");
lcd.setCursor(3,3);
lcd.print("Zeile 4");
}
void loop()
{
}
...und die Library dazu gibts unter einem Beitrag von Ricardo #8.

Was ich noch hinzufügen muss; die Belegung der Pins/Ports und die Vielfalt der existierenden Libs sind verwirrend, zumindest für einen Anfänger wie ich einer bin.
Dann ärgert mich schon die schlechte Qualität der Displays, allerdings für den Preis kann man nicht mehr erwarten. Schade ist nur, dass es beim Hersteller sogar Beispielcode gibt, der dann fehlerhaft u. löchrig ist wie Schweizerkäse, egal, man lernt nie aus.

Vielen vielen Dank an Ricardo u. Hobel.Wink

Gruß Franz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.09.2013, 17:05
Beitrag #15
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Jo, ich hatte auch eine kalte Lötstelle :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.09.2013, 18:26
Beitrag #16
RE: Mega 2560 u. I2C-LCD von Sainsmart will nicht...
Hallo Franz,

ja es ist schon gemein wenn man als Beginner gleich so tief ins Klo fassen muß ;-)
Aber mach dir nix draus, ich hänge auch schon am nächsten Problem.
Jedenfals herzlichen Glückwunsch zur, wenn auch etwas schwierigen, "Geburt" ;-)

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino lässt sich nicht installieren bergfrei 4 137 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Datenübertragung vom Arduino Mega 2560 zu Hterm Datatom 1 94 13.11.2016 23:08
Letzter Beitrag: hotsystems
  Arduino Mega 2560 läuft nicht Wolfgang50 6 174 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  Arduino Mega 2560 Manfred1981 4 185 11.11.2016 18:07
Letzter Beitrag: hotsystems
  Attiny45 Bootloader brennen mit Funduino Mega toto1975 63 2.178 23.10.2016 17:08
Letzter Beitrag: hotsystems
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 328 16.10.2016 14:07
Letzter Beitrag: Pit
Question Mega 2560 defekt? triode 11 357 29.09.2016 07:21
Letzter Beitrag: hotsystems
  Upload funktioniert nicht Levi 5 237 22.09.2016 20:19
Letzter Beitrag: hotsystems
  ESP8266 tuts nicht sowerum 7 386 19.09.2016 21:01
Letzter Beitrag: sowerum
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 222 16.09.2016 20:36
Letzter Beitrag: Datatom

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste