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
joa doch. Ich denke dass der die klammer ausgefüllt möchte...
... 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
Welche muss ich dann nehmen? Ich benutze diese: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Nein, die verwendest du nicht. Wenn du das mal tun würdest......
Doch, das ist diese. Ich habe mir die soeben heruntergeladen und in den Sketch eingebunden.
Ich hab das gleiche auf einem anderen Rechner bei mir in der Arbeit gemacht, und da hat das funktioniert. Gleicher Sketch - gleiche Bibliothek!
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.
Könnte ich dann einen Link für die richtige Lib bekommen?
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
1 | #include <LiquidCrystal_I2C.h> |
2 | #define LCD_ADDR 0x27
|
3 | #define LCD_CHARS 16
|
4 | #define LCD_LINES 2
|
5 | LiquidCrystal_I2C lcd(LCD_ADDR, LCD_CHARS, LCD_LINES); |
6 | lcd.begin(); |
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()"
:
Bearbeitet durch User
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.