Hallo zusammen,
ich bin kompletter Anfänger bei der Programmierung der Arduino Mega. Ich habe alles soweit angeklemmt und beim Hochladen des Sketches kommt immer zum Schluss folgender Fehler:
exit status 1 Fehler beim Kompilieren für das Board Arduino Mega or Mega 2560.
Aufgrund des Umfanges habe ich das Ausgabeergebnis und das Programm jeweils in eine Textdatei kopiert und dem Post angehängt.
Ich bin einfach zu unerfahren, um das Problem zu finden. Kann mir vielleicht jemand weiterhelfen? Ich bin wirklich für jede Hilfe dankbar. Ich finde einfach das Problem nicht.
roonholt:
und beim Hochladen des Sketches kommt immer zum Schluss folgender Fehler: Fehler beim Kompilieren für das Board Arduino Mega or Mega 2560.
Ich hab mal kurz drüber getickert - sehr umfangreich.
Ich vermute, das die encoder-lib oder die lcd lib das Problem ist.
Ich verwende:
und habe lcd.begin auskommentiert:
// lcd.begin(20, 4); //neuere Library
Damit kompiliert der code mit
Der Sketch verwendet 62878 Bytes (24%) des Programmspeicherplatzes. Das Maximum sind 253952 Bytes.
Globale Variablen verwenden 4991 Bytes (60%) des dynamischen Speichers, 3201 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.
ABER!
Da sind noch Baustellen drin. Es gibt einige Warnungen.
[-Wreorder]
[-Wignored-qualifiers]
Im Zusammenhang mit dem encoder
und
'dreh' may be used uninitialized in this function [-Wmaybe-uninitialized]
Sag mal, was Du für libs Du verwendest - Herkunft!
mir sind das zu viele defines und zu viele globale Variablen. In paar Wochen blickst du selbst nicht mehr durch. Versprochen.
unused Parameter ... erstmal geschenkt
unused return Parameter ... erstmal geschenkt
und vieles andere mehr.
Klammerfehler für if Vergleiche ... gefährlich
Das kann zu exit status Fehler führen.
Bei Zeile 10247 gehts los.
Arbeite die Fehler und Warnungen von oben nach unten ab.
Die Fehlermeldungen mit den Libs sind so nicht normal. Vermutlich falsche Anwendung der Lib.
Miteinander kollidieren können sie natürlich untereinander auch.
Wenn gar nichts geht, dann Code abspecken, also rückbauen bis es wieder kompiliert und man selbst duchblickt.
Ich glaube kaum das es jemand gibt der sich durch den Wust an Code wühlt. Ich muss das leider so sagen.
Tipp. Weg von defines, hin zu lokalen Variablen und Funktionen mit Parameter und Rückgabewerten. defines haben das Problem das sie bei Mehrfachdefinitionen einfach überschrieben werden. Du bekommst keinerlei Warnungen. Das letzte define gewinnt. Und wenn du im Code mehrfach auf ein if define abfragst erhöhst du nur die Fehlerquote. Dann knallt es früher oder später sowieso. Datenstrukturen sind auch hier unabdingbar, allein schon für den eigenen Durchblick. Hier habt leider einfach drauflos programmiert und der Code ist gewachsen und gewachsen und ...
Ja, ok. Besoffen könnte mir so ein Code auch passieren. Statt sie zu hauen, könnte man sie auch für eine Stunde daran hindern, aufs Klo zu gehen. Das merkt man sich bestimmt auch
Bau Dir eine portable Version Deiner Arduino-Umgebung und installier die libs von da.
Und dann unbedingt die Klammern!
Doc_Arduino hat es schon angesprochen.
Ich war da auch schon.
Das fängt aber schon 9000 Zeilen früher an.
if (funkruf)
if (brauerruf)
mySwitch.send(funk_variabel_ein, 24);
delay(funkdelay);
Da kann sich durchwühlen wer will.
Die Lösung dürfte in der Verwendung der (richtigen) libs liegen und dann dem hobbybrauer mal nen Bier spendieren mit dem Hinweis, das der seinen Code überarbeitet.
Danke für die Rückmeldungen. Ich bin sehr naiv da dran gegangen. Ich denke der Tipp mit dem Rückbau ist sehr gut. Dann ist es auch beim Aufbau nachher einfacher die Schritte zu verstehen.