Und das kannst du in deiner Funke nicht programmieren ? Also einfach 2 Modelle und das eine drehst halt mit irgendwelchen Mischern oder so.Mataschke hat geschrieben:Prinzipiell ne Virtuelle TS Drehung
MFG
speedy
Und das kannst du in deiner Funke nicht programmieren ? Also einfach 2 Modelle und das eine drehst halt mit irgendwelchen Mischern oder so.Mataschke hat geschrieben:Prinzipiell ne Virtuelle TS Drehung
und dann?speedy hat geschrieben:Also einfach 2 Modelle und das eine drehst halt mit irgendwelchen Mischern oder so.
Ach - du bekommst das sicher auch ohne dem hin.Mataschke hat geschrieben:ich brauch die Berechung der Sensoren um 45° gedreht sonst wird das nix
you made my dayspeedy hat geschrieben:dann mach Berechnung +"
Freut mich.Mataschke hat geschrieben:you made my dayspeedy hat geschrieben:dann mach Berechnung +"
Code: Alles auswählen
if (armed ) {
#ifdef BI
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH]; //FRONT
#endif
#ifdef TRI
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 ; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 ; //RIGHT
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 ; //LEFT
#endif
#ifdef QUADP
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH] - axisPID[YAW]; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] + axisPID[YAW]; //RIGHT
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] + axisPID[YAW]; //LEFT
motor[3] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH] - axisPID[YAW]; //FRONT
#endif
#ifdef QUADX
motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] + axisPID[PITCH] - axisPID[YAW]; //REAR_R
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH] + axisPID[YAW]; //FRONT_R
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] + axisPID[PITCH] + axisPID[YAW]; //REAR_L
motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH] - axisPID[YAW]; //FRONT_L
#endif
#ifdef Y6
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 + axisPID[YAW]; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //RIGHT
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //LEFT
motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 - axisPID[YAW]; //UNDER_REAR
motor[4] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_RIGHT
motor[5] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_LEFT
#endif
#ifdef HEX6
motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_R
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_R
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_L
motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_L
motor[4] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH] + axisPID[YAW]; //FRONT
motor[5] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH] - axisPID[YAW]; //REAR
#endif
}
Code: Alles auswählen
if (armed ) {
#if defined(BI)
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH]; //FRONT
#elif defined(TRI)
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 ; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 ; //RIGHT
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 ; //LEFT
#elif defined(QUADP) || defined(heuteMalPlus)
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH] - axisPID[YAW]; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] + axisPID[YAW]; //RIGHT
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] + axisPID[YAW]; //LEFT
motor[3] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH] - axisPID[YAW]; //FRONT
#elif defined(QUADX) && !defined(heuteMalPlus)
motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] + axisPID[PITCH] - axisPID[YAW]; //REAR_R
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH] + axisPID[YAW]; //FRONT_R
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] + axisPID[PITCH] + axisPID[YAW]; //REAR_L
motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH] - axisPID[YAW]; //FRONT_L
#elif defined(Y6)
motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 + axisPID[YAW]; //REAR
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //RIGHT
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //LEFT
motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 - axisPID[YAW]; //UNDER_REAR
motor[4] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_RIGHT
motor[5] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_LEFT
#elif defined(HEX6)
motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_R
motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_R
motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_L
motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_L
motor[4] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH] + axisPID[YAW]; //FRONT
motor[5] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH] - axisPID[YAW]; //REAR
#endif
}
Nenene ,ChristophB hat geschrieben: Nur du steuerst um 45 Grad versetzt. Ich glaube aber dann schmeißt du den öfter in den Dreck da sich das Gehirn immer an der falschen Ausrichtung orientiert.
aso - na aber das muß man doch auch rausrechnen können ? - halt immer "plus 45 Grad" ... oder du baust ne drehbare Elektronikplatine.Mataschke hat geschrieben:es geht mir ja lediglich um das mechanische Problem
Code: Alles auswählen
roll = rcHysteresis[ROLL] - 1500;
pitch = rcHysteresis[PITCH] - 1500;
rcHysteresis[ROLL] = cos(alpha) * roll + sin(alpha) * pitch + 1500;
rcHysteresis[PITCH] = -sin(alpha) * roll + cos(alpha) * pitch + 1500;
Code: Alles auswählen
#elif defined(QUADX)
motor[0] = 1500 + rcCommand[THROTTLE] - 0.707 * (axisPID[ROLL] + axisPID[PITCH]) - axisPID[YAW]; //REAR_R
motor[1] = 1500 + rcCommand[THROTTLE] - 0.707 * (axisPID[ROLL] - axisPID[PITCH]) + axisPID[YAW]; //FRONT_R
motor[2] = 1500 + rcCommand[THROTTLE] + 0.707 * (axisPID[ROLL] + axisPID[PITCH]) + axisPID[YAW]; //REAR_L
motor[3] = 1500 + rcCommand[THROTTLE] + 0.707 * (axisPID[ROLL] - axisPID[PITCH]) - axisPID[YAW]; //FRONT_L
Jou Batmanyacco hat geschrieben:Seid ihr noch bei mir?
Code: Alles auswählen
#elif defined(keineSorgen)
Strick + Aufhängen = Sorgenfrei; //einfachste Problemlösung