syouichi imamori
/
MulticopterQuadX
Quad X Type Multicopter
Revision 7:16bf0085d914, committed 2015-04-28
- Comitter:
- komaida424
- Date:
- Tue Apr 28 01:48:21 2015 +0000
- Parent:
- 6:a50e6d3924f1
- Child:
- 8:1db19b529b22
- Commit message:
- rev.3.11 bug fix
Changed in this revision
--- a/I2cPeripherals/I2cPeripherals.cpp Tue Feb 24 09:28:29 2015 +0000 +++ b/I2cPeripherals/I2cPeripherals.cpp Tue Apr 28 01:48:21 2015 +0000 @@ -37,7 +37,7 @@ _i2c.write(LCD_addr,tx,2); tx[1] = 0x5C | ((contrast >> 4) & 0x03); _i2c.write(LCD_addr,tx,2); - tx[1] = 0x6A; + tx[1] = 0x6C; _i2c.write(LCD_addr,tx,2); wait(0.3); tx[1] = 0x0C;
--- a/config.h Tue Feb 24 09:28:29 2015 +0000 +++ b/config.h Tue Apr 28 01:48:21 2015 +0000 @@ -3,7 +3,7 @@ //#define SERIAL_LCD //#define SOFT_PWM -//#define LPCXpresso +#define LPCXpresso //#define LocalFileOut #define TX_TYPE 0 // 0:FM 1:IR @@ -33,6 +33,7 @@ #define _L3GD20 0x01 #define TICK_TIME 0.05 #define GYRO_ADJUST 2 +#define THR_MIDRANGE 80 enum PlaneType{Quad_X=0,Quad_VP,Quad_3D,Delta,Delta_TW,AirPlane}; enum JR{_THR=0,_AIL,_ELE,_RUD,_GYRO,_AUX1,_AUX2,_AUX3,_AUX4}; //JR 信号の順番 @@ -77,7 +78,7 @@ float Thro_Limit_Rate; public: config() { - Revision = 3.10; + Revision = 3.11; Struct_Size = sizeof(config); Stick_Ref[0] = 1500; Stick_Ref[1] = 1500;
--- a/main.cpp Tue Feb 24 09:28:29 2015 +0000 +++ b/main.cpp Tue Apr 28 01:48:21 2015 +0000 @@ -533,7 +533,7 @@ void PWM_Out(bool mode) { int reg[3]; - int i; + int i,j,k; float gain; // float cur_height; @@ -563,9 +563,17 @@ M5 = THR + conf.Throttl_Trim; break; case Quad_3D: - i = (int)throLimit.calc((float)THR); - if ( abs(i-conf.Reverse_Point) > 100 ) i = THR; - M1 = M2 = M3 = M4 = i + conf.Throttl_Trim; + j = THR + conf.Throttl_Trim; + if ( Stick[GAIN] < 0 ) { + k = THR - conf.Reverse_Point; + if ( abs(k) < THR_MIDRANGE ) { + if ( k > 0 ) j = conf.Reverse_Point + THR_MIDRANGE; + else j = conf.Reverse_Point - THR_MIDRANGE; + } + } +// i = (int)throLimit.calc((float)THR); + // if ( abs(i-conf.Reverse_Point) > 100 ) i = THR; + M1 = M2 = M3 = M4 = j; break; case Delta: case Delta_TW: @@ -655,32 +663,28 @@ M4 -= reg[YAW]; break; } - int h = conf.Model_Type; - for ( int i=0; i<6; i++ ) { + j = conf.Model_Type; + for ( i=0; i<6; i++ ) { if ( M[i] > Pulse_Max ) M[i] = Pulse_Max; if ( M[i] < Pulse_Min ) M[i] = Pulse_Min; - if ( Servo_idx[h][i] == 1 ) + if ( Servo_idx[j][i] == 1 ) { M[i] = conf.Stick_Ref[i] + ( ( M[i] - conf.Stick_Ref[i] ) * conf.Servo_Dir[i] ); } else { - if ( h == Quad_3D ) { + if ( j == Quad_3D ) { if ( Stick[GAIN] > 0 ) { if ( THR < conf.Reverse_Point ) M[i] = conf.Reverse_Point; } - else { - if ( abs(THR - conf.Reverse_Point ) < 10 ) - M[i] = conf.Reverse_Point; - } } else { - // if ( Stick[COL] < Thro_Zero ) M[i] = conf.Stick_Ref[COL]; + if ( Stick[COL] < Thro_Zero ) M[i] = conf.Stick_Ref[COL]; } } } if ( mode ) { - h = conf.Stick_Ref[THR]; +// h = conf.Stick_Ref[THR]; for ( i=0;i<6;i++ ) { // while ( !pwmpin[i] ); if ( conf.PWM_Mode == 1 )