Arduino Display

OP #7270961
Lesenswert?

Hallo, ich habe einen Arduino Mega und ein Display. Ich möchte lediglich 
was auf dem Display anzeigen lassen.

Selbst wenn ich nur eine folgende Codezeile ausführe:
#include <LiquidCrystal.h>

so kommt folgender Fehler:
c:/users/basti/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7. 
3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr 
6/crtatmega2560.o:(.init9+0x0):  undefined reference to `main'
collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

Irgendwas stimmt mit den Bibliotheken nicht
#7270973
Lesenswert?

main ist die Funktion, die beim Start des Programms ausgeführt wird. Die 
musst du natürlich noch anlegen, z.B.
1
int main(int argc, char *argv)
2
{
3
  return 0;
4
}

Falls du das nicht verstehst, solltest du mal in ein Grundlagen-Buch 
über C/C++ oder auch zum Arduino schauen.
#7270978
Lesenswert?

Thomas F. schrieb:
> main ist die Funktion, die beim Start des Programms ausgeführt wird. Die
> musst du natürlich noch anlegen, z.B.
>
1
> int main(int argc, char *argv)
2
> {
3
>   return 0;
4
> }
5
>
>
> Falls du das nicht verstehst, solltest du mal in ein Grundlagen-Buch
> über C/C++ oder auch zum Arduino schauen.

Und schon gar nicht mit der Signatur ;-)
Was erwartest Du denn für einen
Inhalt des C-String-Arrays auf einem µC?
Gast #7270995
Lesenswert?

Wilhelm M. schrieb:
> Und schon gar nicht mit der Signatur ;-)
> Was erwartest Du denn für einen Inhalt des C-String-Arrays auf einem µC?

Adam P. schrieb:
> Vllt. bekommt die main() ja Parameter ausm Reset_Handler :-D
> Aber den gibts ja so auch nicht aufm Atmega.

Ok, verstehe. Aber das wirft die Frage auf, warum die main() einen 
Integer (nicht void) als Ergebnis haben muss. Ich weiß, es ist halt so, 
aber logisch ist es nicht.
Gast #7271004
Lesenswert?

Sebastian M. schrieb:
> Selbst wenn ich nur eine folgende Codezeile ausführe:
> #include <LiquidCrystal.h>

Kein Wunder!
1
#include <LiquidCrystal.h>
2
void setup(){}
3
void loop(){}
Sollte fehlerfrei kompilieren


Alternativ:
1
#include <LiquidCrystal.h>
2
int main(){}
Aber dann ist das Framework zum großen Teil aus dem Rennen, und das will 
man meist nicht.
#7271033
Lesenswert?

Steve van de Grens schrieb:
> Wilhelm M. schrieb:
>> https://en.cppreference.com/w/c/language/main_function
>
> Der Artikel beantwortet meine Frage nicht. Er bezieht sich auf PC mit
> Betriebssystem, wo der return Wert sinnvoll benutzt werden kann.

Doch.
An der Signatur von main() ändert das Environment nichts, das ist 
einfach im C++-Standard so festgelegt.

https://en.cppreference.com/w/cpp/freestanding
OP #7271034
Lesenswert?

bei Arduino braucht man keine main. Das ist der Code zum ausgeben auf 
dem Display:
#include <LiquidCrystal.h> //LCD-Bibliothek laden

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //In dieser Zeile wird 
festgelegt, welche Pins des Mikrocontrollerboards für das LCD verwendet 
wird (Am besten erstmal nicht verändern).

void setup()
{
lcd.begin(16, 2); //Im Setup wird angegeben, wie viele Zeichen und 
Zeilen verwendet werden. Hier: 16 Zeichen in 2 Zeilen.
}

void loop()
{
lcd.setCursor(0, 0); //Startposition der Darstellung auf dem LCD 
festlegen. lcd.setCursor(0,0) bedeutet: Erstes Zeichen in der ersten 
Zeile.
lcd.print("www.funduino.de"); //Dort soll der Text „www.funduino.de“ 
erscheinen. Der Befehl lcd.setCursor ist dem Mikrocontrollerboard durch 
das Aufrufen der Bibliothek bekannt.
lcd.setCursor(0, 1); // lcd.setCursor(0,1) bedeutet: Erstes Zeichen in 
der zweiten Zeile.
lcd.print("Viel Erfolg"); //Dort soll dann der Text „Viel Erfolg!!!“ 
auftauchen.
}


wurde oft benutzt
Gast #7271047
Lesenswert?

Wilhelm M. schrieb:
> An der Signatur von main() ändert das Environment nichts, das ist
> einfach im C++-Standard so festgelegt.

Ich sage ja "es ist halt so", trotzdem finde ich es unlogisch. Der 
Compiler hat eh schon jede Menge Sonderlocken für Mikrocontroller, da 
hätte ich das gleich mit geändert. Zumindest als Option.
#7271056
Lesenswert?

Steve van de Grens schrieb:
> Wilhelm M. schrieb:
>> An der Signatur von main() ändert das Environment nichts, das ist
>> einfach im C++-Standard so festgelegt.
>
> Ich sage ja "es ist halt so", trotzdem finde ich es unlogisch.

Das ist bei allen Dingen des C++-Standards so.
Die o.g. Seite beschreibt den Standard, keine Implementierung wie den 
gcc.

> Der
> Compiler hat eh schon jede Menge Sonderlocken für Mikrocontroller, da
> hätte ich das gleich mit geändert. Zumindest als Option.

Du hast es immer noch nicht verstanden.

1) Auf dem µC haben wir typischerweise eine "freestanding" Umgebung
2) Ob der Einstiegspunkt dann via main() oder was anderes geschieht, ist 
IB.
3) Der avr-gcc (gcc) verlangt nach wie vor main().
4) Wenn main(), dann nach den Regeln des Standards.
#7271059
Lesenswert?

Sebastian M. schrieb:
> Arduino IDE 2.0.2 also ganz neu. Der Fehler ist seit heute gestern noch
> nicht und habe nicht geändert.

Also ich habe nun getestet:
Arduino IDE 2.0.2
LiquidCrystal 1.0.7

Fazit: läuft!

Kopier das mal bei dir rein:
1
#include <LiquidCrystal.h> //LCD-Bibliothek laden
2

3
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
4

5
void setup()
6
{
7
  lcd.begin(16, 2);
8
}
9

10
void loop()
11
{
12
  lcd.setCursor(0, 0);
13
  lcd.print("www.funduino.de");
14
  lcd.setCursor(0, 1);
15
  lcd.print("Viel Erfolg");
16
}
Gast #7271060
Lesenswert?

Steve van de Grens schrieb:
> Ich sage ja "es ist halt so", trotzdem finde ich es unlogisch.

Und ich finde es unlogisch, wenn ein nicht vorhandenes Betriebssystem 
Kommandozeilenparameter bereit stellen soll.
Geradezu absurd finde ich das.

Steve van de Grens schrieb:
> Der Compiler hat eh schon jede Menge Sonderlocken für Mikrocontroller
Ja?
Dann nenne bitte eine unnötige.
Eine würde mir schon reichen....
#7271062
Lesenswert?

EAF schrieb:
> Steve van de Grens schrieb:
>> Ich sage ja "es ist halt so", trotzdem finde ich es unlogisch.
>
> Und ich finde es unlogisch, wenn ein nicht vorhandenes Betriebssystem
> Kommandozeilenparameter bereit stellen soll.
> Geradezu absurd finde ich das.

Darum geht es nicht, denn main() mit leerer Parameterliste ist ja 
möglich.
Es geht um den Rückgabetyp int (statt bspw. void).
#7271089
Lesenswert?

Thomas F. schrieb:
> main ist die Funktion, die beim Start des Programms ausgeführt wird. Die
> musst du natürlich noch anlegen, z.B.int main(int argc, char *argv)
> {
>   return 0;
> }
>
> Falls du das nicht verstehst, solltest du mal in ein Grundlagen-Buch
> über C/C++ oder auch zum Arduino schauen.

Der Vollständigkeit halber:

Die main() bei Arduino befindet sich in der main.cpp

"C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino"
1
#include <Arduino.h>
2

3
// Declared weak in Arduino.h to allow user redefinitions.
4
int atexit(void (* /*func*/ )()) { return 0; }
5

6
// Weak empty variant initialization function.
7
// May be redefined by variant files.
8
void initVariant() __attribute__((weak));
9
void initVariant() { }
10

11
void setupUSB() __attribute__((weak));
12
void setupUSB() { }
13

14
int main(void)
15
{
16
  init();
17

18
  initVariant();
19

20
#if defined(USBCON)
21
  USBDevice.attach();
22
#endif
23
  
24
  setup();
25
    
26
  for (;;) {
27
    loop();
28
    if (serialEventRun) serialEventRun();
29
  }
30
        
31
  return 0;
32
}
OP #7271097
Lesenswert?

folgende Meldung 
kommt:C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In 
function `pulseEnable':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:304:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:305:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:306:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:307:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:308:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:309:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In function 
`write4bits':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:314:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In function 
`send':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:288:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:292:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In function 
`write8bits':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:322:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In function 
`begin':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:91:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:94:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:96:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:101:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:107:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:109:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:110:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:112:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:122:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:126:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:130:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In function 
`clear':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:179:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o: In function 
`begin':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:140:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o:C:\Users\bas 
ti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/LiquidCrystal.cpp 
:144:  more undefined references to `delayMicroseconds' follow
C:\Users\basti\AppData\Local\Temp\cc7Yb0Mw.ltrans0.ltrans.o:(.rodata+0x6 
):  undefined reference to `Print::write(unsigned char const*, unsigned 
int)'
c:/users/basti/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7. 
3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr 
6/crtatmega2560.o:(.init9+0x0):  undefined reference to `main'
collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1
#7271117
Lesenswert?

Sebastian M. schrieb:
> C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui
> dCrystal.cpp:

Da steht was von "Arduino15", oben was von "2.0.2"? Kommen sich da grad 
zwei Installationen in die Quere?

>  undefined reference to `digitalWrite'

