DAS wäre dann vlt der richtige Tipp für fredyxxAnsonsten rede mit dem Compiler, er lässt sich (mittels Flag) überreden.![]()
Ich würde floats ggf. mit isnan() oder isinf() testen.
Hier ein Auszug aus Print.cpp des Arduino-Kerns:if (isnan(number)) return print("nan");
if (isinf(number)) return print("inf");
if (number > 4294967040.0) return print ("ovf"); // constant determined empirically
if (number <-4294967040.0) return print ("ovf"); // constant determined empirically
sprichst du da als Arduino-Nutzer?
Wir reden ja hier von der Arduino-IDE, als Rat für einen Arduino-Nutzer - hast du's mal ausprobiert?
(müsste aber auch in <float.h> stehen, nicht in <math.h>, CMIIW - aber sag das mal nem Arduino-Anfänger, der sonst nie #includes benutzen muss... dann könnte es gehen mit FLT_MAX - was aber hier nicht das Problem ist...)
@fredyxx:
bevor du hier den Überblick verlierst...
ich würde es so machen wie hier beschrieben:
https://www.roboternetz.de/community...l=1#post629121
dann ist es ntl ok !
wie kommt es denn (nur aus Interesse), dass dein Programm einen verbotenen Wert für deinen acos generiert? Das dürfte doch eigentlich gar nicht passieren?
alles klar, so gehts mir zur Zeit mit anderen Dingen auch
- - - Aktualisiert - - -
ps:
zu deinem Code
Du kannst nicht x mit NAN vergleichen, NAN ist kein gültiger numerischer Wert.Code:if (x == NAN) { Serial.println("Mist"); }
Dass du nan auf dem Screen hast, ist die Folge dessen, dass du an Serial.print einen Wert übergibst, der als ungültig definiert ist, und daher gibt print von sich aus nan aus.
Daher kannst du auch mit if() keine Abfrage machen wie beim Exception-Handling mit try...catch - du musst die Exceptions von dir aus selber, manuell behandeln, wie schon von Sisor angedeutet
d.h. z.B. versuchen perIch würde floats ggf. mit isnan() oder isinf() testen.
, oder versuchen, per Flag die C++ Exceptions einzuschalten,Code:if (isnan(x)) { Serial.println("Mist"); }
oder die gültigen/ungültigen Bereiche vorher auszuschließen, wie ich es getan habe..
Geändert von HaWe (09.07.2016 um 19:46 Uhr)
Lesezeichen