Hallo,
ich dreh noch ab, selbst so eine einfache Anwendung will nicht. Das
Display wird dunkel und nichts passiert.
Board: Arduino Mega
Display: Blau, I2C Schnittstelle, Hersteller Sainsmart, von ebay
angeschlossen an 5v und I2c Bus.
Dürfte sich um das Display handeln:
http://www.sainsmart.com/sainsmart-iic-i2c-twi-serial-2004-20x4-lcd-module-shield-for-arduino-uno-mega-r3.html
Vorweg: der darunter befindliche Code funktioniert nicht aber die Lib
hab ich von dort.
Schliesse ich es an, leuchtet es, lade ich den Code rein wird es dunkel
und es passiert sonst nichts weiter.
Der Code
1
#include<Wire.h>
2
#include<LiquidCrystal_I2C.h>
3
4
LiquidCrystal_I2Clcd(0x20,16,2);// set the LCD address to 0x20 for a 16 chars and 2 line display
5
6
voidsetup()
7
{
8
lcd.init();// initialize the lcd
9
10
// Print a message to the LCD.
11
lcd.backlight();
12
lcd.print("Hello, world!");
13
}
14
15
voidloop()
16
{
17
}
Die Suche nach Libs gestaltete sich zum Geduldsspiel... es gibt zig
Versionen aber nicht alle lassen sich kompilieren, erzeugen
Fehlermeldungen.
zb die hier:
// Copyright 2011 - Under creative commons license 3.0:
4
// Attribution-ShareAlike CC BY-SA
5
//
Zb die von dieser Seite bekomme ich nicht kompiliert, sehr kryptische
Fehlermeldungen aus der cpp Datei.
http://arduino-info.wikispaces.com/LCD-Blue-I2C
Habe eine, die im Header stehen hat: // LiquidCrystal_I2C V2.0 und die
ist kompilierbar.
Der Initstring habe ich schon mehrfach verändert für 4x 20 Display, auch
das ändert nichts.
Weiss da einer Rat? Vor allem: Welches ist richtige Library? Da haben
sich ja etliche drin verewigt welche zu schreiben...
hi,
kann dir nicht sagen von welcher seite ich die lib und den beispielcode
habe (aber ich denke das war im eb*y text verlinkt), aber bei mir
klappte es auf anhieb.
der eigentliche code ist wie folgt:
1
//YWROBOT
2
#include <Wire.h>
3
#include <LiquidCrystal_I2C.h>
4
5
LiquidCrystal_I2C lcd(0x3F,20,4); // set the LCD address to 0x3F for a 16 chars and 2 line display
6
7
void setup()
8
{
9
lcd.init(); // initialize the lcd
10
lcd.init();
11
// Print a message to the LCD.
12
lcd.backlight();
13
lcd.setCursor(3,0);
14
lcd.print("Hello, world!");
15
lcd.setCursor(2,1);
16
lcd.print("SainSmart for UNO");
17
lcd.setCursor(2,2);
18
lcd.print("SainSmart LCM IIC");
19
lcd.setCursor(1,3);
20
lcd.print("Design By SainSmart");
21
}
22
23
void loop()
24
{
25
}
frag aber nicht warum z.b. 2x init() aufgerufen wird.
ich hab nur einen einfachen funktionstest durchgeführt und seitdem nicht
weiter damit herumgespielt.
vielleicht hilft das ja, ansonsten kann ich ggf. die hier vorliegenden
lib files packen und bereitstellen...
ciao...
Hallo,
also, einfacher geht es ja eigentlich nicht. Nur ist es schon seltsam,
dass das Backlight bei mir direkt ausgeht. Ein Init findet nicht statt,
habe das Display gegen das Licht gehalten, sid noch 2 Zeilen sichtbar
wie bei einem Kaltstart.
Ja, mach mal, stell mal rein, ich habe ja schon fast alles
durchprobiert.
Ach so: Zieht sich die Arduino Overfläche jedesmal die cpp Files aus dem
Lib Verezeichnis oder legt die irgendwo ein .o File ab? D.h. wenn ich
die Lib nur überschreibe wird sie dann auch genommen? So ganz blicke ich
noch nicht hinter diese Shell hinter was die genau macht.
Hab deinen Code grad gestestet.... kurzes Aufleuchten des Backlights
beim Reset, dann nichts. Also wo da der Wurm drin ist erschliesst sich
mir nicht....
Die print Funktion scheint nicht wie in C zu sein, ich muss mir mal
Beispiele anschauen wo Variablen ausgegeben werden... grumpf
Christian J. schrieb:> sehr kryptische> Fehlermeldungen aus der cpp Datei.
Den man als Programmierer mit ein wenig Unterstützung von Google schon
zu deuten wissen sollte. Ansonsten solltest du dich damit an den Autor
wenden oder ihn zumindest hier posten, wenn du von Fehler berichtest.
Karol Babioch schrieb:> u deuten wissen sollte. Ansonsten solltest du dich damit an den Autor> wenden oder ihn zumindest hier posten, wenn du von Fehler berichtest.
Sorry aber ich will das Arduino nur anwenden, mich garantiert aber nicht
mit dem Atmel intern oder gar C++ befassen... meine Welt ist der ARM
Core und
wird es auch bleiben, alles andere nur am Rande fürs "Schnell mal eben".
So, ich gebs auf, nichts zu machen ;-( Init läuft nicht und das
Backlight schaltet sich ab bei Programmstart. D.h. "irgendwas" tut sich,
nur was?
Ohne intensive Suche im Code der Library oder Single Step Debugging -was
nunmal nicht geht - ist das nicht zu finden und Messgeräte habe ich
keine hier.
Danker, aber welche Library ist das ????
Es gibt zig verschiedene Versionen im Netz.
Und wieso Pins? Es gibt nur die I2C nach außen und sonst nichts. Auch
keinen Backlight Pin...
PS:
** This example uses F Malpartida’s NewLiquidCrystal library. Obtain
from:
Die kann ich nicht kompilieren, erzeugt für mich unverständliche
Fehlermeldungen aus den "inneren Berreichen der CPP Datei", ich kann
kein C++.
Christian J. schrieb:> Sorry aber ich will das Arduino nur anwenden, mich garantiert aber nicht> mit dem Atmel intern oder gar C++ befassen
Dann hör auf zu heulen wenn was nicht funktioniert und nimm es hin.
Entweder du beschäftigst dich mit den Sachen oder du akzeptierst halt
einfach, dass es nicht funktioniert.
>ich kann kein C++
Und was kannst du?
Datenblattlesen?
Nimm BascomAVR und bastel dir deinen Testcode selber, geht schneller als
irgendwelche Libs auszuprobieren.
Gibts hier eigentlich keine Mods, die den Pöbel mal rauslöschen?
Ich habe das Problem gelöst..... da wären noch Tage bei draufgegangen.
Chinesische Technik, kalte Lötstelle an der I2C Platine, nur unter dem
Mikroskop zu erkennen an einem IC Pin.
Es funktioniert.....
Außerdem muss die LiquidCrystal_I2C.cpp angepasst werden an das neue
Sainsmart 4x20 Modell, da sich das Pinning mal wieder geändert hat, d.h.
welcher Pin des Portexpanders auf welchen Display Pin geht. Das ist in
allen Libs anders und zum 16 x 2 Vorgängermodell des Displays ebenfalls,
d.h. ein 16 x 2 läuft nicht mit dem gleichen Code wie das 20 x 4.
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);
Und dann lüppet auch...