Halli Hallo alle
Ich möchte ein I2c LCD Modul an ein Uno Board anschließen.
Aber es scheitert schon bei der Software.
Wenn ich das Programm überprüfe kommt diese Fehlermeldung.
Ich weis aber nicht warum? Wer kann mir sagen was ich falsch mache?
Meine Vermutung ist das die Include Datei LiquidCrystal_I2C.h
nicht für das Board geeignet ist
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
}
1
In file included from HelloWorld.pde:2:
2
C:\Users\Bodo\Desktop\arduino-1.0.3\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:80: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
Ok ich habe die Lösung gefunden.
Die Library war falsch.
Hier habe ich eine gefunden.
https://arduino-info.wikispaces.com/LCD-Blue-I2C
nur die Speicher Adresse geändert
von
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27
in
LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x27
dann geht es.
Mfg Bodo
Wie hast du das mit der Library gemacht? ich habe das selbe Problem und
komme einfach nicht weiter bei mir bleibt es immer daran hängen
"LiquidCrystal_I2C lcd(0x20,16,2);"
sketch_dec11a:14: error: no matching function for call to
'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int)'
das kommt als Fehlermeldung..
Marcel Papst schrieb:> Stellst du das I2C-Interface korrekt ein, bevor du das LCD versuchst zu> initialisieren?
Was hat die Frage mit Compiler-Fehlermeldungen zu tun? Wie das Interface
eingestellt wird, ist dem Compiler schnurz-piep-egal.
Das Problem ist, dass ihr alle miteinander nicht die blasseste Ahnung
von der Progammiersprache habt, die ihr benutzt!
Gelinde gesagt.
Verdammt noch mal. Wenn man in einer Sprache ein Programm schreiben
will, dann muss man die Sprache AUCH LERNEN!
Die Fehlermeldungen sind aber sowas von eindeutig was da los ist, das
geht auf keine Kuhhaut.
Es gibt keinen Konstruktor in der Klasse LiquidCrystal_I2C, der 3
int-Argumente akzeptieren würde.
Also mach das beschissene zugehörige Include File im Editor auf, schau
in die Klasse rein und sieh nach, was du an Konstruktoren zur Verfügung
hast.
Jetzt müsste man halt wieder wissen, was eigentlich ein Konstruktor ist.
Und so führt eine Basiswissenslücke unmittelbar zur nächsten. Wie sagte
tv-Kaiser immer so gerne. "Ein Teufelskreis"
Karl Heinz schrieb:> Und so führt eine Basiswissenslücke unmittelbar zur nächsten. Wie sagte> tv-Kaiser immer so gerne. "Ein Teufelskreis"
Kommt drauf an, ob mit Nachfragen die Größe der Wissenlücken dazu zu
bewegen ist, gegen 0 zu konvergieren.
Wolfgang schrieb:> Karl Heinz schrieb:>> Und so führt eine Basiswissenslücke unmittelbar zur nächsten. Wie sagte>> tv-Kaiser immer so gerne. "Ein Teufelskreis">> Kommt drauf an, ob mit Nachfragen die Größe der Wissenlücken dazu zu> bewegen ist, gegen 0 zu konvergieren.
Das funktioniert nur unter der Voraussetzung, dass die Lücken eine
gewisse Größe bereits unterschritten haben. Vorher hat das noch nie
funktioniert, funktioniert nicht und wird auch nie funktionieren.
Noch nie hat jemand eine Programmiersprache durch anlassbezogenes
Erfragen von Achtel-Wissen (denn das ist noch nicht einmal Halbwissen)
in einem Forum ausreichend gut erlernt. Und schon gar nicht hat er
dieses wenige Wissen sich dann auch noch in vertretbarer Zeit in einem
Forum zusammen-gefragt. Dieses kleine bisschen Wissen, dass dabei
rauskommt, hätte er sich in einem Zehntel der Zeit auch in einem
vernünftigen Buch beim abendlichen schmökern aneignen können.
Das I2C Display wird wie jedes I2C Gerät mit einer Adresse angesprochen
(0 bis 127). Damit man dem Gerät einen Befehl übermitteln kann oder eine
Information abfragen kann, muss man diese Adresse kennen. Entweder sie
ist (im Datenblatt oder einer zugehörigen library oder in einem
Codebeispiel) dokumentiert oder man "fragt sich durch", dabei könnte
dieses Programm helfen (hab ich selbst aber noch nicht probiert):
Hallo.
Halbwissen / Achtelwissen hin oder her.
Ich selbst bin elektromeister, habe allerdings keine Ahnung vom
Programmieren oder den entsprechenden Sprachen.
Sich mittels, in Foren erfragten Programmschnipseln und Hilfestellungen
zum eigenen kleinen Erfolg zu verhelfen ohne gleich alle Basics zu
studieren klingt für mich nicht wie eine Straftat oder faules,
verwerfliches Verhalten.
Ich bin erstaunt über die gegenseitige Missgunst hier bei euch im Forum.
Da fragt man sich doch ernsthaft warum die ein oder andere Person hier
überhaupt antwortet wenn sie helfen könnte, allerdings lieber alles
verurteilt.
Schade.
Gruß
Vielleicht liest du noch mit.
Du bist Elektromeister. Dann konstruiere ich mal ein Beispiel in deiner
Sprache.
Angenommen dich ruft jemand an, weil er eine Auskunft haben will. Er
will eine Lampe aufhängen und da hätte er jetzt mal eine Frage. Bei ihm
kommen aus der Decke 3 Kabel raus, und zwar so
1
braun violett gelb/grün
an seiner Lampe sind aber die Kabel so angeordnet
1
gelb/grün braun violett
was soll er jetzt tun? Er habe ja schon versucht einfach die Kabel mit
Isolierband aneinanderzuheften, aber er hat die neuen "Intelligent 2000"
Kabel, als er das violette Kabel an das gelb/grüne anschliessen wollte,
da ist ein Schild aufgetaucht "Sie können das nicht an den Schutzleiter
anschliessen".
Jetzt die Frage: Kann es sein, dass er den falschen Schaltertyp neben
der Tür verbaut hat?
Aber es geht weiter. Der Typ verkabelt sein Haus in Eigenregie und
bittet dich nach ein paar Tagen, ihm das Haus abzunehmen. Bei den ersten
2 Steckdosen, in die du reinschaust, stellst du fest, das er in keinem
Fall den Schutzleiter angeschlossen hat. Im Flur stellst du fest, dass
er die Wechselschaltung so aufgebaut hat, dass er die Phase auf den
SChutzleiter schalten würde. Im Badezimmer hat er die Rasiersteckdose
mit Bindfaden in die Wand getackert. Die Steckdosen im Wohnzimmer hat
er, weil ihm das Kabel ausgegangen ist, mit 0.5mm^2 Schaltdraht (die er
von Sohnemanns Eisenbahn geklaut hat) zur nächsten Abzweigung verlängert
und dort einfach die Kabel umeinander gewickelt / Kreppband rum
gewickelt und passt schon. Von den paar Kabelklemmen, die du in den
restlichen Abzweigdosen findest, sind bei der Hälfte die Schrauben
locker.
Was würdest du so jemandem sagen?
Würdest du ihm geduldig alles erklären, dir Zeit nehmen. Bedenke bitte
auch, dass von dir erwartet wird, das alles in deiner Freizeit und
unentgeltlich zu machen.
Oder würdest du ihn nicht fragen, warum er denn nicht wenigstens ein
bischen was über Elektroinstallation lernt, wenn er schon eine Arbeit
machen will von der er keine Ahnung hat und dann erwartet, dass andere
ihm alles vorkauen?
Es hilft nichts. Wenn man etwas machen will, dann braucht man ein
gewisses Grundwissen. Das ist in deinem Gewerbe auch nicht anders als in
meinem.
Vielleicht liest du noch mit.
Du bist Elektromeister. Dann konstruiere ich mal ein Beispiel in deiner
Sprache.
Immerhin besuche ich diverse Foren seit über zwei Jahren um mein Wissen
über Arduino zu erweitern. Zufällig habe ich das gleiche Problem mit dem
SerLCD v2.5 und bin in diesem Forum gelandet.
Einen so aufgeblasener „Moderator“ ist mir allerdings nirgendwo
begegnet. Schade um den Platz der mit seinen hochnäsigen Kommentaren
verschwendet wurde.
Bearbeitet durch Lichfilter d.18.03 74
Hallo lichtfilter,
Schade um den Platz den du hier verschwendet hast. Ich habe selber "nur"
programmieren in c gelernt an nem 89c2051 während meine Lehre, aber
selbst da wurde mir nicht alles vorgekaut. Da wurde noch Eigeninitiative
gefordert und man sollte sich bestimmtes wissen aus Datenblättern
aneignen.
Der TO hat eine fertige, dokumentierte Lib für den Uno benutzen wollen,
und war nicht im Stande diese Dokumentation zu lesen. Was soll man da
also erwarten?
Ich nutze auch, aus Zeitgründen den Arduino, aber ich bin bereit mich
vorher zu belesen, daher habe ich bisher alles noch selber
hinbekommen...Doku lesen vorausgesetzt.
Die Reaktion des Mods ist daher berechtigt.
Lichfilter schrieb:> Vielleicht liest du noch mit.> Du bist Elektromeister. Dann konstruiere ich mal ein Beispiel in deiner> Sprache.>> Immerhin besuche ich diverse Foren seit über zwei Jahren um mein Wissen> über Arduino zu erweitern. Zufällig habe ich das gleiche Problem mit dem> SerLCD v2.5 und bin in diesem Forum gelandet.
Du hättest mehr davon gehabt, wenn du dir vor 2 Jahren ein C++ Buch
gekauft hättest und es durchgearbeitet hättest. Bereits nach den ersten
30% vom Buch, wofür du nicht 2 Jahre sondern 4 Abende mit täglich 2 bis
3 Stunden Lesen investieren hättest müssen, hättest du dir die Frage
locker selbst beantworten können.
Du magst in den 2 Jahren in Foren einiges gelernt haben. Wenn du
allerdings zuerst (oder nebenher) ein paar der wirklich grundlegenden
C++ Grundlagen gelernt hättest, wärst du heute schon unter den Profis.
So bist du immer noch ein Anfänger, der mit einer an sich simplen
Fehlermeldung und einem im Grunde trivialen Problem nichts anfangen
kann. Du bist der beste Beweis, dass man Programmiersprachen nicht von 0
beginnend in Foren lernen kann, wenn du nach 2 Jahren an diesem
eigentlich trivialem C++ Syntax Problem hängst. Denn dieses Problem kann
JEDER mit ein wenig C++ Grundwissen in Sekunden lösen.
Schade um die vertane Chance und die vergeudete Zeit.
<Schade um den Platz den du hier verschwendet hast. Ich habe selber
"nur"
programmieren in c gelernt an nem 89c2051 während meine Lehre, aber >
Vielen Dank für Deine tröstenden Worte. Ich freue mich, Daß Du so eifrig
an Dir arbeitest, sogar C++ beherscht Du und das will schon was heißen.
Ich werde in Zukunft Doku lesen damit alle meine Probleme sich in Luft
auflösen.
Bearbeitet durch Lichtfilter d.24.03.2014
<Du hättest mehr davon gehabt, wenn du dir vor 2 Jahren ein C++ Buch >
Danke Für Deine Ratschläge. Ich bin erstaunt, wie Du Dich in Dir
offenbar fremde Menschen hineinversetzen kannst, ihnen Ratschläge
erteilst, auch wenn Dich keiner darum gebeten hat. Besonders Deine
Oberlehrer hafte Art Dich in Szene zu setzen und andere klein zu machen,
das hat schon was.
Ich habe allerdings bemerkt, daß Dein Ton schon etwas gemäßigter
geworden ist.
Arbeite daran!
Bearbeitet von Lichtfilter d.24.03.2014
<Von Bodo:
Ich möchte ein I2c LCD Modul an ein Uno Board anschließen.
Aber es scheitert schon bei der Software.
Von Sharky:
Wie hast du das mit der Library gemacht? ich habe das selbe Problem und
komme einfach nicht weiter bei mir bleibt es immer daran hängen
Von Moderator:
Das Problem ist, dass ihr alle miteinander nicht die blasseste Ahnung
von der Progammiersprache habt, die ihr benutzt!>
Toll! Ohne auch nur die blasseste Ahnung zu haben, werden hier alle
Teilnehmer erst einmal für besonders blöd erklärt. Völlig überflüssige
Ratschläge, die das Thema nicht im geringsten lösen, werden mal so von
oben herab gesteußelt mit dem Ziel, daß nur die Profis bitteschön sich
hier noch verbreiten können.
Einem erfahrenen Elektromeister (o Gott o Gott, was hat denn der hier zu
suchen !) wird lang und breit erklärt, wie man eine Lampe aufhängt,
natürlich ohne ein Wort zu Lösung seines Problems beizutragen.
Mir hat er geraten erst mal C++ zu studieren, um aus meinem von ihm
vermuteten Anfängerdasein herauszukommen. Natürlich als Super Profi
könnte man seine eigene Library schreiben, ein Forum hätte man dann
allerdings gar nicht mehr nötig und der Moderator hätte nichts mehr zu
moderieren.
Ich kann allen nur den Rat geben: laßt euch nicht von solchen Typen
mundtot machen, ignoriert ihn noch nicht einmal! Stellt weiter eure
Fragen und bewegt Euch in der fantastischen Arduino-Welt. Besonders
schön wäre es, daß ihr eure Lösungen auch hier einstellt.
Das will ich hiermit auch tun:
Man muß schon ganz schön suchen um das verzwickte Problem mit der
schönen
„ New Arduino Serial IIC/I2C/TWI 2004 204 Character LCD“ zu lösen.
Die meisten veröffentlichen Sketches weigern sich einfach zu laufen.
Dummerweise gibt es auch viele gleichlautende I2C-Libraries. Man muß
schon suchen und d’rann bleiben.
Weiterhin, und daran denkt man kaum, muß auch noch die Arduino-Version
stimmen.
In ‚dfrobot.com/forum/ unter SKU:DFR0154 findet Ihr die Lösung und Euer
Display sagt endlich „Hellow, world“. Leider müßt ihr ein komplett neues
Direktory ‚Arduino_1.0’ mit den entsprechenden Unter-Direktories
einrichten, sofern ihr mit der letzten Ardino-Version 1.05 arbeitet.
Dorthin extrahiert ihr die Library und startet die unter example
aufgeführte pde-datei ‚HelloWorld’. Es funktioniert! , leider nur in der
etwas veralteten Arduino-Version, doch man kann sich jedenfalls davon
überzeugen, daß das Display wenigsten in Ordnung ist.
Übrigens, da Fällt mir ein: es könnte doch unserer Moderator (Profi) mal
kurz Library und Sketch für Verion 1.05 hier veröffentlichen. Dafür
würde ich ihm die Füße küssen.
Verfaßt von Lichtfilter d.27.03.2014
Hast du eigentlich gelesen, was die Frage in diesem Thread war oder hast
du nur die Überschrift gelesen?
Oder willst du einfach nur so ein wenig rumpöbeln?
Wenn man die Frage hier
Beitrag "I2c LCD an Arduino Uno"
und hier
Beitrag "Re: I2c LCD an Arduino Uno"
aufgrund der Fehlermeldungen nicht lösen kann, dann IST man Anfänger,
bzw. noch schlimmer, man kennt die simpelsten Grundlagen von C++ nicht.
An diesen Fehlermeldungen ist nichts geheimnisvolles oder schwieriges.
Die sind genauso glasklar, wie das Aufleuchten der roten Warnlampe mit
dem Ölkännchen in einem Auto.
sorry ..aber selten so einen aufgeblähten und arroganten Moderator
gesehen.
Als Moderator vollkommen untauglich, ich hoffe, Du bist im realen Leben
nicht so, dann haste mit Sicherheit keine Freunde.
So eine peinliche Nummer ,die Du hier ablieferst.
Wenn ein "Noob" hier eine Frage stellt, kann Du ihn freundlich darauf
hinweisen, das er völlig falsch liegt und ihm Ratschläge geben, ist aber
kein Grund allen zu Zeigen was für ein toller Programmierhecht Du bist.
Dies ist ein FORUM und keine Stelle zur Selbstdarstellung.
Hajo J. schrieb:> Dies ist ein FORUM und keine Stelle zur Selbstdarstellung.
Richtig. Und in einem Forum gibts Hilfe zur Selbsthilfe. Keine
Vorgekauten Lösungen. Und wer C++ programmieren will und nicht einmal
diese Fehlermeldung versteht, bei dem wird es nicht bei einer Frage
bleiben. Er wird ständig stecken bleiben. Für diese Art von Hilfe ist
ein Forum nicht da. Das Ziel ist immernoch, dass der TE etwas lernt.
Wer vorgekaute Lösungen möchte sollte sich ein anderes Forum mit
deutlich tieferen Niveau suchen.
> Wenn ein "Noob" hier eine Frage stellt, kann Du ihn freundlich darauf> hinweisen, das er völlig falsch liegt und ihm Ratschläge geben, ist aber> kein Grund allen zu Zeigen was für ein toller Programmierhecht Du bist.
Der beste Ratschlag ist immernoch die Programmiersprache zu lernen.
Sonst kommt die gleiche Frage von ihm schon morgen in grün.
> So eine peinliche Nummer ,die Du hier ablieferst.
Peinlich warst nur du, aber anscheinend verkennst du die Situation hier.
Ein Forum basiert immernoch auf freiwilliger Basis. Der TE hat einen
guten Tipp bekommen, wie er sein Problem lösen kann. Und das war schon
mehr als er zu erwarten hat.
Lol schrieb:
Richtig….
Der beste Ratschlag…..
Peinlich warst nur Du……
Na ja, wenigstens noch einer, der unserem Moderator die Stange hält, und
natürlich C++ kann.
Seinen Ratschlag ein anderes Forum aufzusuchen, werde ich befolgen; mir
wird hier ganz schwindlig bei dem hohen Niveau, bei dem man nur C++ um
die Ohren gehauen bekommt.
Meinen Beitrag v. 18.03 2014 ziehe ich betreten zurück, da er zwar das
eigentliche Problem löst, allerdings auf ein viel zu tiefem Niveau und
vor allem ohne C++.
Da sich auch unser „Moderator“ nach so langer Zeit uns mit C++
verschont hat, empfehle ich das hochkarätige Forum zu schießen.
…. Und er verschwand pupend in der Morgenröte.
Verfaßt von Lichtfilter d.24.04.2014
Lichtfilter schrieb:> …. Und er verschwand pupend in der Morgenröte.
Und kam hoffentlich nie wieder....
P.S.
Ich hoffe, Du hast nicht vergessen, Deine Sockenpuppe Hajo J.
(spacemaxx) mitznuehmen, welche sich extra für dieses eine überflüssige
Posting hier angemeldet hat.
Willkommen im Kindergarten! !!!
Ihr seid ja tolle Helfer. ...
Da kann man ja nur mit dem Kopf schütteln. ....
Eine einfache nette Frage und gleich so ein Aufriss.
Gruß an alle Anfänger! !!! Natürlich die Grundlagen lernen und nicht
unter kriegen lassen.
Valerius
Valerius schrieb:> Natürlich die Grundlagen lernen
... du sprichst mir aber sowas von aus der Seele.
Danke dass auch du bestätigst, dass es ohne Grundlagen nicht geht.
> Eine einfachezu einfach. Die müsste jeder Anfänger selbst beantworten können. Genau
darum geht es ja.
Noch deutlicher als
1
In file included from HelloWorld.pde:2:
2
C:\Users\Bodo\Desktop\arduino-1.0.3\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:80: error: conflicting return type specified for 'virtual void LiquidCrystal_I2C::write(uint8_t)'
kann eine Fehlermeldung ja wohl nicht ausfallen. Da steht im Klartext,
was das Problem ist.
Und dann muss man nur noch 1 und 1 zusammenzählen und in 5 Sekunden die
Korrektur machen. Oder was ist an 'conflicting return types'
missverständlich, wenn der Compiler dann sogar noch so nett ist, und die
komplette Funktionssignaturen rausschreibt
Da gibt es also eine Klasse in
C:\Users\Bodo\Desktop\arduino-1.0.3\hardware\arduino\cores\arduino/Print
.h
1
classPrint
2
{
3
....
4
5
virtualsize_twrite(uint8_t);
6
7
....
8
};
und davon offenbar abgeleitet eine Klasse LiquidCrystal_I2C in
C:\Users\Bodo\Desktop\arduino-.0.3\libraries\LiquidCrystal_I2C/LiquidCry
stal_I2C.h
1
classLiquidCrystal_I2C:publicPrint
2
{
3
....
4
5
virtualvoidwrite(uint8_t);
6
7
....
8
};
und der Compiler beschwert sich, dass in der abgeleiteten Klasse der
Returntyp der Funktion write anders als in der Basisklasse ist.
Damit kommen wir zu 50 Euro Frage: Was wird man da wohl tun?
Es stehen keine Joker mehr zur Verfügung.
Und die 2.te gestellte Frage ist genau so trivial wie die erste. Der
Compiler schreibt sogar detailliert hin, was das Problem ist. Was an
1
no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int)'
ist so schwer zu verstehen? Wenn man eine Funktion aufrufen will, dann
muss die Anzahl der Parameter beim Aufruf mit der Anzahl an Argumenten
in der Funktion (in diesem Fall ein Konstruktor) übereinstimmen.
1
voidfoo(inti)
2
{
3
...
4
}
5
6
intbar()
7
{
8
foo(1,2);// <---- Mööööp. Passt nicht. foo will nur einen Parameter
9
}
was ist da jetzt so schwer drann zu verstehen?
Wenn man natürlich immer nur Code abtippt, ohne auch nur ansatzweise zu
verstehen, nach welchen Regeln meine Programmiersprache eigentlich
funktioniert, dann blickt man natürlich durch viele Fehlermeldungen
nicht durch. Das ist schon klar. Aber dann ist der richtige Weg nun mal,
meine Sprache auch zu lernen und nicht in einem Forum nach den
allereinfachsten Dingen zu fragen. Zumindest aber sollte man die
Fehlermeldung lesen und sich wenigstens ein bischen Gedanken darüber
machen, was da in der Fehlermeldung steht. Indem man sich dann noch die
fraglichen Source Code Stellen ansieht kann man mit ein bißchen
Hausverstand sogar rein nur durch Lesen der Fehlermeldung und
Codestudium rausfinden, was da nicht stimmt. Die Fehlermeldungen sind
nämlich ausführlich genug und geben genügend Information, so das das in
diesem Fall recht problemlos möglich ist.
Gegenfrage: Was macht ihr denn, wenn es mal wirklich komplizierte
Fehlermeldungen gibt, wenn ihr schon bei den allereinfachsten Sachen das
Handtuch werft?
Karl Heinz (kbuchegg) (Moderator) schrieb:
> Gegenfrage: Was macht ihr denn, wenn es mal wirklich komplizierte> Fehlermeldungen gibt, wenn ihr schon bei den allereinfachsten Sachen das> Handtuch werft?
Na den Moderator nach C++ fragen.
MFG.