Forum: Mikrocontroller und Digitale Elektronik Arduino Fehler beim Kompilieren mit lcd.begin()


von MAnu (Gast)


Lesenswert?

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!

von Sheeva P. (sheevaplug)


Lesenswert?

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.

von MAnu (Gast)


Lesenswert?

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

von list (Gast)


Lesenswert?

MAnu schrieb:
> note:   candidate expects 3 arguments, 0 provided

hilft dir nicht weiter?

von MAnu (Gast)


Lesenswert?

joa doch. Ich denke dass der die klammer ausgefüllt möchte...

von jjflash (Gast)


Lesenswert?

... 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...

von Einer K. (Gast)


Lesenswert?

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

von MAnu (Gast)


Lesenswert?

Welche muss ich dann nehmen?

Ich benutze diese:

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

von Einer K. (Gast)


Lesenswert?

Nein, die verwendest du nicht.
Wenn du das mal tun würdest......

von MAnu (Gast)


Lesenswert?

Doch, das ist diese. Ich habe mir die soeben heruntergeladen und in den 
Sketch eingebunden.

von MAnu (Gast)


Lesenswert?

Ich hab das gleiche auf einem anderen Rechner bei mir in der Arbeit 
gemacht, und da hat das funktioniert. Gleicher Sketch - gleiche 
Bibliothek!

von Einer K. (Gast)


Lesenswert?

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.

von MAnu (Gast)


Lesenswert?

Könnte ich dann einen Link für die richtige Lib bekommen?

von Einer K. (Gast)


Lesenswert?

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.

von Jan L. (ranzcopter)


Lesenswert?

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.

von MAnu (Gast)


Lesenswert?

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.

von Jan L. (ranzcopter)


Lesenswert?

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...

von Einer K. (Gast)


Lesenswert?

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.

von Friedhelm K. (fiete11)


Lesenswert?

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

von Sven K. (quotschmacher)


Lesenswert?

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
von Fiete11 (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.