Hallo Zusammen,
hat den keiner eine Idee, woran es liegen kann ?
Ich habe jetzt auch mal diese Routinen verwendet, welche mir den gleichen Effekt gezeigt haben:
Ausserdem dachte ich mal, ich verwendet die Standard Routine LSM303-Klasse von Pololu zu Testzwecken. Hier habe ich aber Probleme mit der Klasse Vector. Dachte AVR Studio 7 wäre eine Lösung, musste aber auch hier passen.Code:void getAtomicTiltHeading(void) { Angle[PITCH] = asin(-Atomic_accel[X]); Angle[ROLL]= asin(Atomic_accel[Y]/cos(Angle[PITCH])); float magXcomp = (LM303_magnet[X]*cos(Angle[PITCH]))+(LM303_magnet[Z]*sin(Angle[PITCH])); float magYcomp = (LM303_magnet[X]*sin(Angle[ROLL])*sin(Angle[PITCH]))+(LM303_magnet[Y]*cos(Angle[ROLL]))-(LM303_magnet[Z]*sin(Angle[ROLL]) * cos(Angle[PITCH])); Angle[HEADING] = atan2(magYcomp,magXcomp) + M_PI_2; } //================================================================== // calculate the actual heading of LM300 Chip //================================================================== void getLM303TiltHeading(void) { LM303[PITCH] = asin(-LM303_accel[X]); LM303[ROLL]= asin(LM303_accel[Y]/cos(LM303[PITCH])); float magXcomp = (LM303_magnet[X]*cos(LM303[PITCH]))+(LM303_magnet[Z]*sin(LM303[PITCH])); float magYcomp = (LM303_magnet[X]*sin(LM303[ROLL])*sin(LM303[PITCH]))+(LM303_magnet[Y]*cos(LM303[ROLL]))-(LM303_magnet[Z]*sin(LM303[ROLL]) * cos(LM303[PITCH])); LM303[HEADING] = atan2(magYcomp,magXcomp) + M_PI_2; }
Viele Grüße
Richard
Lesezeichen