d.H. das komplette Arduino-Framework wird nicht mitkompiliert?
Hast du irgendwas an der boards.txt ö.Ä. geändert, und dir eine eigene 
Hardware ohne arduino-support zusammenkonfiguriert?
OP #7271250
Lesenswert?

Habe jetzt Deinstalliert und nochmal neu runtergeladen aber es hat 
nichts geholfen. Folgender Fehlermeldung kommt:

C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`pulseEnable':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:304:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:305:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:306:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:307:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:308:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:309:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`write4bits':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:314:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`send':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:288:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:292:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`write8bits':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:322:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`begin':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:91:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:94:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:96:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:101:  undefined reference to `pinMode'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:107:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:109:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:110:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:112:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:122:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:126:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:130:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`clear':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:179:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o: In function 
`begin':
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/Liqui 
dCrystal.cpp:140:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o:C:\Users\bas 
ti\AppData\Local\Arduino15\libraries\LiquidCrystal\src/LiquidCrystal.cpp 
:144:  more undefined references to `delayMicroseconds' follow
C:\Users\basti\AppData\Local\Temp\ccZNphFx.ltrans0.ltrans.o:(.rodata+0x6 
):  undefined reference to `Print::write(unsigned char const*, unsigned 
int)'
c:/users/basti/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7. 
3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr 
6/crtatmega2560.o:(.init9+0x0):  undefined reference to `main'
collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1
OP #7271257
Lesenswert?

Adam P. schrieb:
> Schau mal unter
>
> Tools -> Manage Libraries...
>
> Hast du da die neuste?
>
> Edit:
> Ich vermute auch, dass er da einige Dateien nicht findet.
> Das einfachste wäre evtl. wirklich alles (Arduino IDE) löschen und neu
> installieren.
Wenn ich die neueste Installiere und ausführe kommt der nachfolgende 
Fehler (aber es steht mehrere Bibliotheken dafür dabei):
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`pulseEnable':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:304:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:305:  undefined reference to `delayMicroseconds'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:306:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:307:  undefined reference to `delayMicroseconds'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:308:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:309:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`write4bits':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:314:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`send':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:288:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:292:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`write8bits':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:322:  undefined reference to `digitalWrite'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`begin':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:91:  undefined reference to `pinMode'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:94:  undefined reference to `pinMode'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:96:  undefined reference to `pinMode'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:101:  undefined reference to `pinMode'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:107:  undefined reference to `delayMicroseconds'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:109:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:110:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:112:  undefined reference to `digitalWrite'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:122:  undefined reference to `delayMicroseconds'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:126:  undefined reference to `delayMicroseconds'
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:130:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`clear':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:179:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o: In function 
`begin':
C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCryst 
al.cpp:140:  undefined reference to `delayMicroseconds'
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o:C:\Users\bas 
ti\Documents\Arduino\libraries\LiquidCrystal\src/LiquidCrystal.cpp:144: 
more undefined references to `delayMicroseconds' follow
C:\Users\basti\AppData\Local\Temp\ccFvvQ9m.ltrans0.ltrans.o:(.rodata+0x6 
):  undefined reference to `Print::write(unsigned char const*, unsigned 
int)'
c:/users/basti/appdata/local/arduino15/packages/arduino/tools/avr-gcc/7. 
3.0-atmel3.6.1-arduino7/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr 
6/crtatmega2560.o:(.init9+0x0):  undefined reference to `main'
collect2.exe: error: ld returned 1 exit status
Mehrere Bibliotheken wurden für "LiquidCrystal.h" gefunden
  Benutzt: C:\Users\basti\Documents\Arduino\libraries\LiquidCrystal
  Nicht benutzt: 
