Advertisement
Guest User

config.h

a guest
Apr 23rd, 2013
616
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 74.29 KB | None | 0 0
  1. /*************************************************************************************************/
  2. /**** CONFIGURABLE PARAMETERS ****/
  3. /*************************************************************************************************/
  4.  
  5. /* this file consists of several sections
  6. * to create a working combination you must at least make your choices in section 1.
  7. * 1 - BASIC SETUP - you must select an option in every block.
  8. * this assumes you have 4 channels connected to your board with standard ESCs and servos.
  9. * 2 - COPTER TYPE SPECIFIC OPTIONS - you likely want to check for options for your copter type
  10. * 3 - RC SYSTEM SETUP
  11. * 4 - ALTERNATE CPUs & BOARDS - if you have
  12. * 5 - ALTERNATE SETUP - select alternate RX (SBUS, PPM, etc.), alternate ESC-range, etc. here
  13. * 6 - OPTIONAL FEATURES - enable nice to have features here (FlightModes, LCD, telemetry, battery monitor etc.)
  14. * 7 - TUNING & DEVELOPER - if you know what you are doing; you have been warned
  15. */
  16.  
  17. /* Notes:
  18. * 1. parameters marked with (*) in the comment are stored in eeprom and can be tweaked via serial monitor or LCD.
  19. * Changing those values in config.h and upload will require a 'Reset' from the GUI to take effect
  20. */
  21.  
  22.  
  23. /*************************************************************************************************/
  24. /***************** ***************/
  25. /**************** SECTION 1 - BASIC SETUP *******/
  26. /***************** ***************/
  27. /*************************************************************************************************/
  28.  
  29. /************************** The type of multicopter ****************************/
  30. //#define GIMBAL
  31. //#define BI
  32. //#define TRI
  33. //#define QUADP
  34. #define QUADX
  35. //#define Y4
  36. //#define Y6
  37. //#define HEX6
  38. //#define HEX6X
  39. //#define HEX6H // New Model
  40. //#define OCTOX8
  41. //#define OCTOFLATP
  42. //#define OCTOFLATX
  43. //#define FLYING_WING
  44. //#define VTAIL4
  45. //#define AIRPLANE
  46. //#define SINGLECOPTER
  47. //#define DUALCOPTER
  48. //#define HELI_120_CCPM
  49. //#define HELI_90_DEG
  50.  
  51. /**************************** Motor minthrottle *******************************/
  52. /* Set the minimum throttle command sent to the ESC (Electronic Speed Controller)
  53. This is the minimum value that allow motors to run at a idle speed */
  54. //#define MINTHROTTLE 1300 // for Turnigy Plush ESCs 10A
  55. //#define MINTHROTTLE 1120 // for Super Simple ESCs 10A
  56. #define MINTHROTTLE 1064 // special ESC (simonk)
  57. //#define MINTHROTTLE 1050 // for brushed ESCs like ladybird
  58. //#define MINTHROTTLE 1150 // (*)
  59.  
  60. /**************************** Motor maxthrottle *******************************/
  61. /* this is the maximum value for the ESCs at full power, this value can be increased up to 2000 */
  62. #define MAXTHROTTLE 2000
  63.  
  64. /**************************** Mincommand *******************************/
  65. /* this is the value for the ESCs when they are not armed
  66. in some cases, this value must be lowered down to 900 for some specific ESCs, otherwise they failed to initiate */
  67. #define MINCOMMAND 1000
  68.  
  69. /********************************** I2C speed ************************************/
  70. //#define I2C_SPEED 100000L //100kHz normal mode, this value must be used for a genuine WMP
  71. #define I2C_SPEED 400000L //400kHz fast mode, it works only with some WMP clones
  72.  
  73. /*************************** Internal i2c Pullups ********************************/
  74. /* enable internal I2C pull ups (in most cases it is better to use external pullups) */
  75. //#define INTERNAL_I2C_PULLUPS
  76.  
  77. /**************************************************************************************/
  78. /***************** boards and sensor definitions ******************/
  79. /**************************************************************************************/
  80.  
  81. /*************************** Combined IMU Boards ********************************/
  82. /* if you use a specific sensor board:
  83. please submit any correction to this list.
  84. Note from Alex: I only own some boards, for other boards, I'm not sure, the info was gathered via rc forums, be cautious */
  85. //#define FFIMUv1 // first 9DOF+baro board from Jussi, with HMC5843 <- confirmed by Alex
  86. //#define FFIMUv2 // second version of 9DOF+baro board from Jussi, with HMC5883 <- confirmed by Alex
  87. //#define FREEIMUv1 // v0.1 & v0.2 & v0.3 version of 9DOF board from Fabio
  88. //#define FREEIMUv03 // FreeIMU v0.3 and v0.3.1
  89. //#define FREEIMUv035 // FreeIMU v0.3.5 no baro
  90. //#define FREEIMUv035_MS // FreeIMU v0.3.5_MS <- confirmed by Alex
  91. //#define FREEIMUv035_BMP // FreeIMU v0.3.5_BMP
  92. //#define FREEIMUv04 // FreeIMU v0.4 with MPU6050, HMC5883L, MS561101BA <- confirmed by Alex
  93. //#define FREEIMUv043 // same as FREEIMUv04 with final MPU6050 (with the right ACC scale)
  94. //#define NANOWII // the smallest multiwii FC based on MPU6050 + pro micro based proc <- confirmed by Alex
  95. //#define PIPO // 9DOF board from erazz
  96. //#define QUADRINO // full FC board 9DOF+baro board from witespy with BMP085 baro <- confirmed by Alex
  97. //#define QUADRINO_ZOOM // full FC board 9DOF+baro board from witespy second edition
  98. //#define QUADRINO_ZOOM_MS// full FC board 9DOF+baro board from witespy second edition <- confirmed by Alex
  99. //#define ALLINONE // full FC board or standalone 9DOF+baro board from CSG_EU
  100. //#define AEROQUADSHIELDv2
  101. //#define ATAVRSBIN1 // Atmel 9DOF (Contribution by EOSBandi). requires 3.3V power.
  102. //#define SIRIUS // Sirius Navigator IMU <- confirmed by Alex
  103. //#define SIRIUSGPS // Sirius Navigator IMU using external MAG on GPS board <- confirmed by Alex
  104. //#define SIRIUS600 // Sirius Navigator IMU using the WMP for the gyro
  105. //#define SIRIUS_AIR // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com
  106. //#define SIRIUS_AIR_GPS // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com with GPS/MAG remote located
  107. //#define MINIWII // Jussi's MiniWii Flight Controller <- confirmed by Alex
  108. //#define MICROWII // MicroWii 10DOF with ATmega32u4, MPU6050, HMC5883L, MS561101BA from http://flyduino.net/
  109. //#define CITRUSv2_1 // CITRUS from qcrc.ca
  110. //#define CHERRY6DOFv1_0
  111. //#define DROTEK_10DOF // Drotek 10DOF with ITG3200, BMA180, HMC5883, BMP085, w or w/o LLC
  112. //#define DROTEK_10DOF_MS // Drotek 10DOF with ITG3200, BMA180, HMC5883, MS5611, LLC
  113. //#define DROTEK_6DOFv2 // Drotek 6DOF v2
  114. //#define DROTEK_6DOF_MPU // Drotek 6DOF with MPU6050
  115. //#define DROTEK_10DOF_MPU//
  116. //#define MONGOOSE1_0 // mongoose 1.0 http://store.ckdevices.com/
  117. //#define CRIUS_LITE // Crius MultiWii Lite
  118. //#define CRIUS_SE // Crius MultiWii SE
  119. //#define OPENLRSv2MULTI // OpenLRS v2 Multi Rc Receiver board including ITG3205 and ADXL345
  120. //#define BOARD_PROTO_1 // with MPU6050 + HMC5883L + MS baro
  121. //#define BOARD_PROTO_2 // with MPU6050 + slave MAG3110 + MS baro
  122. //#define GY_80 // Chinese 10 DOF with L3G4200D ADXL345 HMC5883L BMP085, LLC
  123. //#define GY_85 // Chinese 9 DOF with ITG3205 ADXL345 HMC5883L LLC
  124. //#define GY_86 // Chinese 10 DOF with MPU6050 HMC5883L MS5611, LLC
  125. //#define GY_521 // Chinese 6 DOF with MPU6050, LLC
  126. //#define INNOVWORKS_10DOF // with ITG3200, BMA180, HMC5883, BMP085 available here http://www.diymulticopter.com
  127. //#define INNOVWORKS_6DOF // with ITG3200, BMA180 available here http://www.diymulticopter.com
  128. //#define MultiWiiMega // MEGA + MPU6050+HMC5883L+MS5611 available here http://www.diymulticopter.com
  129. //#define PROTO_DIY // 10DOF mega board
  130. //#define IOI_MINI_MULTIWII// www.bambucopter.com
  131. //#define Bobs_6DOF_V1 // BobsQuads 6DOF V1 with ITG3200 & BMA180
  132. //#define Bobs_9DOF_V1 // BobsQuads 9DOF V1 with ITG3200, BMA180 & HMC5883L
  133. //#define Bobs_10DOF_BMP_V1 // BobsQuads 10DOF V1 with ITG3200, BMA180, HMC5883L & BMP180 - BMP180 is software compatible with BMP085
  134. //#define FLYDUINO_MPU
  135. #define CRIUS_AIO_PRO_V1
  136. //#define DESQUARED6DOFV2GO // DEsquared V2 with ITG3200 only
  137. //#define DESQUARED6DOFV4 // DEsquared V4 with MPU6050
  138. //#define LADYBIRD
  139. //#define MEGAWAP_V2_STD // available here: http://www.multircshop.com <- confirmed by Alex
  140. //#define MEGAWAP_V2_ADV
  141. //#define HK_MultiWii_SE_V2 // Hobbyking board with MPU6050 + HMC5883L + BMP085
  142. //#define HK_MultiWii_328P // Also labeled "Hobbybro" on the back. ITG3205 + BMA180 + BMP085 + NMC5583L + DSM2 Connector (Spektrum Satellite)
  143. //#define RCNet_FC // RCNet FC with MPU6050 and MS561101BA http://www.rcnet.com
  144. //#define RCNet_FC_GPS // RCNet FC with MPU6050 + MS561101BA + HMC5883L + UBLOX GPS http://www.rcnet.com
  145. //#define FLYDU_ULTRA // MEGA+10DOF+MT3339 FC
  146.  
  147.  
  148. /*************************** independent sensors ********************************/
  149. /* leave it commented if you already checked a specific board above */
  150. /* I2C gyroscope */
  151. //#define WMP
  152. //#define ITG3200
  153. //#define L3G4200D
  154. //#define MPU6050 //combo + ACC
  155.  
  156. /* I2C accelerometer */
  157. //#define NUNCHUCK // if you want to use the nunckuk connected to a WMP
  158. //#define MMA7455
  159. //#define ADXL345
  160. //#define BMA020
  161. //#define BMA180
  162. //#define NUNCHACK // if you want to use the nunckuk as a standalone I2C ACC without WMP
  163. //#define LIS3LV02
  164. //#define LSM303DLx_ACC
  165. //#define MMA8451Q
  166.  
  167. /* I2C barometer */
  168. //#define BMP085
  169. //#define MS561101BA
  170.  
  171. /* I2C magnetometer */
  172. //#define HMC5843
  173. //#define HMC5883
  174. //#define AK8975
  175. //#define MAG3110
  176.  
  177. /* Sonar */ // for visualization purpose currently - no control code behind
  178. //#define SRF02 // use the Devantech SRF i2c sensors
  179. //#define SRF08
  180. //#define SRF10
  181. //#define SRF23
  182.  
  183. /* ADC accelerometer */ // for 5DOF from sparkfun, uses analog PIN A1/A2/A3
  184. //#define ADCACC
  185.  
  186. /* enforce your individual sensor orientation - even overrides board specific defaults */
  187. //#define FORCE_ACC_ORIENTATION(X, Y, Z) {imu.accADC[ROLL] = Y; imu.accADC[PITCH] = -X; imu.accADC[YAW] = Z;}
  188. //#define FORCE_GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] = -Y; imu.gyroADC[PITCH] = X; imu.gyroADC[YAW] = Z;}
  189. //#define FORCE_MAG_ORIENTATION(X, Y, Z) {imu.magADC[ROLL] = X; imu.magADC[PITCH] = Y; imu.magADC[YAW] = Z;}
  190.  
  191. /* Board orientation shift */
  192. /* If you have frame designed only for + mode and you cannot rotate FC phisycally for flying in X mode (or vice versa)
  193. * you can use one of of this options for virtual sensors rotation by 45 deegres, then set type of multicopter according to flight mode.
  194. * Check motors order and directions of motors rotation for matching with new front point! Uncomment only one option! */
  195. //#define SENSORS_TILT_45DEG_RIGHT // rotate the FRONT 45 degres clockwise
  196. //#define SENSORS_TILT_45DEG_LEFT // rotate the FRONT 45 degres counterclockwise
  197.  
  198.  
  199. /*************************************************************************************************/
  200. /***************** ***************/
  201. /**************** SECTION 2 - COPTER TYPE SPECIFIC OPTIONS *******/
  202. /***************** ***************/
  203. /*************************************************************************************************/
  204.  
  205. /******************************** TRI *********************************/
  206. #define YAW_DIRECTION 1
  207. //#define YAW_DIRECTION -1 // if you want to reverse the yaw correction direction
  208. /* you can change the tricopter servo travel here */
  209. #define TRI_YAW_CONSTRAINT_MIN 1020
  210. #define TRI_YAW_CONSTRAINT_MAX 2000
  211. #define TRI_YAW_MIDDLE 1500 // (*) tail servo center pos. - use this for initial trim; later trim midpoint via LCD
  212.  
  213. /******************************** BI *********************************/
  214. /* you can change the bicopter servo travel direction here */
  215. //#define BI_PITCH_DIRECTION 1
  216. #define BI_PITCH_DIRECTION -1
  217.  
  218. /******************************** ARM/DISARM *********************************/
  219. /* optionally disable stick combinations to arm/disarm the motors.
  220. * In most cases one of the two options to arm/disarm via TX stick is sufficient */
  221. #define ALLOW_ARM_DISARM_VIA_TX_YAW
  222. //#define ALLOW_ARM_DISARM_VIA_TX_ROLL
  223.  
  224. /*********************** Cam Stabilisation ***********************/
  225. /* The following lines apply only for a pitch/roll tilt stabilization system. Uncomment the first or second line to activate it */
  226. //#define SERVO_MIX_TILT
  227. //#define SERVO_TILT
  228. #define TILT_PITCH_MIN 1110 //servo travel min, don't set it below 1020
  229. #define TILT_PITCH_MAX 1820 //servo travel max, max value=2000
  230. #define TILT_PITCH_MIDDLE 1400 //servo neutral value
  231. #define TILT_PITCH_PROP 16 //servo proportional (tied to angle) ; can be negative to invert movement
  232. //#define TILT_PITCH_AUX_CH AUX3 //AUX channel to overwrite CAM pitch (AUX1-AUX4), comment to disable manual input and free the AUX channel
  233. #define TILT_ROLL_MIN 1060
  234. #define TILT_ROLL_MAX 1870
  235. #define TILT_ROLL_MIDDLE 1460
  236. #define TILT_ROLL_PROP -17
  237. //#define TILT_ROLL_AUX_CH AUX4 //AUX channel to overwrite CAM Roll (AUX1-AUX4), comment to disable manual input and free the AUX channel
  238.  
  239. /* camera trigger function : activated via Rc Options in the GUI, servo output=A2 on promini */
  240. //#define CAMTRIG
  241. #define CAM_SERVO_HIGH 2000 // the position of HIGH state servo
  242. #define CAM_SERVO_LOW 1020 // the position of LOW state servo
  243. #define CAM_TIME_HIGH 1000 // the duration of HIGH state servo expressed in ms
  244. #define CAM_TIME_LOW 1000 // the duration of LOW state servo expressed in ms
  245.  
  246. /*********************** Cam Stabilisation by NHADRIAN ***********************/
  247. /* Modified cam stabilization, where I use parameters to pre-compensate the servo speed and inertia, regarding to angular velocity and angular acceleration.
  248. Basically code sends greater PWM values when fast movements for servos to force them to move fast enough. Works with analog and digital servos as well */
  249.  
  250. //#define SERVO_TILT_NHADRIAN
  251.  
  252. /* Parameters for Cam Stabilization by NHADRIAN */
  253.  
  254. #define TILT_PITCH_I -18 // parameter for servo speed compensation (regarding to angular velocity)
  255. #define TILT_ROLL_I -18 // parameter for servo speed compensation (regarding to angular velocity)
  256. #define TILT_PITCH_D 1 // deadband size parameter near zero - for really small movements
  257. #define TILT_ROLL_D 1 // deadband size parameter near zero - for really small movements
  258. #define TILT_PITCH_P -5 // parameter for servo inertia compensation (regarding to angular acceleration)
  259. #define TILT_ROLL_P -5 // parameter for servo inertia compensation (regarding to angular acceleration)
  260.  
  261. /*********************** PITCH/ROLL mix to servos for FPV by NHADRIAN ***********************/
  262. /* PITCH/ROLL mix to servos
  263. This function allows to mix PITCH/ROLL stick movements to the camera stabilization, to help orientation when flying in FPV...
  264. Use together with SERVO_TIT_NHADRIAN */
  265.  
  266. #define PITCH_TO_TILT 5 // ratio between pitch-stick movement and camera movement - use negative value to change direction
  267. //#define ROLL_TO_TILT 5 // ratio between roll-stick movement and camera movement - use negative value to change direction
  268.  
  269. /*********************** Flying Wing ***********************/
  270. /* you can change change servo orientation and servo min/max values here
  271. valid for all flight modes, even passThrough mode
  272. need to setup servo directions here; no need to swap servos amongst channels at rx */
  273. #define PITCH_DIRECTION_L 1 // left servo - pitch orientation
  274. #define PITCH_DIRECTION_R -1 // right servo - pitch orientation (opposite sign to PITCH_DIRECTION_L, if servos are mounted in mirrored orientation)
  275. #define ROLL_DIRECTION_L 1 // left servo - roll orientation
  276. #define ROLL_DIRECTION_R 1 // right servo - roll orientation (same sign as ROLL_DIRECTION_L, if servos are mounted in mirrored orientation)
  277. #define WING_LEFT_MID 1500 // (*) left servo center pos. - use this for initial trim; later trim midpoint via LCD
  278. #define WING_RIGHT_MID 1500 // (*) right servo center pos. - use this for initial trim; later trim midpoint via LCD
  279. #define WING_LEFT_MIN 1020 // limit servo travel range must be inside [1020;2000]
  280. #define WING_LEFT_MAX 2000 // limit servo travel range must be inside [1020;2000]
  281. #define WING_RIGHT_MIN 1020 // limit servo travel range must be inside [1020;2000]
  282. #define WING_RIGHT_MAX 2000 // limit servo travel range must be inside [1020;2000]
  283.  
  284. /*********************** Airplane ***********************/
  285. //#define USE_THROTTLESERVO // For use of standard 50Hz servo on throttle.
  286. #define SERVO_RATES {100, 100, 100, 100, 100, 100, 100, 100} // Rates in 0-100%
  287. #define SERVO_DIRECTION { -1, 1, 1, -1, 1, 1, 1, 1 } // Invert servos by setting -1
  288.  
  289. //#define FLAPPERONS AUX4 // Mix Flaps with Aileroins.
  290. #define FLAPPERON_EP { 1500, 1700 } // Endpooints for flaps on a 2 way switch else set {1020,2000} and program in radio.
  291. //#define FLAPPERON_EP { 1200, 1500 } // Or Flapperons up for CrowMix
  292. #define FLAPPERON_INVERT { 1, -1 } // Change direction om flapperons { Wing1, Wing2 }
  293.  
  294. //#define FLAPS AUX4 // Traditional Flaps on A2 invert with SERVO_DIRECTION servo[2).
  295. #define FLAP_EP { 1500, 1900 } // Endpooints for flaps on a 2 way switch else set {1020,2000} and program in radio.
  296.  
  297. //#define FLAPSPEED 3 // Make flaps move slowm Higher value is Higher Speed.
  298.  
  299. /*********************** Common for Heli & Airplane ***********************/
  300. //#define D12_POWER // Use D12 on PROMINI to power sensors. Will disable servo[4] on D12
  301. #define SERVO_OFFSET { 0, 0, 0, 0, 0, 0, 0, 0 } // (*) Adjust Servo MID Offset & Swash angles
  302. // Selectable channels:= ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4
  303.  
  304. /* Governor: attempts to maintain rpm through pitch and voltage changes
  305. * predictive approach: observe input signals and voltage and guess appropriate corrections.
  306. * (the throttle curve must leave room for the governor, so 0-50-75-80-80 is ok, 0-50-95-100-100 is _not_ ok.
  307. * Can be toggled via aux switch.
  308. */
  309. //#define GOVERNOR_P 7 // (*) proportional factor. Higher value -> higher throttle increase. Must be >=1; 0 = turn off
  310. //#define GOVERNOR_D 4 // (*) decay timing. Higher value -> takes longer to return throttle to normal. Must be >=1;
  311. //#define GOVERNOR_R 10 // (*) voltage impact correction scale in 0.1 units. Higher value -> more compensation for voltage drops. normal is value 10 <=> 1.0; 0 is off
  312.  
  313. /*********************** Heli ***********************/
  314. /* Channel to control CollectivePitch */
  315. #define COLLECTIVE_PITCH THROTTLE
  316. /* Set Maximum available movement for the servos. Depending on model */
  317. #define SERVO_ENDPOINT_HIGH {2000,2000,2000,2000,2000,2000,2000,2000};
  318. #define SERVO_ENDPOINT_LOW {1020,1020,1020,1020,1020,1020,1020,1020};
  319.  
  320. /* Limit the range of Collective Pitch. 100% is Full Range each way and position for Zero Pitch */
  321. #define COLLECTIVE_RANGE { 80, 0, 80 }// {Min%, ZeroPitch offset from 1500, Max%}.
  322. #define YAW_CENTER 1500 // Use servo[5] SERVO_ENDPOINT_HIGH/LOW for the endpoits.
  323. #define YAWMOTOR 0 // If a motor is used as YAW Set to 1 else set to 0.
  324.  
  325. /* Servo mixing for heli 120 Use 1/10 fractions (ex.5 = 5/10 = 1/2)
  326. {Coll,Nick,Roll} */
  327. #define SERVO_NICK { +10, -10, -0 }
  328. #define SERVO_LEFT { +10, +5, +10 }
  329. #define SERVO_RIGHT { +10, +5, -10 }
  330.  
  331. /* Servo mixing for heli 90
  332. {Coll,Nick,Roll} */
  333. #define SERVO_DIRECTIONS { +1, -1, -1 } // -1 will invert servo
  334.  
  335. /* Limit Maximum controll for Roll & Nick in 0-100% */
  336. #define CONTROL_RANGE { 100, 100 } // { ROLL,PITCH }
  337.  
  338. /* use servo code to drive the throttle output. You want this for analog servo driving the throttle on IC engines.
  339. if inactive, throttle output will be treated as a motor output, so it can drive an ESC */
  340. //#define HELI_USE_SERVO_FOR_THROTTLE
  341.  
  342. /*********************** Single and DualCopter Settings ***********************/
  343. /* Change to -1 to reverse servomovement per axis
  344. Servosettings for SingleCopter */
  345. #define SINGLECOPTRER_YAW {1, 1, 1, 1} // Left, Right,Front,Rear
  346. #define SINGLECOPTRER_SERVO {1,-1, 1,-1} // Pitch,Pitch,Roll, Roll
  347.  
  348. /* Servosettings for DualCopter */
  349. #define DUALCOPTER_SERVO {1,1} //Pitch,Roll
  350. /* Use SERVO_OFFSET and SERVO_RATES in Heli and Airplane section for centering and endpoints */
  351.  
  352. /*********************** your individual mixing ***********************/
  353. /* if you want to override an existing entry in the mixing table, you may want to avoid esditing the
  354. * mixTable() function for every version again and again.
  355. * howto: http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_Mixing
  356. */
  357. //#define MY_PRIVATE_MIXING "filename.h"
  358. //#define LEAVE_HEADROOM_FOR_MOTORS 4 // leave room for gyro corrrections only for first 4 motors
  359.  
  360. /*************************************************************************************************/
  361. /***************** ***************/
  362. /**************** SECTION 3 - RC SYSTEM SETUP *******/
  363. /***************** ***************/
  364. /*************************************************************************************************/
  365.  
  366. /* note: no need to uncomment something in this section if you use a standard receiver */
  367.  
  368. /**************************************************************************************/
  369. /******** special receiver types ********************/
  370. /**************************************************************************************/
  371.  
  372. /**************************** PPM Sum Reciver ***********************************/
  373. /* The following lines apply only for specific receiver with only one PPM sum signal, on digital PIN 2
  374. Select the right line depending on your radio brand. Feel free to modify the order in your PPM order is different */
  375. //#define SERIAL_SUM_PPM PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Graupner/Spektrum
  376. //#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Robe/Hitec/Futaba
  377. //#define SERIAL_SUM_PPM ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Multiplex
  378. //#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For some Hitec/Sanwa/Others
  379. #define SERIAL_SUM_PPM THROTTLE,PITCH,ROLL,YAW,AUX1,AUX2,AUX3,AUX4 //For turnigy with frsky mod
  380.  
  381. // Uncommenting following line allow to connect PPM_SUM receiver to standard THROTTLE PIN on MEGA boards (eg. A8 in CRIUS AIO)
  382. #define PPM_ON_THROTTLE
  383.  
  384. /********************** Spektrum Satellite Reciver *******************************/
  385. /* The following lines apply only for Spektrum Satellite Receiver
  386. Spektrum Satellites are 3V devices. DO NOT connect to 5V!
  387. For MEGA boards, attach sat grey wire to RX1, pin 19. Sat black wire to ground. Sat orange wire to Mega board's 3.3V (or any other 3V to 3.3V source).
  388. For PROMINI, attach sat grey to RX0. Attach sat black to ground. */
  389. //#define SPEKTRUM 1024
  390. //#define SPEKTRUM 2048
  391. //#define SPEK_SERIAL_PORT 1 // Forced to 0 on Pro Mini and single serial boards; Set to your choice of 0, 1, or 2 on any Mega based board (defaults to 1 on Mega).
  392. //**************************
  393. // Defines that allow a "Bind" of a Spektrum or Compatible Remote Receiver (aka Satellite) via Configuration GUI.
  394. // Bind mode will be same as declared above, if your TX is capable.
  395. // Ground, Power, and Signal must come from three adjacent pins.
  396. // By default, these are Ground=4, Power=5, Signal=6. These pins are in a row on most MultiWii shield boards. Pins can be overriden below.
  397. // Normally use 3.3V regulator is needed on the power pin!! If your satellite hangs during bind (blinks, but won't complete bind with a solid light), go direct 5V on all pins.
  398. //**************************
  399. // For Pro Mini, the connector for the Satellite that resides on the FTDI can be unplugged and moved to these three adjacent pins.
  400. //#define SPEK_BIND //Un-Comment for Spektrum Satellie Bind Support. Code is ~420 bytes smaller without it.
  401. //#define SPEK_BIND_GROUND 4
  402. //#define SPEK_BIND_POWER 5
  403. //#define SPEK_BIND_DATA 6
  404.  
  405. /******************************* SBUS RECIVER ************************************/
  406. /* The following line apply only for Futaba S-Bus Receiver on MEGA boards at RX1 only (Serial 1).
  407. You have to invert the S-Bus-Serial Signal e.g. with a Hex-Inverter like IC SN74 LS 04 */
  408. //#define SBUS
  409.  
  410. /******************* RC signal from the serial port via Multiwii Serial Protocol *********/
  411. //#define RCSERIAL
  412.  
  413.  
  414.  
  415.  
  416. /*************************************************************************************************/
  417. /***************** ***************/
  418. /**************** SECTION 4 - ALTERNATE CPUs & BOARDS *******/
  419. /***************** ***************/
  420. /*************************************************************************************************/
  421.  
  422. /**************************************************************************************/
  423. /******** Promini Specifig Settings ********************/
  424. /**************************************************************************************/
  425.  
  426. /************************** Hexa Motor 5 & 6 Pins *******************************/
  427. /* PIN A0 and A1 instead of PIN D5 & D6 for 6 motors config and promini config
  428. This mod allow the use of a standard receiver on a pro mini
  429. (no need to use a PPM sum receiver) */
  430. //#define A0_A1_PIN_HEX
  431.  
  432. /********************************* Aux 2 Pin ***********************************/
  433. /* possibility to use PIN8 or PIN12 as the AUX2 RC input (only one, not both)
  434. it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8) */
  435. //#define RCAUXPIN8
  436. //#define RCAUXPIN12
  437.  
  438.  
  439. /**************************************************************************************/
  440. /***************** Teensy 2.0 Support ******************/
  441. /**************************************************************************************/
  442. /* uncomment this if you use a teensy 2.0 with teensyduino
  443. it needs to run at 16MHz */
  444. //#define TEENSY20
  445.  
  446.  
  447. /**************************************************************************************/
  448. /******** Settings for ProMicro, Leonardo and other Atmega32u4 Boards ***********/
  449. /**************************************************************************************/
  450.  
  451. /********************************* pin Layout **********************************/
  452. /* activate this for a better pinlayout if all pins can be used => not possible on ProMicro */
  453. //#define A32U4ALLPINS
  454.  
  455. /********************************** PWM Setup **********************************/
  456. /* activate all 6 hardware PWM outputs Motor 5 = D11 and 6 = D13.
  457. note: not possible on the sparkfun promicro (pin 11 & 13 are not broken out there)
  458. if activated:
  459. Motor 1-6 = 10-bit hardware PWM
  460. Motor 7-8 = 8-bit Software PWM
  461. Servos = 8-bit Software PWM
  462. if deactivated:
  463. Motor 1-4 = 10-bit hardware PWM
  464. Motor 5-8 = 10-bit Software PWM
  465. Servos = 10-bit Software PWM */
  466. //#define HWPWM6
  467.  
  468. /********************************** Aux 2 Pin **********************************/
  469. /* AUX2 pin on pin RXO */
  470. //#define RCAUX2PINRXO
  471.  
  472. /* aux2 pin on pin D17 (RXLED) */
  473. //#define RCAUX2PIND17
  474.  
  475. /********************************** Buzzer Pin **********************************/
  476. /* this moves the Buzzer pin from TXO to D8 for use with ppm sum or spectrum sat. RX (not needed if A32U4ALLPINS is active) */
  477. //#define D8BUZZER
  478.  
  479. /*********************** Promicro version related ****************************/
  480. /* Inverted status LED for Promicro ver 10 */
  481. //#define PROMICRO10
  482.  
  483.  
  484. /**************************************************************************************/
  485. /******** override default pin assignments ********************/
  486. /**************************************************************************************/
  487.  
  488. /* only enable any of this if you must change the default pin assignment, e.g. your board does not have a specific pin */
  489. /* you may need to change PINx and PORTx plus #shift according to the desired pin! */
  490. //#define OVERRIDE_V_BATPIN A0 // instead of A3 // Analog PIN 3
  491.  
  492. //#define OVERRIDE_LEDPIN_PINMODE pinMode (A1, OUTPUT); // use A1 instead of d13
  493. //#define OVERRIDE_LEDPIN_TOGGLE PINC |= 1<<1; // PINB |= 1<<5; //switch LEDPIN state (digital PIN 13)
  494. //#define OVERRIDE_LEDPIN_OFF PORTC &= ~(1<<1); // PORTB &= ~(1<<5);
  495. //#define OVERRIDE_LEDPIN_ON PORTC |= 1<<1; // was PORTB |= (1<<5);
  496.  
  497. //#define OVERRIDE_BUZZERPIN_PINMODE pinMode (A2, OUTPUT); // use A2 instead of d8
  498. //#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2 //PORTB |= 1;
  499. //#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2); //PORTB &= ~1;
  500.  
  501. /*************************************************************************************************/
  502. /***************** ***************/
  503. /**************** SECTION 5 - ALTERNATE SETUP *******/
  504. /***************** ***************/
  505. /*************************************************************************************************/
  506.  
  507. /****** Serial com speed *********************************/
  508. /* This is the speed of the serial interfaces */
  509. #define SERIAL0_COM_SPEED 115200
  510. #define SERIAL1_COM_SPEED 115200
  511. #define SERIAL2_COM_SPEED 115200
  512. #define SERIAL3_COM_SPEED 115200
  513.  
  514. /* interleaving delay in micro seconds between 2 readings WMP/NK in a WMP+NK config
  515. if the ACC calibration time is very long (20 or 30s), try to increase this delay up to 4000
  516. it is relevent only for a conf with NK */
  517. #define INTERLEAVING_DELAY 3000
  518.  
  519. /* when there is an error on I2C bus, we neutralize the values during a short time. expressed in microseconds
  520. it is relevent only for a conf with at least a WMP */
  521. #define NEUTRALIZE_DELAY 100000
  522.  
  523.  
  524. /**************************************************************************************/
  525. /******** Gyro filters ********************/
  526. /**************************************************************************************/
  527.  
  528. /********************* Lowpass filter for some gyros ****************************/
  529. /* ITG3200 & ITG3205 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try
  530. to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting.
  531. It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and
  532. balancing options ran out. Uncomment only one option!
  533. IMPORTANT! Change low pass filter setting changes PID behaviour, so retune your PID's after changing LPF.*/
  534. //#define ITG3200_LPF_256HZ // This is the default setting, no need to uncomment, just for reference
  535. //#define ITG3200_LPF_188HZ
  536. //#define ITG3200_LPF_98HZ
  537. //#define ITG3200_LPF_42HZ
  538. //#define ITG3200_LPF_20HZ
  539. //#define ITG3200_LPF_10HZ // Use this only in extreme cases, rather change motors and/or props
  540.  
  541. /* MPU6050 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try
  542. to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting.
  543. It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and
  544. balancing options ran out. Uncomment only one option!
  545. IMPORTANT! Change low pass filter setting changes PID behaviour, so retune your PID's after changing LPF.*/
  546. //#define MPU6050_LPF_256HZ // This is the default setting, no need to uncomment, just for reference
  547. //#define MPU6050_LPF_188HZ
  548. //#define MPU6050_LPF_98HZ
  549. #define MPU6050_LPF_42HZ
  550. //#define MPU6050_LPF_20HZ
  551. //#define MPU6050_LPF_10HZ
  552. //#define MPU6050_LPF_5HZ // Use this only in extreme cases, rather change motors and/or props
  553.  
  554. /****** Gyro smoothing **********************************/
  555. /* GYRO_SMOOTHING. In case you cannot reduce vibrations _and_ _after_ you have tried the low pass filter options, you
  556. may try this gyro smoothing via averaging. Not suitable for multicopters!
  557. Good results for helicopter, airplanes and flying wings (foamies) with lots of vibrations.*/
  558. //#define GYRO_SMOOTHING {20, 20, 3} // (*) separate averaging ranges for roll, pitch, yaw
  559.  
  560. /************************ Moving Average Gyros **********************************/
  561. //#define MMGYRO 10 // (*) Active Moving Average Function for Gyros
  562. //#define MMGYROVECTORLENGTH 15 // Length of Moving Average Vector (maximum value for tunable MMGYRO
  563. /* Moving Average ServoGimbal Signal Output */
  564. //#define MMSERVOGIMBAL // Active Output Moving Average Function for Servos Gimbal
  565. //#define MMSERVOGIMBALVECTORLENGHT 32 // Lenght of Moving Average Vector
  566.  
  567. /************************ Analog Reads **********************************/
  568. /* if you want faster analog Reads, enable this. It may result in less accurate results, especially for more than one analog channel */
  569. //#define FASTER_ANALOG_READS
  570.  
  571. /*************************************************************************************************/
  572. /***************** ***************/
  573. /**************** SECTION 6 - OPTIONAL FEATURES *******/
  574. /***************** ***************/
  575. /*************************************************************************************************/
  576.  
  577. /************************ Angele throttle correction ********************/
  578. /* Automatically increase throttle based on the angle of the copter
  579. Original idea by Kraut Rob, first implementation HAdrian */
  580.  
  581. //#define THROTTLE_ANGLE_CORRECTION 40
  582.  
  583. /************************* Advanced Headfree Mode ********************/
  584. /* In Advanced Headfree mode when the copter is farther than ADV_HEADFREE_RANGE meters then
  585. the bearing between home and copter position will become the control direction
  586. IF copter come closer than ADV_HEADFREE_RANGE meters, then the control direction freezed to the
  587. bearing between home and copter at the point where it crosses the ADV_HEADFREE_RANGE meter distance
  588. first implementation by HAdrian, mods by EOSBandi
  589. */
  590.  
  591. //#define ADVANCED_HEADFREE //Advanced headfree mode is enabled when this is uncommented
  592. //#define ADV_HEADFREE_RANGE 15 //Range where advanced headfree mode activated
  593.  
  594.  
  595. /************************ continuous gyro calibration ********************/
  596. /* Gyrocalibration will be repeated if copter is moving during calibration. */
  597. #define GYROCALIBRATIONFAILSAFE
  598.  
  599. /************************ AP FlightMode **********************************/
  600. /* Temporarily Disables GPS_HOLD_MODE to be able to make it possible to adjust the Hold-position when moving the sticks.*/
  601. #define AP_MODE 20 // Create a deadspan for GPS.
  602.  
  603. /************************ Assisted AcroTrainer ************************************/
  604. /* Train Acro with auto recovery. Value set the point where ANGLE_MODE takes over.
  605. Remember to activate ANGLE_MODE first!...
  606. A Value on 200 will give a very distinct transfer */
  607. //#define ACROTRAINER_MODE 200 // http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944#p17437
  608.  
  609.  
  610. /******** Failsafe settings ********************/
  611. /* Failsafe check pulses on four main control channels CH1-CH4. If the pulse is missing or bellow 985us (on any of these four channels)
  612. the failsafe procedure is initiated. After FAILSAFE_DELAY time from failsafe detection, the level mode is on (if ACC or nunchuk is avaliable),
  613. PITCH, ROLL and YAW is centered and THROTTLE is set to FAILSAFE_THR0TTLE value. You must set this value to descending about 1m/s or so
  614. for best results. This value is depended from your configuration, AUW and some other params. Next, afrer FAILSAFE_OFF_DELAY the copter is disarmed,
  615. and motors is stopped. If RC pulse coming back before reached FAILSAFE_OFF_DELAY time, after the small quard time the RC control is returned to normal. */
  616. //#define FAILSAFE // uncomment to activate the failsafe function
  617. #define FAILSAFE_DELAY 5 // Guard time for failsafe activation after signal lost. 1 step = 0.1sec - 1sec in example
  618. #define FAILSAFE_OFF_DELAY 1000 // Time for Landing before motors stop in 0.1sec. 1 step = 0.1sec - 20sec in example
  619. #define FAILSAFE_THROTTLE (MINTHROTTLE + 200) // (*) Throttle level used for landing - may be relative to MINTHROTTLE - as in this case
  620.  
  621. /***************** Failsafe descending to the ground by BARO *********************************/
  622. /* For vario-controlled descending instead of having a fix throttle value, uncomment FAILSAFE_ALT_MODE. This allows to descend with preset vario.
  623. When flying on high altitudes, and would like to descend faster than apply FAILSAFE_SAFE_ALT and FAILSAFE_FAST_VARIO.
  624. This case will let copter descend faster from high altitude till reach the safety altitude, after will slow down to slow vario.
  625. If you have GPS and would like to have RTH activated when in failsafe, uncomment FAILSAFE_RTH_MODE. Please note that in this case FAILSAFE_ALT_MODE doesn't have to be uncommented,
  626. if GPS signal is weak, failsafe will work in FAILSAFE_ALT_MODE.
  627. Both with work only with FAILSAFE uncommented! Also Please note that both modes will work even if SUPPRESS_BARO_ALTHOLD is uncommented, so you can still save some space with better failsafe alt handling!
  628.  
  629. Please note that FAILSAE_OFF_DELAY is still active for security reasons, so set up long time enough to be able to RTH before this timer ends because motors will stop!!!*/
  630.  
  631. //#define FAILSAFE_ALT_MODE // uncomment for descending with constant vario if in Failsafe - use with FAILSAFE and define the FAILSAFE_SLOW_VARIO
  632. #define FAILSAFE_SLOW_VARIO 50 // in cm/s - slow desceding speed under SAFETY_ALT, this is default is SAFETY_ALT is not used. - maximum 250!!!
  633. #define FAILSAFE_FAST_VARIO 100 // in cm/s - fast desceding speed over SAFETY_ALT, maximum 250!!!
  634. #define FAILSAFE_SAFETY_ALT 100 // in cm - safety altitude, where to slow down descending before landing, in cm!!!
  635.  
  636. //#define FAILSAFE_RTH_MODE // if GPS present and ready, copter starts RTH when signal lost. When signal is back, control is back again.
  637. #define FAILSAFE_RTH_VARIO 100 // in cm/s - vario for RTH function for failsafe, maximum 250!!!
  638. #define FAILSAFE_RTH_ALT 1000 // in cm - minimum RTH altitude for failsafe. If copter is higher than this, it will keep altitude.
  639. #define FAILSAFE_RTH_HOME 400 // in cm - home altitude for RTH, copter will descend to this altitude and wait.
  640. #define FAILSAFE_RTH_DELAY 15 // in s - safety delay, after reaching HOME altitude, it'll land in FAILSAFE_ALT_MODE when safety delay terminates.
  641.  
  642. #define FAILSAFE_DETECT_TRESHOLD 985 //Failsafe threshold (in us)
  643.  
  644. /***************** DFRobot LED RING *********************************/
  645. /* I2C DFRobot LED RING communication */
  646. //#define LED_RING
  647.  
  648. /******************************** LED FLASHER ***********************************/
  649. //#define LED_FLASHER
  650. //#define LED_FLASHER_DDR DDRC
  651. //#define LED_FLASHER_PORT PORTC
  652. //#define LED_FLASHER_BIT PORTC4
  653. //#define LED_FLASHER_INVERT
  654. //#define LED_FLASHER_SEQUENCE 0b00000000 // leds OFF
  655. //#define LED_FLASHER_SEQUENCE_ARMED 0b11111111 // pattern when ARMED
  656. //#define LED_FLASHER_SEQUENCE_MAX 0b11111111 // full illumination
  657. //#define LED_FLASHER_SEQUENCE_LOW 0b00000000 // no illumination
  658. //#define LED_FLASHER_SEQUENCE_VBAT_WARN1 0b11111110 // VBAT alarm LED sequence - USE together with LED_FLASHER_SEQUENCE
  659. //#define LED_FLASHER_SEQUENCE_VBAT_WARN2 0b11111010 // VBAT alarm LED sequence - USE together with LED_FLASHER_SEQUENCE
  660. //#define LED_FLASHER_SEQUENCE_FAILSAFE 0b01010101 // Failsafe LED sequence - USE together with LED_FLASHER_SEQUENCE
  661.  
  662.  
  663. /******************************* Landing lights *********************************/
  664. /* Landing lights
  665. Use an output pin to control landing lights.
  666. They can be switched automatically when used in conjunction
  667. with altitude data from a sonar unit. */
  668. //#define LANDING_LIGHTS_DDR DDRC
  669. //#define LANDING_LIGHTS_PORT PORTC
  670. //#define LANDING_LIGHTS_BIT PORTC0
  671. //#define LANDING_LIGHTS_INVERT
  672.  
  673. /* altitude above ground (in cm) as reported by sonar */
  674. //#define LANDING_LIGHTS_AUTO_ALTITUDE 50
  675.  
  676. /* adopt the flasher pattern for landing light LEDs */
  677. //#define LANDING_LIGHTS_ADOPT_LED_FLASHER_PATTERN
  678.  
  679. /************************* INFLIGHT ACC Calibration *****************************/
  680. /* This will activate the ACC-Inflight calibration if unchecked */
  681. //#define INFLIGHT_ACC_CALIBRATION
  682.  
  683. /************************** Disable WMP power pin *******************************/
  684. /* disable use of the POWER PIN
  685. (allready done if the option RCAUXPIN12 is selected) */
  686. //#define DISABLE_POWER_PIN
  687.  
  688. /******************************* OSD Switch *************************************/
  689. // This adds a box that can be interpreted by OSD in activation status (to switch on/off the overlay for instance)
  690. //#define OSD_SWITCH
  691.  
  692. /**************************************************************************************/
  693. /*********************** TX-related **************************/
  694. /**************************************************************************************/
  695.  
  696. /* introduce a deadband around the stick center
  697. Must be greater than zero, comment if you dont want a deadband on roll, pitch and yaw */
  698. #define DEADBAND 6
  699.  
  700.  
  701.  
  702. /**************************************************************************************/
  703. /*********************** GPS **************************/
  704. /**************************************************************************************/
  705.  
  706. /* GPS using a SERIAL port
  707. if enabled, define here the Arduino Serial port number and the UART speed
  708. note: only the RX PIN is used in case of NMEA mode, the GPS is not configured by multiwii
  709. in NMEA mode the GPS must be configured to output GGA and RMC NMEA sentences (which is generally the default conf for most GPS devices)
  710. at least 5Hz update rate. uncomment the first line to select the GPS serial port of the arduino */
  711. #define GPS_SERIAL 2 // should be 2 for flyduino v2. It's the serial port number on arduino MEGA
  712. //#define GPS_BAUD 57600
  713. #define GPS_BAUD 115200
  714.  
  715.  
  716. /* GPS protocol
  717. NMEA - Standard NMEA protocol GGA, GSA and RMC sentences are needed
  718. UBLOX - U-Blox binary protocol, use the ublox config file (u-blox-config.ublox.txt) from the source tree
  719. MTK_BINARY16 and MTK_BINARY19 - MTK3329 chipset based GPS with DIYDrones binary firmware (v1.6 or v1.9)
  720. With UBLOX and MTK_BINARY you don't have to use GPS_FILTERING in multiwii code !!! */
  721.  
  722.  
  723. //#define NMEA
  724. #define UBLOX
  725. //#define MTK_BINARY16
  726. //#define MTK_BINARY19
  727. //#define INIT_MTK_GPS // initialize MTK GPS for using selected speed, 5Hz update rate and GGA & RMC sentence or binary settings
  728.  
  729. //#define GPS_PROMINI_SERIAL 57600 // Will Autosense if GPS is connected when ardu boots
  730.  
  731. /* I2C GPS device made with an independant arduino + GPS device
  732. including some navigation functions
  733. contribution from EOSBandi http://code.google.com/p/i2c-gps-nav/
  734. You have to use at least I2CGpsNav code r33 */
  735. //#define I2C_GPS
  736.  
  737. /* I2C GPS device made with an indeedent ATTiny[24]313 + GPS device and
  738. optional sonar device. https://github.com/wertarbyte/tiny-gps/ */
  739. /* get GPS data from Tiny-GPS */
  740. //#define TINY_GPS
  741. /* get sonar data from Tiny-GPS */
  742. //#define TINY_GPS_SONAR
  743.  
  744. /* GPS data readed from Misio-OSD - GPS module connected to OSD, and MultiWii read GPS data from OSD - tested and working OK ! */
  745. //#define GPS_FROM_OSD
  746.  
  747. /* indicate a valid GPS fix with at least 5 satellites by flashing the LED - Modified by MIS - Using stable LED (YELLOW on CRIUS AIO) led work as sat number indicator
  748. - No GPS FIX -> LED blink at speed of incoming GPS frames
  749. - Fix and sat no. bellow 5 -> LED off
  750. - Fix and sat no. >= 5 -> LED blinks, one blink for 5 sat, two blinks for 6 sat, three for 7 ... */
  751. #define GPS_LED_INDICATOR
  752.  
  753. #define USE_MSP_WP //Enables the MSP_WP command, which is used by WinGUI to display and log Home and Poshold positions
  754.  
  755. //#define DONT_RESET_HOME_AT_ARM // HOME position is reset at every arm, uncomment it to prohibit it (you can set home position with GyroCalibration)
  756.  
  757. /* GPS navigation can control the heading */
  758.  
  759. #define NAV_CONTROLS_HEADING true // copter faces toward the navigation point, maghold must be enabled for it
  760. #define NAV_TAIL_FIRST true // true - copter comes in with tail first
  761. #define NAV_SET_TAKEOFF_HEADING true // true - when copter arrives to home position it rotates it's head to takeoff direction
  762.  
  763.  
  764. /* Get your magnetic decliniation from here : http://magnetic-declination.com/
  765. Convert the degree+minutes into decimal degree by ==> degree+minutes*(1/60)
  766. Note the sign on declination it could be negative or positive (WEST or EAST) */
  767. //#define MAG_DECLINIATION 3.96f //For Budapest Hungary.
  768. #define MAG_DECLINIATION 4.43f
  769.  
  770. #define GPS_LEAD_FILTER // Adds a forward predictive filterig to compensate gps lag. Code based on Jason Short's lead filter implementation
  771.  
  772. //#define GPS_FILTERING // add a 5 element moving average filter to GPS coordinates, helps eliminate gps noise but adds latency comment out to disable
  773. #define GPS_WP_RADIUS 200 // if we are within this distance to a waypoint then we consider it reached (distance is in cm)
  774. #define NAV_SLEW_RATE 30 // Adds a rate control to nav output, will smoothen out nav angle spikes
  775.  
  776. #define WP_NUMBER 2 //set up the number of WP-s used and stored
  777.  
  778. /**************************************************************************************/
  779. /*********************** LCD/OLED - display settings *********************/
  780. /**************************************************************************************/
  781.  
  782. /* http://www.multiwii.com/wiki/index.php?title=Extra_features#LCD_.2F_OLED */
  783.  
  784. /***************************** The type of LCD **********************************/
  785. /* choice of LCD attached for configuration and telemetry, see notes below */
  786. //#define LCD_DUMMY // No Physical LCD attached. With this & LCD_CONF defined, TX sticks still work to set gains, by watching LED blink.
  787. //#define LCD_SERIAL3W // Alex' initial variant with 3 wires, using rx-pin for transmission @9600 baud fixed
  788. //#define LCD_TEXTSTAR // SERIAL LCD: Cat's Whisker LCD_TEXTSTAR Module CW-LCD-02 (Which has 4 input keys for selecting menus)
  789. //#define LCD_VT100 // SERIAL LCD: vt100 compatible terminal emulation (blueterm, putty, etc.)
  790. //#define LCD_TTY // SERIAL LCD: useful to tweak parameters over cable with arduino IDE 'serial monitor'
  791. //#define LCD_ETPP // I2C LCD: Eagle Tree Power Panel LCD, which is i2c (not serial)
  792. //#define LCD_LCD03 // I2C LCD: LCD03, which is i2c
  793. //#define OLED_I2C_128x64 // I2C LCD: OLED http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
  794.  
  795. /****************************** Display settings ***********************************/
  796. //#define LCD_SERIAL_PORT 0 // must be 0 on Pro Mini and single serial boards; Set to your choice on any Mega based board
  797.  
  798. //#define SUPPRESS_OLED_I2C_128x64LOGO // suppress display of OLED logo to save memory
  799.  
  800. /* double font height for better readability. Reduces visible #lines by half.
  801. * The lower part of each page is accessible under the name of shifted keyboard letter :
  802. * 1 - ! , 2 - @ , 3 - # , 4 - $ , 5 - % , 6 - ^ , 7 - & , 8 - * , 9 - (
  803. * You must add both to your lcd.telemetry.* sequences
  804. */
  805. //#define DISPLAY_FONT_DSIZE //currently only aplicable for OLED_I2C_128x64
  806.  
  807. /* style of display - AUTODETECTED via LCD_ setting - only activate to override defaults */
  808. //#define DISPLAY_2LINES
  809. //#define DISPLAY_MULTILINE
  810. //#define MULTILINE_PRE 2 // multiline configMenu # pref lines
  811. //#define MULTILINE_POST 6 // multiline configMenu # post lines
  812. /******************************** Navigation ***********************************/
  813. /* keys to navigate the LCD menu */
  814. #define LCD_MENU_PREV 'p'
  815. #define LCD_MENU_NEXT 'n'
  816. #define LCD_VALUE_UP 'u'
  817. #define LCD_VALUE_DOWN 'd'
  818.  
  819. #define LCD_MENU_SAVE_EXIT 's'
  820. #define LCD_MENU_ABORT 'x'
  821.  
  822. /**************************************************************************************/
  823. /*********************** LCD configuration menu **************************/
  824. /**************************************************************************************/
  825.  
  826. /* uncomment this line if you plan to use a LCD or OLED for tweaking parameters
  827. * http://www.multiwii.com/wiki/index.php?title=Extra_features#Configuration_Menu */
  828. //#define LCD_CONF
  829.  
  830. /* to include setting the aux switches for AUX1 -> AUX4 via LCD */
  831. //#define LCD_CONF_AUX
  832.  
  833. /* optional exclude some functionality - uncomment to suppress some unwanted telemetry pages */
  834. //#define SUPPRESS_LCD_CONF_AUX34
  835.  
  836. /**************************************************************************************/
  837. /*********************** LCD telemetry **************************/
  838. /**************************************************************************************/
  839.  
  840. /* to monitor system values (battery level, loop time etc. with LCD
  841. * http://www.multiwii.com/wiki/index.php?title=LCD_Telemetry */
  842.  
  843. /******************************** Activation ***********************************/
  844. //#define LCD_TELEMETRY
  845.  
  846. /* to enable automatic hopping between a choice of telemetry pages uncomment this. */
  847. //#define LCD_TELEMETRY_AUTO "123452679" // pages 1 to 9 in ascending order
  848. //#define LCD_TELEMETRY_AUTO "212232425262729" // strong emphasis on page 2
  849.  
  850. /* manual stepping sequence; first page of the sequence gets loaded at startup to allow non-interactive display */
  851. //#define LCD_TELEMETRY_STEP "0123456789" // should contain a 0 to allow switching off.
  852.  
  853. /* optional exclude some functionality - uncomment to suppress some unwanted telemetry pages */
  854. //#define SUPPRESS_TELEMETRY_PAGE_1
  855. //#define SUPPRESS_TELEMETRY_PAGE_2
  856. //#define SUPPRESS_TELEMETRY_PAGE_3
  857. //#define SUPPRESS_TELEMETRY_PAGE_4
  858. //#define SUPPRESS_TELEMETRY_PAGE_5
  859. //#define SUPPRESS_TELEMETRY_PAGE_6
  860. //#define SUPPRESS_TELEMETRY_PAGE_7
  861. //#define SUPPRESS_TELEMETRY_PAGE_8
  862. //#define SUPPRESS_TELEMETRY_PAGE_9
  863.  
  864. /********************************************************************/
  865. /**** RSSI ****/
  866. /********************************************************************/
  867. //#define RX_RSSI
  868. //#define RX_RSSI_PIN A3
  869.  
  870. /********************************************************************/
  871. /**** Buzzer ****/
  872. /********************************************************************/
  873. #define BUZZER
  874. //#define RCOPTIONSBEEP // uncomment this if you want the buzzer to beep at any rcOptions change on channel Aux1 to Aux4
  875. //#define ARMEDTIMEWARNING 330 // (*) Trigger an alarm after a certain time of being armed [s] to save you lipo (if your TX does not have a countdown)
  876. #define PILOTLAMP //Uncomment if you are using a X-Arcraft Pilot Lamp
  877.  
  878. /********************************************************************/
  879. /**** battery voltage monitoring ****/
  880. /********************************************************************/
  881. /* for V BAT monitoring
  882. after the resistor divisor we should get [0V;5V]->[0;1023] on analog V_BATPIN
  883. with R1=33k and R2=51k
  884. vbat = [0;1023]*16/VBATSCALE
  885. must be associated with #define BUZZER ! */
  886. //#define VBAT // uncomment this line to activate the vbat code
  887. #define VBATSCALE 129 // (*) change this value if readed Battery voltage is different than real voltage
  888. #define VBATNOMINAL 126 // 12,6V full battery nominal voltage - only used for lcd.telemetry
  889. #define VBATLEVEL_WARN1 104 // (*) 10,7V
  890. #define VBATLEVEL_WARN2 100 // (*) 9.9V
  891. #define VBATLEVEL_CRIT 96 // (*) 9.3V - critical condition: if vbat ever goes below this value, permanent alarm is triggered
  892. #define NO_VBAT 16 // (*) Avoid beeping without any battery
  893.  
  894.  
  895. /********************************************************************/
  896. /**** powermeter (battery capacity monitoring) ****/
  897. /********************************************************************/
  898.  
  899. /* enable monitoring of the power consumption from battery (think of mAh)
  900. allows to set alarm value in GUI or via LCD
  901. Full description and howto here http://www.multiwii.com/wiki/index.php?title=Powermeter
  902. Two options:
  903. 1 - hard: - (uses hardware sensor, after configuration gives very good results)
  904. 2 - soft: - (good results +-5% for plush and mystery ESCs @ 2S and 3S, not good with SuperSimple ESC) */
  905. //#define POWERMETER_SOFT
  906. //#define POWERMETER_HARD
  907. /* PLEVELSCALE is the step size you can use to set alarm */
  908. #define PLEVELSCALE 50 // if you change this value for other granularity, you must search for comments in code to change accordingly
  909. /* larger PLEVELDIV will get you smaller value for power (mAh equivalent) */
  910. //#define PLEVELDIV 5000 // (*) default for soft - if you lower PLEVELDIV, beware of overrun in uint32 pMeter
  911. #define PLEVELDIV 36000 // fixed value for hard - do not tune
  912. //#define PLEVELDIVSOFT PLEVELDIV // for soft always equal to PLEVELDIV
  913. #define PLEVELDIVSOFT 5000 // for hard fixed to 5000
  914. #define PSENSORNULL 0 // (*) set to analogRead() value for zero current; for I=0A my sensor gives 1/2 Vss; that is approx 2.49Volt;
  915. #define PINT2mA 50 // (*) one integer step on arduino analog translates to mA (example 4.9 / 37 * 1000
  916.  
  917.  
  918. /********************************************************************/
  919. /**** altitude hold ****/
  920. /********************************************************************/
  921.  
  922. /* uncomment to disable the altitude hold feature.
  923. * This is useful if all of the following apply
  924. * + you have a baro
  925. * + want altitude readout
  926. * + do not use altitude hold feature
  927. * + want to save memory space
  928. */
  929. //#define SUPPRESS_BARO_ALTHOLD
  930.  
  931. /*****************************/
  932. /* ALT HOLD code by NHADRIAN */
  933. /*****************************/
  934.  
  935. /* Experimental altitude hold code. It uses "vario mode" which means reising/descending vario relates to the throttle stick position.
  936. When RTH_ALT_MODE is uncommented, in RTH mode copter rises to defined altitude, and when reaches the target, descends back to defined home altitude.
  937. By deffault, copter descends back to RTH altitude, if is higher. When RTH_KEEP_ALT is uncommented,
  938. it means copter will keep altitude if higher than RTH_ALT. Only descends when reached home.
  939. Please note that these modes can be used separated! (So for example, when only RTH_MODE is uncommented, it will return as described previously but for BARO mode
  940. natural alt change will be used.
  941. For working RTH_ALT_MODE Baro should be enabled with switch!
  942. If none of them are uncommented, natural alt change will be used for rapid pilots. It's temporary switch OFF the althold when throttle stick is
  943. out of deadband defined with ALT_HOLD_THROTTLE_NEUTRAL_ZONE
  944.  
  945. /********** user tunable parameters ************/
  946.  
  947. #define VARIO_ALT_MODE // define ALT HOLD code
  948. //#define VARIO_MODE_CHANGE_BEEP // beep if changing between rising/descending - long beep when entering hoover mode, short beep when changing between rising/descending
  949. #define ALT_VARIO_MAX 200 // in cm/s - maximum rising/descending vario when full throttle applied - maximum 250!!!
  950. #define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 50 // in us - deadband of stick around hovering point when in ALT HOLD is active (us in PWM signal)
  951. #define ALT_HOLD_THROTTLE_MIDPOINT 1500 // in us - if uncommented, this value is used in ALT_HOLD for throttle stick middle point instead of initialThrottleHold parameter.
  952.  
  953. //#define RTH_ALT_MODE // define RTH custom approach height
  954. #define RTH_KEEP_ALT // if the altitude is higher than the RTH_ALT, copter maintains that altitude instead of descending to target - according to Dramida's request
  955. #define RTH_VARIO 100 // in cm/s - vario used for reaching target altitudes during RTH - maximum 250!!!
  956. #define RTH_ALT 1000 // in cm - altitude during approach
  957. #define HOME_ALT 400 // in cm - altitude after reaching home position
  958.  
  959. //#define WP_ALT_MODE // define WP mode - approach WP altitude with WP vario - USE WITH EZ-GUI and RTH_ALT_MODE
  960. #define WP_VARIO 100 // in cm/s - vario used for reaching WP altitude - maximum 250!!!
  961.  
  962. #define ALT_SAFETY_DEADBAND 150 // deadband for RTH mode and WP mode. In emergency situations control can be get back with throttle stick
  963.  
  964.  
  965. /********************************************************************/
  966. /**** autoland function ****/
  967. /********************************************************************/
  968.  
  969. /* This feature enables AUTOLAND BOXITEM.
  970. * Use together with RTH_ALT_MODE!
  971. * Works with valid GPS data only!
  972. * when AUTOLAND is active, RTH mode will be activated, so copter first move to home WP, then starts to descend
  973. * over SAFETY_ALT vario is the defined FAST_VARIO, under the SLOW_VARIO. This is for slowing down copter before land
  974. * the trigger for disarm is the BaroPID value. When copter can't descend anymore (touched the ground),
  975. the RPM will slow down until it reaches low BaroPID enough for DISARM.
  976. * Please note that for security reasons, SAFETY DEADBAND is applied, it throttle stick is out of deadband the automatic altitude control will be disabled
  977. */
  978.  
  979. //#define AUTOLAND
  980.  
  981. #define AUTOLAND_FAST_VARIO 100 // vario over safety alt (cm/s)
  982. #define AUTOLAND_SLOW_VARIO 25 // vario under safety alt (cm/s)
  983. #define AUTOLAND_SAFETY_ALT 400 // safety altitude (cm)
  984. #define AUTOLAND_SAFETY_DEADBAND 100 // deadband for AUTOLAND mode. See in description.
  985.  
  986. /********************************************************************/
  987. /**** altitude variometer ****/
  988. /********************************************************************/
  989.  
  990. /* enable to get audio feedback upon rising/falling copter/plane.
  991. * Requires a working baro.
  992. * For now, Output gets sent to an enabled vt100 terminal program over the serial line.
  993. * choice of two methods (enable either one or both)
  994. * method 1 : use short term movement from baro ( bigger code size)
  995. * method 2 : use long term observation of altitude from baro (smaller code size)
  996. */
  997. //#define VARIOMETER 12 // possible values: 12 = methods 1 & 2 ; 1 = method 1 ; 2 = method 2
  998. //#define SUPPRESS_VARIOMETER_UP // if no signaling for up movement is desired
  999. //#define SUPPRESS_VARIOMETER_DOWN // if no signaling for down movement is desired
  1000. //#define VARIOMETER_SINGLE_TONE // use only one tone (BEL); neccessary for non-patched vt100 terminals
  1001.  
  1002. /********************************************************************/
  1003. /**** baord naming ****/
  1004. /********************************************************************/
  1005.  
  1006. /*
  1007. * this name is displayed together with the MultiWii version number
  1008. * upon powerup on the LCD.
  1009. * If you are without a DISPLAYD then You may enable LCD_TTY and
  1010. * use arduino IDE's serial monitor to view the info.
  1011. *
  1012. * You must preserve the format of this string!
  1013. * It must be 16 characters total,
  1014. * The last 4 characters will be overwritten with the version number.
  1015. */
  1016. #define BOARD_NAME "MultiWii V-.--"
  1017. // 123456789.123456
  1018.  
  1019. /************* Support multiple configuration profiles in EEPROM ************/
  1020. //#define MULTIPLE_CONFIGURATION_PROFILES
  1021.  
  1022. /*************************************************************************************************/
  1023. /***************** ***************/
  1024. /**************** SECTION 7 - TUNING & DEVELOPER **************/
  1025. /***************** ***************/
  1026. /*************************************************************************************************/
  1027.  
  1028. /************ Experimental: force a stable, fixated (high) cycle time **********/
  1029. /* when activated, the displayed cycle time in GUI will not be correct.
  1030. * Tunable via LCD config menu.
  1031. * value of 0 turns the feature off.
  1032. */
  1033. //#define CYCLETIME_FIXATED 9000 // (*)
  1034.  
  1035. /**************************************************************************************/
  1036. /******** special ESC with extended range [0-2000] microseconds ********************/
  1037. /**************************************************************************************/
  1038. //#define EXT_MOTOR_RANGE
  1039.  
  1040. /**************************************************************************************/
  1041. /*********************** motor, servo and other presets ***********************/
  1042. /**************************************************************************************/
  1043. /* motors will not spin when the throttle command is in low position
  1044. this is an alternative method to stop immediately the motors */
  1045. //#define MOTOR_STOP
  1046.  
  1047. /* some radios have not a neutral point centered on 1500. can be changed here */
  1048. #define MIDRC 1500
  1049.  
  1050. /*********************** Servo Refreshrates ***********************/
  1051. /* Default 50Hz Servo refresh rate*/
  1052. #define SERVO_RFR_50HZ
  1053.  
  1054. /* up to 160Hz servo refreshrate .. works with the most analog servos*/
  1055. //#define SERVO_RFR_160HZ
  1056.  
  1057. /* up to 300Hz refreshrate it is as fast as possible (100-300Hz depending on the cound of used servos and the servos state).
  1058. for use with digital servos
  1059. dont use it with analog servos! thay may get damage. (some will work but be careful) */
  1060. //#define SERVO_RFR_300HZ
  1061.  
  1062. /*********************** HW PWM Servos ***********************/
  1063. /* HW PWM Servo outputs for Arduino Mega.. moves:
  1064. Pitch = pin 44
  1065. Roll = pin 45
  1066. CamTrig = pin 46
  1067. SERVO4 = pin 11 (assigned to PPM or SPECTRUM CH9 on copter configuration)
  1068. SERVO5 = pin 12 (assigned to PPM or SPECTRUM CH10 on copter configuration)
  1069. this option disable other software PWM's for servos - only five hardware controlled servos avaliable
  1070. */
  1071. //#define MEGA_HW_PWM_SERVOS
  1072.  
  1073. /********************************************************************/
  1074. /**** Memory savings ****/
  1075. /********************************************************************/
  1076.  
  1077. /* options to counter the general shortage of memory, like with leonardo m32u4 and others */
  1078.  
  1079. /**** suppress handling of serial commands.***
  1080. * This does _not_ affect handling of RXserial, Spektrum or GPS. Those will not be affected and still work the same.
  1081. * Enable either one or both of the following options */
  1082.  
  1083. /* Remove handling of all commands of the New MultiWii Serial Protocol.
  1084. * This will disable use of the GUI, winGUI, android apps and any other program that makes use of the MSP.
  1085. * You must find another way (like LCD_CONF) to tune the parameters or live with the defaults.
  1086. * If you run a LCD/OLED via i2c or serial/Bluetooth, this is safe to use */
  1087. //#define SUPPRESS_ALL_SERIAL_MSP // saves approx 2700 bytes
  1088.  
  1089. /* Remove handling of other serial commands.
  1090. * This includes navigating via serial the lcd.configuration menu, lcd.telemetry and permanent.log .
  1091. * Navigating via stick inputs on tx is not affected and will work the same. */
  1092. //#define SUPPRESS_OTHER_SERIAL_COMMANDS // saves approx 0 to 100 bytes, depending on features enabled
  1093.  
  1094. /**** suppress keeping the defaults for initial setup and reset in the code.
  1095. * This requires a manual initial setup of the PIDs etc. or load and write from defaults.mwi;
  1096. * reset in GUI will not work on PIDs
  1097. */
  1098. //#define SUPPRESS_DEFAULTS_FROM_GUI
  1099.  
  1100. /********************************************************************/
  1101. /**** diagnostics ****/
  1102. /********************************************************************/
  1103.  
  1104. /* to log values like max loop time and others to come
  1105. logging values are visible via LCD config
  1106. set to 1, enable 'R' option to reset values, max current, max altitude
  1107. set to 2, adds min/max cycleTimes
  1108. set to 3, adds additional powerconsumption on a per motor basis (this uses the big array and is a memory hog, if POWERMETER <> PM_SOFT) */
  1109. //#define LOG_VALUES 1
  1110.  
  1111. /* Permanent logging to eeprom - survives (most) upgrades and parameter resets.
  1112. * used to track number of flights etc. over lifetime of controller board.
  1113. * Writes to end of eeprom - should not conflict with stored parameters yet.
  1114. * Logged values: accumulated lifetime, #powercycle/reset/initialize events, #arm events, #disarm events, last armedTime,
  1115. * #failsafe@disarm, #i2c_errs@disarm
  1116. * To activate set to size of eeprom for your mcu: promini 328p: 1023 ; 2560: 4095.
  1117. * Enable one or more options to show the log
  1118. */
  1119. //#define LOG_PERMANENT 1023
  1120. //#define LOG_PERMANENT_SHOW_AT_STARTUP // enable to display log at startup
  1121. //#define LOG_PERMANENT_SHOW_AT_L // enable to display log when receiving 'L'
  1122. //#define LOG_PERMANENT_SHOW_AFTER_CONFIG // enable to display log after exiting LCD config menu
  1123. //#define LOG_PERMANENT_SERVICE_LIFETIME 36000 // in seconds; service alert at startup after 10 hours of armed time
  1124.  
  1125. /* to add debugging code
  1126. not needed and not recommended for normal operation
  1127. will add extra code that may slow down the main loop or make copter non-flyable */
  1128. //#define DEBUG
  1129.  
  1130. /* Use this to trigger LCD configuration without a TX - only for debugging - do NOT fly with this activated */
  1131. //#define LCD_CONF_DEBUG
  1132.  
  1133. /* Use this to trigger telemetry without a TX - only for debugging - do NOT fly with this activated */
  1134. //#define LCD_TELEMETRY_DEBUG //This form rolls between all screens, LCD_TELEMETRY_AUTO must also be defined.
  1135. //#define LCD_TELEMETRY_DEBUG 6 //This form stays on the screen specified.
  1136.  
  1137. /* Enable string transmissions from copter to GUI */
  1138. //#define DEBUGMSG
  1139.  
  1140.  
  1141. /********************************************************************/
  1142. /**** ESCs calibration ****/
  1143. /********************************************************************/
  1144.  
  1145. /* to calibrate all ESCs connected to MWii at the same time (useful to avoid unplugging/re-plugging each ESC)
  1146. Warning: this creates a special version of MultiWii Code
  1147. You cannot fly with this special version. It is only to be used for calibrating ESCs
  1148. Read How To at http://code.google.com/p/multiwii/wiki/ESCsCalibration */
  1149. //#define ESC_CALIB_LOW MINCOMMAND
  1150. //#define ESC_CALIB_HIGH 2000
  1151. //#define ESC_CALIB_CANNOT_FLY // uncomment to activate
  1152.  
  1153. /**** internal frequencies ****/
  1154. /* frequenies for rare cyclic actions in the main loop, depend on cycle time
  1155. time base is main loop cycle time - a value of 6 means to trigger the action every 6th run through the main loop
  1156. example: with cycle time of approx 3ms, do action every 6*3ms=18ms
  1157. value must be [1; 65535] */
  1158. #define LCD_TELEMETRY_FREQ 23 // to send telemetry data over serial 23 <=> 60ms <=> 16Hz (only sending interlaced, so 8Hz update rate)
  1159. #define LCD_TELEMETRY_AUTO_FREQ 967 // to step to next telemetry page 967 <=> 3s
  1160. #define PSENSOR_SMOOTH 16 // len of averaging vector for smoothing the PSENSOR readings; should be power of 2; set to 1 to disable
  1161. #define VBAT_SMOOTH 16 // len of averaging vector for smoothing the VBAT readings; should be power of 2; set to 1 to disable
  1162. #define RSSI_SMOOTH 32 // len of averaging vector for smoothing the RSSI readings; should be power of 2; set to 1 to disable
  1163.  
  1164.  
  1165. /********************************************************************/
  1166. /**** Regression testing ****/
  1167. /********************************************************************/
  1168.  
  1169. /* for development only:
  1170. to allow for easier and reproducable config sets for test compiling, different sets of config parameters are kept
  1171. together. This is meant to help detecting compile time errors for various features in a coordinated way.
  1172. It is not meant to produce your flying firmware
  1173. To use:
  1174. - do not set any options in config.h,
  1175. - enable with #define COPTERTEST 1, then compile
  1176. - if possible, check for the size
  1177. - repeat with other values of 2, 3, 4 etc.
  1178. */
  1179. //#define COPTERTEST 1
  1180.  
  1181. /*************************************************************************************************/
  1182. /**** END OF CONFIGURABLE PARAMETERS ****/
  1183. /*************************************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement