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
Thomas F. schrieb:> main ist die Funktion, die beim Start des Programms ausgeführt wird. Die> musst du natürlich noch anlegen, z.B.
Nein, muss er nicht.
Wie im Titel steht, handelt es sich um Arduino.
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
>intmain(intargc,char*argv)
2
>{
3
>return0;
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?
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?
Vllt. bekommt die main() ja Parameter ausm Reset_Handler :-D
Aber den gibts ja so auch nicht aufm Atmega.
Sebastian M. schrieb:> Irgendwas stimmt mit den Bibliotheken nicht
Welche Version von der Arduino IDE hast und welche Version von der
LiquidCrystal Bibliothek?
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.
Steve van de Grens schrieb:> Aber das wirft die Frage auf, warum die main() einen> Integer (nicht void) als Ergebnis haben muss.
Ja das ist echt bissel blöd.
Da du ja nie ein return haben wirst.
Sebastian M. schrieb:> Arduino IDE 2.0.2 also ganz neu. Der Fehler ist seit heute gestern noch> nicht und habe nicht geändert.
Zeig mal dein code, häng den mal als Datei an, oder poste ihn falls
nicht zu lang.
Sebastian M. schrieb:> Arduino IDE 2.0.2 also ganz neu.
Ich halte die neue IDE noch für relativ krank.
Wenn man nicht zwingend auf irgendwelche Features der 2.XXX angewiesen
ist rate ich weiterhin zur portablen Installation der 1.8.19
Adam P. schrieb:> Steve van de Grens schrieb:>> Aber das wirft die Frage auf, warum die main() einen>> Integer (nicht void) als Ergebnis haben muss.>> Ja das ist echt bissel blöd.> Da du ja nie ein return haben wirst.
Adruino-Gedöns ist C++.
Daher:
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
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.
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.
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:
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....
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).
EAF schrieb:> Dann nenne bitte eine unnötige.
Wieso sollte ich? ich habe nicht behauptet, das die Sonderlocken unnötig
seien. Wenn du da welche vermutest, suche sie selbst.
Wilhelm M. schrieb:> Darum geht es nicht, denn main() mit leerer Parameterliste ist ja> möglich. Es geht um den Rückgabetyp int (statt bspw. void).
Da haben wir aber die gleiche Problematik. Es ist nichts da, was den
return Wert konsumiert.
Steve van de Grens schrieb:> Wilhelm M. schrieb:>> Darum geht es nicht, denn main() mit leerer Parameterliste ist ja>> möglich. Es geht um den Rückgabetyp int (statt bspw. void).>> Da haben wir aber die gleiche Problematik. Es ist nichts da, was den> return Wert konsumiert.
Und damit sind wir wieder am Anfang:
Beitrag "Re: Arduino Display"
Joachim B. schrieb:> Wilhelm M. schrieb:>> Adruino-Gedöns ist C++.>> Daher:>> int main(){>> und wann soll main auf dem Arduino terminieren?> int main() bleibt Unsinn
Dann solltest Du besser
Steve van de Grens schrieb:> Wenn du da welche vermutest, suche sie selbst.
Wenn du dir Änderungen am Standard erwünscht, dann bist du hier
vermutlich an der falschen Stelle am Buddeln.
Also falsche Baustelle.
Mein Rat:
Spare dir die Energie für das Nörgeln, oder suche dir den Ansatzpunkt,
wo du Wirkung erreichen kannst.
EAF schrieb:> Steve van de Grens schrieb:>> Wenn du da welche vermutest, suche sie selbst.>> Mein Rat:> Spare dir die Energie für das Nörgeln, oder suche dir den Ansatzpunkt,> wo du Wirkung erreichen kannst.
wer ist denn dieser "Steve van de Grens"
der 2t Nick vom Stefanus?
Beitrag "Wieviele Leds in Reihe möglich, 24V, 0.5Ampere Netzteil?"
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.
Sebastian M. schrieb:> es liegt sicher nicht am Code sondern eher> irgendwie an den Speicherorten. Weiß da jemand mehr
Ist die o.g. Fehlermeldung die einzige?
Sonst poste mal alles aus der Ausgabe.
Zur not, einmal neu installieren und Updates machen auch von den Libs.
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
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.
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?
Sebastian M. schrieb:> folgende Meldung
Da werden wesentliche Teile des Frameworks nicht eingebunden.
Die Installation ist defekt.
Nach der Deinstallation sollte auch dieser
C:\Users\basti\AppData\Local\Arduino15\libraries
Ordner gelöscht werden.
evtl. vorher Backup anlegen.
EAF schrieb:> Nach der Deinstallation sollte auch dieser> C:\Users\basti\AppData\Local\Arduino15\libraries> Ordner gelöscht werden.
Korrektur:
Nach der IDE Deinstallation sollte auch dieser
C:\Users\basti\AppData\Local\Arduino15
Ordner gelöscht werden.
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
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
Adam P. schrieb:> Also ich habe nun getestet:
Ich auch!
Sebastian M. schrieb:> Folgender Fehlermeldung kommt:
Eigentlich ist wichtiger, das was er tut, dass die Fehler kommen, wissen
wir schon.
Es kann übrigens Sinn machen die ganzen mit arduino beginnenden Ordner
aus temp zu löschen.
bzw die Datenträgerbereinigung da mal drüber zu schicken.
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.
Ε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.
Du hast einen Mega 2560, korrekt?
Da schaut das Pinout nicht so aus, als könnte man das Display-Board
irgendwo sinnvoll direkt draufstecken.
Das Bild von der Reichelt-Seite passt nicht zu deinem Arduino. Du musst
die richtigen SDA/SCL-Pins bei deinem Arduino suchen.
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.
> bei Arduino braucht man keine main.> Was meinst du wohl, wer loop() und setup() bei Arduino aufruft?
Bei Arduino braucht man kein loop() und setup().
(meistens ehr doch, also: Wahlweise)
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.
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
intmain(){}
Es kompiliert perfekt und tut genau das, was man erwartet: Nichts!
Siehst du da ein loop() oder setup()?
Ich nicht.
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.
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!
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
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 ;)
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
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. ;)
Schlaumaier schrieb:> Ich wäre für ein Foto des Display.
Er hat es doch verlinkt!
> ODER der TO vergessen hat den Kontrast anzuklemmen.
Hatten wir auch schon geklärt, gähn.
> DANN kommt der große AH-da-ist-was. Effekt.
Sicher nicht. Deine Hinweise sind hier vollkommen nutzlos.
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.
Steve van de Grens schrieb:> Lies doch wenigstens mal die vorherigen Beiträge, bevor zu störst!
Naja, vielleicht liest der TO ja meine Tipps.
Du musst sie ja nicht lesen.
Schlaumaier schrieb:> Naja, vielleicht liest der TO ja meine Tipps.
Die bringen ihn kein Stück weiter, weil sie nicht zu seinem konkreten
Produkt passen.
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.
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.