C:\Users\basti\AppData\Local\Arduino15\libraries\LiquidCrystal
exit status 1

Compilation error: exit status 1
Gast #7271317
Lesenswert?

Solange das Display nicht initialisiert wurde (was eine Software-Sache 
ist) sollte es eine Reihe graue Blöcke anzeigen und die andere Reihe 
leer bleiben. Stelle ggf. das Kontrast Poti entsprechend ein.

Wenn du das schon nicht geht, hast du ein Hardwareproblem.
Gast #7271326
Lesenswert?

Εrnst B. schrieb:
> Das wird über I²C angesprochen

Den Verdacht habe ich auch.

Die Produktbeschrezbung von Conrad ist ein schlechter Witz, das 
Datenblatt eine Unverschämtheit. Wenn ich mir die Fotos anschaue, könnte 
da sogar ein Mikrocontroller mit drauf sein, aber im Text und im 
downloadbaren Material steht nichts dazu.
#7271335
Lesenswert?

Steve van de Grens schrieb:
> Ich habe diese Doku gefunden, demnach ist LiquidCrystal (ohne I²C) doch
> die richtige Bibliothek.

Ah, ok, dann war das Reichelt-Bild irreführend.

Vergleiche die Pinouts, und schau welche Pinnummern vom Mega 2560 dem 
alten Arduino entsprechen, dann pass die Initialisierung entsprechend 
an.
Angehängte Dateien:
Gast #7271773
Lesenswert?

Steve van de Grens schrieb:
> Die Produktbeschrezbung von Reichelt ist ein schlechter Witz, das
> Datenblatt eine Unverschämtheit.

Die bedauernswerten deutschen Händler beklagen sich über China, aber 
bieten keinerlei Mehrwert - Produkte ohne oder mit schlechter 
Beschreibung bekomme ich direkt aus China billiger.

EAF schrieb:
> Bei Arduino braucht man kein loop() und setup().

Geh' besser mit Deinen Bauklötzen spielen.

Steve van de Grens schrieb:
> Ich habe diese Doku gefunden, demnach ist LiquidCrystal (ohne I²C) doch
> die richtige Bibliothek. Aber mit anderen Parametern.
> https://wiki.keyestudio.com/Ks0256_keyestudio_LCD1602_Expansion_Shield

Die dortige Initialisierung passt, wenn das Display auf einem UNO 
steckt. Ich habe keine Ahnung, ob der Mega die gleiche Belegungsfolge 
bietet. Ich benutze beide nicht und meine Displays habe ich lose ohne 
Platine drunter.
Gast #7271795
Lesenswert?

EAF schrieb:
> Bei Arduino braucht man kein loop() und setup().

Und für was hältst du die Aufrufe in der main.cpp vom Arduino Core?
1
int main(void)
2
{
3
  init();
4
  initVariant();
5

6
#if defined(USBCON)
7
  USBDevice.attach();
8
#endif
9
  
10
  setup();
11
    
12
  for (;;) {
13
    loop();
14
    if (serialEventRun) serialEventRun();
15
  }
16
  return 0;
17
}

https://github.com/arduino/ArduinoCore-avr/blob/1.8.5/cores/arduino/main.cpp
Gast #7271796
Lesenswert?

Manfred schrieb:
> EAF schrieb:
>> Bei Arduino braucht man kein loop() und setup().
>
> Geh' besser mit Deinen Bauklötzen spielen.

Hmmm....
Trollst du gerade, oder hast du keine Ahnung von dem Kram?

Das kürzest mögliche Arduino fähige C oder C++ Programm sieht so aus:
1
int main(){}
Es kompiliert perfekt und tut genau das, was man erwartet: Nichts!
Siehst du da ein loop() oder setup()?
Ich nicht.
Gast #7271801
Lesenswert?

Nachtrag/Erklärung:
Der Arduino Builder sieht vor, dass man auch auf das Framework gänzlich 
verzichten kann.
Und das geht eben genau über den Weg, dass man setup() und loop() 
weglässt und selber eine main() definiert.
Gast #7271866
Lesenswert?

Wolfgang schrieb:
> Und was an dem Programm ist Arduino?

Ach du armer Kerl.
Es kann mit der Arduino IDE kompiliert werden.
Es kann dann auf einem Arduino laufen.
Selbst große Teile des Frameworks kann man verwenden.
Auch viele der Libraries.

Also:
Was ist daran nicht Arduino?

Ich sehe schon, jetzt willst du sogar bestimmen dürfen was Arduino ist, 
und wo es aufhört....
Ich schätze, dass du damit deinen Kompetenzbereich überschreitest.
Klare: Die Definitionshoheit liegt nicht bei dir!
OP #7272063
Lesenswert?

Natürlich bin ich mir bewusst, dass es die main gibt aber ich die nicht 
zwangsläufig selber schreiben muss. Hört endlich auf mit dem 
klugscheissen wegen der main xD.

Ja ich benutzte den Arduino Mega und nicht den Uno

bzw. ich habe auch einen Uno zur verfügung aber da gehts auch nicht wenn 
ich den nur draufstecke
Gast #7272069
Lesenswert?

Ich verstehe nicht wo das Problem ist, uns wieso ihr da so ein Theater 
macht.


Das 1602 Display ist DAS Display für den Arduino. Ergo gibt es da 
Schaltplane und Codes ohne Ende für im Netz.

Egal ob man ein UNO oder ein Nano hat. Der einzige Unterschied ist, das 
der Nano genug Leitungen hat das Display auch OHNE i2c Huckepack-Platine 
anzuschließen.

Für BEIDE Varianten gibt es sogar in der Arduino-IDE (wenn richtig 
installiert) ein Beispiel-Code. Zu unterscheiden sind die beiden 
Varianten mit den Zusatz i2c oder halt nicht ;)


Also macht nicht so ein Aufstand von Zwerg ;)
Gast #7272071
Lesenswert?

Schlaumaier schrieb:
> Das 1602 Display ist DAS Display für den Arduino. Ergo gibt es da
> Schaltplane und Codes ohne Ende für im Netz.

Bis gestern Abends war der Knackpunkt, den Plan von der Platine zu 
finden. Was nützt ein Schaltplan, der nicht dem Produkt entspricht? Was 
nützt ein Datenblatt, in dem nicht einmal die Pinbelegung angegeben ist?

Der TO hat den Plan inzwischen und auch die richtige Bibliothek, sowie 
deren Doku.

> Also macht nicht so ein Aufstand von Zwerg ;)

Jetzt hast du es uns allen aber richtig gegeben. Und, läuft das Display 
jetzt? Nein!

War mal wieder sehr Hilfreich ............ nicht
Gast #7272083
Lesenswert?

Steve van de Grens schrieb:
> Der TO hat den Plan inzwischen und auch die richtige Bibliothek, sowie
> deren Doku.

Ich wäre für ein Foto des Display. Irgendwie habe ich das Gefühl das es 
kein normales 1602 ist.

