Guten Tag,
ich wollte soeben ein HD44780 LCD mit Arduino ansteuern, nur leider
bekomme ich immer Fehler beim Kompilieren. Es liegt an der Zeile mit dem
lcd.begin().
Ich habe mich an folgende Anleitung gehalten:
http://funduino.de/nr-19-i%C2%B2c-display
An was kann es liegen??
Vielen Dank im Voraus!
MAnu schrieb:> ich wollte soeben ein HD44780 LCD mit Arduino ansteuern, nur leider> bekomme ich immer Fehler beim Kompilieren. Es liegt an der Zeile mit dem> lcd.begin().> Ich habe mich an folgende Anleitung gehalten:>> http://funduino.de/nr-19-i%C2%B2c-display>> An was kann es liegen??
Ohne Quelltext und Fehlermeldung wird Dir leider niemand helfen können.
Arduino: 1.7.7 (Windows 7), Platine: "Arduino Nano, ATmega328"
sketch_dec17b.ino: In function 'void setup()':
sketch_dec17b.ino:7:11: error: no matching function for call to
'LiquidCrystal_I2C::begin()'
sketch_dec17b.ino:7:11: note: candidate is:
In file included from sketch_dec17b.ino:2:0:
C:\Users\ManuelOtt\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidC
rystal_I2C.h:59:8: note: void LiquidCrystal_I2C::begin(uint8_t,
uint8_t, uint8_t)
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS
);
^
C:\Users\ManuelOtt\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidC
rystal_I2C.h:59:8: note: candidate expects 3 arguments, 0 provided
Fehler beim Kompilieren.
Dieser Report hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei > Einstellungen
... die Frage ist, ob du wirklich ein Textdisplay mit I2C Schnittstelle
hast, oder "nur" ein parallel zu betreibendes... Dein "Treiber"
zumindest erwartet ein Display, das über I2C angesteuert wird.
Ohne jetzt Arduino zu machen, muss bei I2C Nutzung beim Initialisieren
(start) zumindestmal die I2C-Adresse (und deiner Fehlermeldung nach
weitere Angaben gemacht werden).
Wenn du KEIN I2C - Display hast, hast du schlicht die falsche Library
eingebunden...
In dem Artikel ist eine Lib angegeben, die du verwenden sollst.
Diese erwartet ein begin() ohne Parameter.
Also:
A: Du verwendest aus Versehen die falsche Lib.
1. Die richtige installieren
2. Libs, welche in die Quere kommen entfernen
B: Du weißt was du tust und verwendest mit Absicht eine andere Lib
Dann halte dich auch an Verwendungsvorschrift dieser Lib
MAnu schrieb:> Doch, das ist diese.
Nein, das ist sie nicht!
Meldung:
> candidate expects 3 arguments, 0 provided
Code:
> void begin();
Das passt nicht zusammen.
Tipp:
1. Aktiviere die Meldungen beim Kompilieren.
2. Lese die Meldungen
Dann weißt du auch welche Lib verwendet wird.
Mit einem Link ist dir nicht geholfen.
"Richtige Lib" ?
Im Grunde ist es egal, welche du verwendest...
Hauptsache sie funktioniert.
Du selber hast einen Link gepostet, mit einer "richtigen Lib".
Verwendest aber eine andere. Das solltest du nicht tun.
Das ist hier dein Problem!
Wenigstens testweise, solltest du die Lib mal versuchen, welche du
selber verlinkt hast.
Und wenn du unbedingt eine andere, als die von dir verlinkte, verwenden
willst, dann versorge sie mit den "richtigen" Parametern.
MAnu schrieb:> Könnte ich dann einen Link für die richtige Lib bekommen?
Du hast zwar den Controller deines LCDs genannt, aber soweit ich sehe
noch immer nicht, ob du ein Standard-LCD mit Parallelanschluss, oder
eines mit dranhängendem I2C-Adapter (4 Anschlüsse) benutzt. Sogar ein
Foto vom Aufbau würde helfen...
Je nachdem müssen unterschiedliche Libs benutzt werden.
Ich gehe von einem Arduino Nano zu einem "Backpack Modul", welches
wiederum auf das LCD gesteckt ist. Das Modul wandelt I2C zu seriell um.
Ich benötige diese Konfiguration, um bei Meinem Projekt Pins am
Mikrocontroller zu sparen.
MAnu schrieb:> Ich gehe von einem Arduino Nano zu einem "Backpack Modul", welches> wiederum auf das LCD gesteckt ist. Das Modul wandelt I2C zu seriell um.> Ich benötige diese Konfiguration, um bei Meinem Projekt Pins am> Mikrocontroller zu sparen.
Ok; ich benutze die selbe Lib, funktioniert einwandfrei mit
wenn trotzdem Fehler geworfen werden, liegt's - wie Fanboy bereits sagte
- mit Sicherheit an irgenwelchen Lib-Überresten deiner IDE-Installation.
Am besten im libraries-Ordner alles Verdächtige ('lcd*') mal weg
verschieben...
Jan L. schrieb:> Am besten im libraries-Ordner alles Verdächtige ('lcd*') mal weg> verschieben...
Der Builder zeigt, welche Lib verwendet wird.
(zumindest bei mir)
Tipp:
Hinschauen kann ungemein wichtig sein. Fehlermeldungen haben die
ungeteilte Aufmerksamkeit verdient. Denn es vermeidet unnütze
Vermutungen und damit wird die Fehlersuche erheblich Frust freier, quasi
zielgerichtet.
Und dieser Fehlermeldung, kannst du glauben, ich verbürge mich dafür.
Hallo,
Da habe ich auch lange gesucht. Bis ich drauf gekommen bin, das sich im
Compiler was geändert haben muss. Wenn statt lcd.begin() lcd.init()
eingestellt wird, klappt alles wieder.
Gruß Fiete
Friedhelm K. schrieb:> Da habe ich auch lange gesucht
3 jahre lang?
und es wird sich dann sicher was in der library und nicht im compiler
geändert haben.
und: wenn ich auf das beispiel im link im ersten thread klicke, steht da
auch überall "lcd.init()" und nicht "lcd.begin()"
Inzwischen konnte ich das Mysterium aufklären.
In der Vergangenheit hat der Compiler die Anweisung lcd.begin() fraglos
verarbeitet. Jetzt aber verlangt er etwas mehr. Da ist z.B.
lcd.begin(20,4) einzutragen. Und kaum macht mans richtig, schon gehts.
Fiete11 schrieb:> In der Vergangenheit hat der Compiler die Anweisung lcd.begin() fraglos> verarbeitet. Jetzt aber verlangt er etwas mehr. Da ist z.B.> lcd.begin(20,4) einzutragen. Und kaum macht mans richtig, schon gehts.
Der Compiler kann da überhaupt nichts für.
Wenn "die" Bibliothek für manche Funktionsaufrufe jetzt andere Parameter
verlangt, ist es eine andere Bibliothek.