Arduino Fehler beim Kompilieren mit lcd.begin()

Gast #4831976
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!
Gast #4831988
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
Gast #4832916
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...
Gast #4832924
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
Gast #4837795
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.
Gast #4837826
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.
#4837868
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.
Gast #4837872
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.
#4837895
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...
Gast #4837943
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.
Gast #6002470
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.
Gast #6002479
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren