Also auf jeden Fall wird die Funktion nicht gefunden!
Daher wohl auch die 0.
Hast du denn #include <math.h> in deinem Programm stehen?
Hallo Miteinander
ich bin dabei, ein Programm zu schreiben, das den Roboter irgendwann mal automatisch an seine Ladestation ankoppeln soll.
Als ersten schritt dachte ich mir, lasse ich den Roboter mithilfe von Polarkoordinaten (x, y aus Drehung und gefahrener Strecke) seine Position bestimmen, um später den Rückweg zu finden.
Nun zu meinem Problem: um die Koordinaten zu berechnen benötige ich die Sinus und Kosinus-funktion - theoretisch sind diese ja in math.h enthalten...
Doch: auf dem RP6 ist sin(90) = 0! (Normalerweise sollte ja sin(90) gleich 1 sein)
auch sin(45), sin (10), sin(1) und sin(0) sind 0...
PN gibt aus:
warning: implicit declaration of function 'sin'
warning: incompatible implicit declaration of built-in function 'sin'
warning: implicit declaration of function 'cos'
warning: incompatible implicit declaration of built-in function 'cos'
Wie kann ich die sin bzw cos Funktion auf dem RP6 benutzen?
mfg pk
Also auf jeden Fall wird die Funktion nicht gefunden!
Daher wohl auch die 0.
Hast du denn #include <math.h> in deinem Programm stehen?
In C und Delphi musst du die Winkel im Bogenmaß angeben.
Also b = alpha / 180° * pi
Wird vielleicht da auch der Fall sein!
Dann würde die Funktion nicht immer 0 liefern, sondern falsche, aber (bei den als Beispiel genannten Zahlen) unterschiedliche Werte
Die Warnungen sprechen in diesem Fall für sich...
die Funktion wird einfach nicht gefunden.
So viele Treppen und so wenig Zeit!
Ups, hatte math.h tatsächlich nicht included
Jetzt zwar keine Fehlermeldung mehr, gibt allerdings hartnäckig weiter 0 aus (Auch mit Bogenmaß)
Hallo,
Ich kann es gerade nicht testen, aber probier mal
double x = 1;
und dann erst
sin(x)
Oder halt nach double casten mit sin((double)x).
Fließkommazahlen kannst Du auch nicht mit writeInteger ausgeben (sagt ja der Name schon - "schreibGanzeZahl").
Da musst Du dtostrf nehmen
http://www.nongnu.org/avr-libc/user-...490137317caa44
um das in ein char array reinzuschreiben
und anschließend mit writeString() ausgeben.
MfG,
SlyD
gibt mir aus: " 0.000"Code:double a = (90/180)*3.14159; double b = sin((double) a); char* c = ""; dtostrf(b, 10, 3, c); writeString(c); writeString_P("\n");
Habe herausgefunden: (90/180)*3.14159 = 0...
Wenn ich a = 1.5 setze, kommt für sin(a) sogar 0.997 heraus
Wieso gibt 90/180 denn 0 bitte?
Ist doch einfach (90/180) wir standardmäßig in int durchgeführt,Wieso gibt 90/180 denn 0 bitte?
versuche es mal so:
Gruß SebastianCode:double a = ((double)90/180)*3.14159;
Linus TorvaldSoftware is like s e x: its better when its free.
Ja das funktioniert! vielen Dank an alle!
Lesezeichen