ODER der TO vergessen hat den Kontrast anzuklemmen. ;)

https://starthardware.org/lcd/   <- Ich meine die Leitung die durch ein 
Poti in den Plan läuft. ;)

Und wo ich schon zig Leuten gesagt habe sie sollen an der weisen 
Schraube in beide Richtungen drehen bis auf den Display was passiert. 
Logo wenn sie die i2c-Huckepack-Platinen nutzen.

DANN kommt der große AH-da-ist-was. Effekt. ;)
Gast #7272098
Lesenswert?

Sebastian M. schrieb:
> Ich habe das Display:
> 
https://www.reichelt.de/arduino-shield-display-lcd-kit-16x2-blau-weiss-ard-shd-lcd-p270527.html?&trstct=pos_2&nbc=1

Steve van de Grens schrieb:
> Schlaumaier schrieb:
>> Ich wäre für ein Foto des Display.
>
> Er hat es doch verlinkt!

Ok habe ich übersehen.

Dann soll er einfach DIESE Seite aufrufen und sich freuen.

https://www.az-delivery.de/products/azdelivery-hd44780-1602-lcd-module-display-2x16-zeichen-fur-arduino-lcd1602-keypad

Und an der Schraube drehen in beide Richtungen ;)

Und das nächste mal kein Shild kaufen. Damit hat man nur stress.
Gast #7272113
Lesenswert?

Schlaumaier schrieb:
> Dann soll er einfach DIESE Seite aufrufen und sich freuen.

We gesagt, er hat bereits ein Programmbeispiel bekommen. Sogar direkt 
auf der Webseite des Produkt-Herstellers.

> Und an der Schraube drehen in beide Richtungen

Den Kontrast hatten wir wie gesagt bereits geklärt.

Höre du doch mal auf, am Rad zu drehen!
Und lies wenigstens mal die vorherigen Beiträge, bevor du störst.
Gast #7272764
Lesenswert?

Sebastian M. schrieb:
> bzw. ich habe auch einen Uno zur verfügung aber da gehts auch nicht wenn
> ich den nur draufstecke

Weiter vorne wurde Dir ein Link gezeigt, hinter dem es auch ein 
Beispielprogramm gibt:
Beitrag "Re: Arduino Display"

Wenn das am Uno nicht geht ... würde ich mal die portable Version der 
1.5.x-IDE auf den Rechner packen.

Du hast nicht zufällig ein Hardwareproblem, dass das Display extrem 
blass ist oder Rechtecke anzeigt = Kontrastpoti falsch eingestellt?

Schlaumaier schrieb:
> Das 1602 Display ist DAS Display für den Arduino. Ergo gibt es da
> Schaltplane und Codes ohne Ende für im Netz.

Ja.

> Egal ob man ein UNO oder ein Nano hat. Der einzige Unterschied ist, das
> der Nano genug Leitungen hat das Display auch OHNE i2c Huckepack-Platine
> anzuschließen.

Das geht auch mit dem Uno ohne I2C.

Schlaumaier schrieb:
> Naja, vielleicht liest der TO ja meine Tipps.

Na hoffentlich nicht.

Steve van de Grens schrieb:
> Die bringen ihn kein Stück weiter, weil sie nicht zu seinem konkreten
> Produkt passen.

Vielleicht muss der TO mal die Leitungen vom UNO-Stecker bis zum Display 
durchklingeln, ob diese wirklich 1:1 passend durchgeschaltet sind. Auf 
dem Display sind sie ja sichtbar aufgedruckt.

Irgendwie hat Schlaumaier ja recht: Diese 1602 sind das Standarddisplay 
und leidlich problemlos in Betrieb zu nehmen.
Gast #7272791
Lesenswert?

Sebastian M. schrieb:

> Ja ich benutzte den Arduino Mega und nicht den Uno
>
> bzw. ich habe auch einen Uno zur verfügung aber da gehts auch nicht wenn
> ich den nur draufstecke

Stand der Dinge war eigentlich, dass Sebastian nicht compilen kann 
(genauer gesagt: Das linking bricht mit unresolved refs ab).

Ist das jetzt geloest oder ist das ein Troll?

Gruesse

Th.

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