Dienstag, 1. September 2015

Fehler in Arduino Sketchen finden

In diesem Post möchte ich darauf eingehen, wie man am schnellsten und effektivsten Fehlern in seinen Arduino Sketchen findet.

Zunächst einmal muss zwischen zwei grundsätzlichen Arten von Fehlern unterscheiden. Bei der einen Art von Fehler, gibt die IDE eine Fehlermeldung aus(siehe oben) und der Sketch landet gar nicht erst auf dem Arduino. Diese Fehlergruppe nennt sich Syntaxfehler. Bei der anderen Art von Fehler, wird der Sketch einwandfrei kompiliert, sobald der Arduino jedoch anfängt den Code auszuführen passieren andere Dinge als eigentlich vorhergesehen, beziehungsweise gar nichts. Das sind dann normalerweise Logikfehler.

Syntaxfehler

Bei einem Syntaxfehler wird unten in der Arduino IDE ein roter Balken angezeigt, sowie die Beschreibung des Fehlers. Diese Beschreibung hilf auch in den meisten Fällen den Fehler zu finden. In meinem Beispiel von oben fehlt ein Semikolon(;), und wenn man den unteren Bereich vergrößert, steht das auch 1 zu 1 so in der Beschreibung:
Eine weitere Hilfe ist auch die Zeilenangabe vor der Fehlermeldung, in diesem Fall 9. Wichtig dabei ist jedoch zu beachten, dass der Fehler, wie etwa bei einem fehlenden Semikolon, nicht in der angegeben Zeile sondern in der Zeile darüber liegt, und der Compiler erst bei Beginn des nächsten Befehls das Semikolen vermisst.

Solltet ihr mehrere Fehlermeldung angezeigt bekommen, so ist es zu empfehlen mit der ersten Fehlermeldung/Zeile im Sketch zu beginnen, da der erste Fehler die anderen als Folgefehler verursacht haben könnt.

Ein weiterer "beliebter" Fehler, der vergleichsweise schwierig zu finden ist, ist wenn man eine Bibliothek nachladen will, welche jedoch nicht gefunden wird. Deshalb sollte ihr bei einem, euch komisch vorkommenden, Fehler immer per Hand überprüfen ob alle Bibliotheken korrekt sind, und korrekt eingebunden sind.

Logikfehler

Um einen Logikfehler zu finden, solltet ihr zunächst einmal den fehlerhaften Sketch mehrere Male ausführen lassen(drücken der Reset Taste), und schauen wie der Arduino reagiert. Dadurch sollte ihr einen Eindruck davon bekommen, wo der Arduino "falsch entscheidet" oder in welchem Abschnitt der Fehler liegen muss. 

Diesen Abschnitt solltet ihr jetzt in einen neuen Arduino Sketch kopieren und gesondert ausprobieren lassen. Dadurch kann man recht schnell erkennen, ob der Abschnitt an sich funktioniert. Sollte der Abschnitt nicht funktionieren, müsst ihr ihn euch nochmal genau anschauen, oder gegebenfalls nochmal komplett neu schreiben und mit eurer bisherigen Lösung vergleichen.

Sollte der Abschnitt an sich zwar einwandfrei funktionieren, im ganzen Sketch jedoch nicht, solltet ihr überprüfen, welche Variablen der Abschnitt/die Funktion erhält, und eventuell über die serielle Konsole manuell überprüfen, ob die Variablen stimmen. 

Außerdem kann der Fehler darin liegen, dass der Arduino gar nicht bis zu diesem Abschnitt kommt, da er eventuell in einer if Schleife ist, oder der Sketch in einer Endlosschleife steckt. Auch diese Fehler kann man leicht über das Ausgebenlassen der Variablen in der seriellen Konsole finden.  

Wenn man PC Programme oder Apps entwickelt, so muss man sich nur mit Syntaxfehlern und Logikfehlern herunterschlagen. Beim Arduino gibt es jedoch noch eine weitere "Kategorie", welche irrtümlich als Logikfehler interpretiert wird: Hardwarefehler.

Es kann leicht passieren, dass sich ein Kabel löst, oder man etwas falsch herum anschließt. Aus diesem Grund sollte man auch immer seine Schaltungen doppelt prüfen. Auch hier kann ist es hilfreich, sich die aktuellen Messwerte von angeschlossenen Geräten auf dem PC Display ausgeben zu lassen. Dadurch kann man diese zwar eher seltenen, aber deshalb umso lästigeren Fehler vermeiden. 

Außerdem sollte man überprüfen, ob alle verwendeten Komponenten einwandfrei funktionieren. Das kann man machen, indem man sie alle einzeln mit dem Arduino ansteuert und testet.

Keine Kommentare:

Kommentar veröffentlichen