mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: MAnu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Sheeva P. (sheevaplug)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MAnu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: list (Gast)
Datum:

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

hilft dir nicht weiter?

Autor: MAnu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
joa doch. Ich denke dass der die klammer ausgefüllt möchte...

Autor: jjflash (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
Autor: MAnu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche muss ich dann nehmen?

Ich benutze diese:

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

Autor: Arduino Fanboy D. (ufuf)
Datum:

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

Autor: MAnu (Gast)
Datum:

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

Autor: MAnu (Gast)
Datum:

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

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
Autor: MAnu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte ich dann einen Link für die richtige Lib bekommen?

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
Autor: Jan L. (ranzcopter)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MAnu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jan L. (ranzcopter)
Datum:

Bewertung
0 lesenswert
nicht 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
#include <LiquidCrystal_I2C.h>
#define LCD_ADDR 0x27
#define LCD_CHARS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(LCD_ADDR, LCD_CHARS, LCD_LINES);
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...

Autor: Arduino Fanboy D. (ufuf)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Friedhelm K. (fiete11)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven K. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Fiete11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.