Guest User

config.h

a guest
Sep 10th, 2013
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 64.00 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 1064 // (*)
  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) {accADC[ROLL] = Y; accADC[PITCH] = -X; accADC[YAW] = Z;}
  188. //#define FORCE_GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] = X; gyroADC[YAW] = Z;}
  189. //#define FORCE_MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; 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 1020 //servo travel min, don't set it below 1020
  229. #define TILT_PITCH_MAX 2000 //servo travel max, max value=2000
  230. #define TILT_PITCH_MIDDLE 1500 //servo neutral value
  231. #define TILT_PITCH_PROP 10 //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 1020
  234. #define TILT_ROLL_MAX 2000
  235. #define TILT_ROLL_MIDDLE 1500
  236. #define TILT_ROLL_PROP 10
  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. /*********************** Flying Wing ***********************/
  247. /* you can change change servo orientation and servo min/max values here
  248. valid for all flight modes, even passThrough mode
  249. need to setup servo directions here; no need to swap servos amongst channels at rx */
  250. #define PITCH_DIRECTION_L 1 // left servo - pitch orientation
  251. #define PITCH_DIRECTION_R -1 // right servo - pitch orientation (opposite sign to PITCH_DIRECTION_L, if servos are mounted in mirrored orientation)
  252. #define ROLL_DIRECTION_L 1 // left servo - roll orientation
  253. #define ROLL_DIRECTION_R 1 // right servo - roll orientation (same sign as ROLL_DIRECTION_L, if servos are mounted in mirrored orientation)
  254. #define WING_LEFT_MID 1500 // (*) left servo center pos. - use this for initial trim; later trim midpoint via LCD
  255. #define WING_RIGHT_MID 1500 // (*) right servo center pos. - use this for initial trim; later trim midpoint via LCD
  256. #define WING_LEFT_MIN 1020 // limit servo travel range must be inside [1020;2000]
  257. #define WING_LEFT_MAX 2000 // limit servo travel range must be inside [1020;2000]
  258. #define WING_RIGHT_MIN 1020 // limit servo travel range must be inside [1020;2000]
  259. #define WING_RIGHT_MAX 2000 // limit servo travel range must be inside [1020;2000]
  260.  
  261. /*********************** Airplane ***********************/
  262. //#define USE_THROTTLESERVO // For use of standard 50Hz servo on throttle.
  263. #define SERVO_RATES {100, 100, 100, 100, 100, 100, 100, 100} // Rates in 0-100%
  264. #define SERVO_DIRECTION { -1, 1, 1, -1, 1, 1, 1, 1 } // Invert servos by setting -1
  265.  
  266. //#define FLAPPERONS AUX4 // Mix Flaps with Aileroins.
  267. #define FLAPPERON_EP { 1500, 1700 } // Endpooints for flaps on a 2 way switch else set {1020,2000} and program in radio.
  268. //#define FLAPPERON_EP { 1200, 1500 } // Or Flapperons up for CrowMix
  269. #define FLAPPERON_INVERT { 1, -1 } // Change direction om flapperons { Wing1, Wing2 }
  270.  
  271. //#define FLAPS AUX4 // Traditional Flaps on A2 invert with SERVO_DIRECTION servo[2).
  272. #define FLAP_EP { 1500, 1900 } // Endpooints for flaps on a 2 way switch else set {1020,2000} and program in radio.
  273.  
  274. //#define FLAPSPEED 3 // Make flaps move slowm Higher value is Higher Speed.
  275.  
  276. /*********************** Common for Heli & Airplane ***********************/
  277. //#define D12_POWER // Use D12 on PROMINI to power sensors. Will disable servo[4] on D12
  278. #define SERVO_OFFSET { 0, 0, 0, 0, 0, 0, 0, 0 } // (*) Adjust Servo MID Offset & Swash angles
  279. // Selectable channels:= ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4
  280.  
  281. /* Governor: attempts to maintain rpm through pitch and voltage changes
  282. * predictive approach: observe input signals and voltage and guess appropriate corrections.
  283. * (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.
  284. * Can be toggled via aux switch.
  285. */
  286. //#define GOVERNOR_P 7 // (*) proportional factor. Higher value -> higher throttle increase. Must be >=1; 0 = turn off
  287. //#define GOVERNOR_D 4 // (*) decay timing. Higher value -> takes longer to return throttle to normal. Must be >=1;
  288. //#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
  289.  
  290. /*********************** Heli ***********************/
  291. /* Channel to control CollectivePitch */
  292. #define COLLECTIVE_PITCH THROTTLE
  293. /* Set Maximum available movement for the servos. Depending on model */
  294. #define SERVO_ENDPOINT_HIGH {2000,2000,2000,2000,2000,2000,2000,2000};
  295. #define SERVO_ENDPOINT_LOW {1020,1020,1020,1020,1020,1020,1020,1020};
  296.  
  297. /* Limit the range of Collective Pitch. 100% is Full Range each way and position for Zero Pitch */
  298. #define COLLECTIVE_RANGE { 80, 0, 80 }// {Min%, ZeroPitch offset from 1500, Max%}.
  299. #define YAW_CENTER 1500 // Use servo[5] SERVO_ENDPOINT_HIGH/LOW for the endpoits.
  300. #define YAWMOTOR 0 // If a motor is used as YAW Set to 1 else set to 0.
  301.  
  302. /* Servo mixing for heli 120 Use 1/10 fractions (ex.5 = 5/10 = 1/2)
  303. {Coll,Nick,Roll} */
  304. #define SERVO_NICK { +10, -10, -0 }
  305. #define SERVO_LEFT { +10, +5, +10 }
  306. #define SERVO_RIGHT { +10, +5, -10 }
  307.  
  308. /* Servo mixing for heli 90
  309. {Coll,Nick,Roll} */
  310. #define SERVO_DIRECTIONS { +1, -1, -1 } // -1 will invert servo
  311.  
  312. /* Limit Maximum controll for Roll & Nick in 0-100% */
  313. #define CONTROL_RANGE { 100, 100 } // { ROLL,PITCH }
  314.  
  315. /* use servo code to drive the throttle output. You want this for analog servo driving the throttle on IC engines.
  316. if inactive, throttle output will be treated as a motor output, so it can drive an ESC */
  317. //#define HELI_USE_SERVO_FOR_THROTTLE
  318.  
  319. /*********************** Single and DualCopter Settings ***********************/
  320. /* Change to -1 to reverse servomovement per axis
  321. Servosettings for SingleCopter */
  322. #define SINGLECOPTRER_YAW {1, 1, 1, 1} // Left, Right,Front,Rear
  323. #define SINGLECOPTRER_SERVO {1,-1, 1,-1} // Pitch,Pitch,Roll, Roll
  324.  
  325. /* Servosettings for DualCopter */
  326. #define DUALCOPTER_SERVO {1,1} //Pitch,Roll
  327. /* Use SERVO_OFFSET and SERVO_RATES in Heli and Airplane section for centering and endpoints */
  328.  
  329. /*********************** your individual mixing ***********************/
  330. /* if you want to override an existing entry in the mixing table, you may want to avoid esditing the
  331. * mixTable() function for every version again and again.
  332. * howto: http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_Mixing
  333. */
  334. //#define MY_PRIVATE_MIXING "filename.h"
  335. //#define LEAVE_HEADROOM_FOR_MOTORS 4 // leave room for gyro corrrections only for first 4 motors
  336.  
  337. /*************************************************************************************************/
  338. /***************** ***************/
  339. /**************** SECTION 3 - RC SYSTEM SETUP *******/
  340. /***************** ***************/
  341. /*************************************************************************************************/
  342.  
  343. /* note: no need to uncomment something in this section if you use a standard receiver */
  344.  
  345. /**************************************************************************************/
  346. /******** special receiver types ********************/
  347. /**************************************************************************************/
  348.  
  349. /**************************** PPM Sum Reciver ***********************************/
  350. /* The following lines apply only for specific receiver with only one PPM sum signal, on digital PIN 2
  351. Select the right line depending on your radio brand. Feel free to modify the order in your PPM order is different */
  352. //#define SERIAL_SUM_PPM PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Graupner/Spektrum
  353. //#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Robe/Hitec/Futaba
  354. //#define SERIAL_SUM_PPM ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Multiplex
  355. //#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For some Hitec/Sanwa/Others
  356.  
  357. // Uncommenting following line allow to connect PPM_SUM receiver to standard THROTTLE PIN on MEGA boards (eg. A8 in CRIUS AIO)
  358. //#define PPM_ON_THROTTLE
  359.  
  360. /********************** Spektrum Satellite Reciver *******************************/
  361. /* The following lines apply only for Spektrum Satellite Receiver
  362. Spektrum Satellites are 3V devices. DO NOT connect to 5V!
  363. 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).
  364. For PROMINI, attach sat grey to RX0. Attach sat black to ground. */
  365. //#define SPEKTRUM 1024
  366. #define SPEKTRUM 2048
  367. //#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).
  368. //**************************
  369. // Defines that allow a "Bind" of a Spektrum or Compatible Remote Receiver (aka Satellite) via Configuration GUI.
  370. // Bind mode will be same as declared above, if your TX is capable.
  371. // Ground, Power, and Signal must come from three adjacent pins.
  372. // 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.
  373. // 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.
  374. //**************************
  375. // For Pro Mini, the connector for the Satellite that resides on the FTDI can be unplugged and moved to these three adjacent pins.
  376. //#define SPEK_BIND //Un-Comment for Spektrum Satellie Bind Support. Code is ~420 bytes smaller without it.
  377. //#define SPEK_BIND_GROUND 4
  378. //#define SPEK_BIND_POWER 5
  379. //#define SPEK_BIND_DATA 6
  380.  
  381. /******************************* SBUS RECIVER ************************************/
  382. /* The following line apply only for Futaba S-Bus Receiver on MEGA boards at RX1 only (Serial 1).
  383. You have to invert the S-Bus-Serial Signal e.g. with a Hex-Inverter like IC SN74 LS 04 */
  384. //#define SBUS
  385.  
  386. /******************* RC signal from the serial port via Multiwii Serial Protocol *********/
  387. //#define RCSERIAL
  388.  
  389.  
  390.  
  391.  
  392. /*************************************************************************************************/
  393. /***************** ***************/
  394. /**************** SECTION 4 - ALTERNATE CPUs & BOARDS *******/
  395. /***************** ***************/
  396. /*************************************************************************************************/
  397.  
  398. /**************************************************************************************/
  399. /******** Promini Specifig Settings ********************/
  400. /**************************************************************************************/
  401.  
  402. /************************** Hexa Motor 5 & 6 Pins *******************************/
  403. /* PIN A0 and A1 instead of PIN D5 & D6 for 6 motors config and promini config
  404. This mod allow the use of a standard receiver on a pro mini
  405. (no need to use a PPM sum receiver) */
  406. //#define A0_A1_PIN_HEX
  407.  
  408. /********************************* Aux 2 Pin ***********************************/
  409. /* possibility to use PIN8 or PIN12 as the AUX2 RC input (only one, not both)
  410. it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8) */
  411. //#define RCAUXPIN8
  412. //#define RCAUXPIN12
  413.  
  414.  
  415. /**************************************************************************************/
  416. /***************** Teensy 2.0 Support ******************/
  417. /**************************************************************************************/
  418. /* uncomment this if you use a teensy 2.0 with teensyduino
  419. it needs to run at 16MHz */
  420. //#define TEENSY20
  421.  
  422.  
  423. /**************************************************************************************/
  424. /******** Settings for ProMicro, Leonardo and other Atmega32u4 Boards ***********/
  425. /**************************************************************************************/
  426.  
  427. /********************************* pin Layout **********************************/
  428. /* activate this for a better pinlayout if all pins can be used => not possible on ProMicro */
  429. //#define A32U4ALLPINS
  430.  
  431. /********************************** PWM Setup **********************************/
  432. /* activate all 6 hardware PWM outputs Motor 5 = D11 and 6 = D13.
  433. note: not possible on the sparkfun promicro (pin 11 & 13 are not broken out there)
  434. if activated:
  435. Motor 1-6 = 10-bit hardware PWM
  436. Motor 7-8 = 8-bit Software PWM
  437. Servos = 8-bit Software PWM
  438. if deactivated:
  439. Motor 1-4 = 10-bit hardware PWM
  440. Motor 5-8 = 10-bit Software PWM
  441. Servos = 10-bit Software PWM */
  442. //#define HWPWM6
  443.  
  444. /********************************** Aux 2 Pin **********************************/
  445. /* AUX2 pin on pin RXO */
  446. //#define RCAUX2PINRXO
  447.  
  448. /* aux2 pin on pin D17 (RXLED) */
  449. //#define RCAUX2PIND17
  450.  
  451. /********************************** Buzzer Pin **********************************/
  452. /* this moves the Buzzer pin from TXO to D8 for use with ppm sum or spectrum sat. RX (not needed if A32U4ALLPINS is active) */
  453. //#define D8BUZZER
  454.  
  455. /*********************** Promicro version related ****************************/
  456. /* Inverted status LED for Promicro ver 10 */
  457. //#define PROMICRO10
  458.  
  459.  
  460. /**************************************************************************************/
  461. /******** override default pin assignments ********************/
  462. /**************************************************************************************/
  463.  
  464. /* only enable any of this if you must change the default pin assignment, e.g. your board does not have a specific pin */
  465. /* you may need to change PINx and PORTx plus #shift according to the desired pin! */
  466. //#define OVERRIDE_V_BATPIN A0 // instead of A3 // Analog PIN 3
  467.  
  468. //#define OVERRIDE_LEDPIN_PINMODE pinMode (A1, OUTPUT); // use A1 instead of d13
  469. //#define OVERRIDE_LEDPIN_TOGGLE PINC |= 1<<1; // PINB |= 1<<5; //switch LEDPIN state (digital PIN 13)
  470. //#define OVERRIDE_LEDPIN_OFF PORTC &= ~(1<<1); // PORTB &= ~(1<<5);
  471. //#define OVERRIDE_LEDPIN_ON PORTC |= 1<<1; // was PORTB |= (1<<5);
  472.  
  473. //#define OVERRIDE_BUZZERPIN_PINMODE pinMode (A2, OUTPUT); // use A2 instead of d8
  474. //#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2 //PORTB |= 1;
  475. //#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2); //PORTB &= ~1;
  476.  
  477. /*************************************************************************************************/
  478. /***************** ***************/
  479. /**************** SECTION 5 - ALTERNATE SETUP *******/
  480. /***************** ***************/
  481. /*************************************************************************************************/
  482.  
  483. /****** Serial com speed *********************************/
  484. /* This is the speed of the serial interfaces */
  485. #define SERIAL0_COM_SPEED 115200
  486. #define SERIAL1_COM_SPEED 115200
  487. #define SERIAL2_COM_SPEED 115200
  488. #define SERIAL3_COM_SPEED 115200
  489.  
  490. /* interleaving delay in micro seconds between 2 readings WMP/NK in a WMP+NK config
  491. if the ACC calibration time is very long (20 or 30s), try to increase this delay up to 4000
  492. it is relevent only for a conf with NK */
  493. #define INTERLEAVING_DELAY 3000
  494.  
  495. /* when there is an error on I2C bus, we neutralize the values during a short time. expressed in microseconds
  496. it is relevent only for a conf with at least a WMP */
  497. #define NEUTRALIZE_DELAY 100000
  498.  
  499.  
  500. /**************************************************************************************/
  501. /******** Gyro filters ********************/
  502. /**************************************************************************************/
  503.  
  504. /********************* Lowpass filter for some gyros ****************************/
  505. /* ITG3200 & ITG3205 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try
  506. to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting.
  507. It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and
  508. balancing options ran out. Uncomment only one option!
  509. IMPORTANT! Change low pass filter setting changes PID behaviour, so retune your PID's after changing LPF.*/
  510. //#define ITG3200_LPF_256HZ // This is the default setting, no need to uncomment, just for reference
  511. //#define ITG3200_LPF_188HZ
  512. //#define ITG3200_LPF_98HZ
  513. //#define ITG3200_LPF_42HZ
  514. //#define ITG3200_LPF_20HZ
  515. //#define ITG3200_LPF_10HZ // Use this only in extreme cases, rather change motors and/or props
  516.  
  517. /* MPU6050 Low pass filter setting. In case you cannot eliminate all vibrations to the Gyro, you can try
  518. to decrease the LPF frequency, only one step per try. As soon as twitching gone, stick with that setting.
  519. It will not help on feedback wobbles, so change only when copter is randomly twiching and all dampening and
  520. balancing options ran out. Uncomment only one option!
  521. IMPORTANT! Change low pass filter setting changes PID behaviour, so retune your PID's after changing LPF.*/
  522. //#define MPU6050_LPF_256HZ // This is the default setting, no need to uncomment, just for reference
  523. //#define MPU6050_LPF_188HZ
  524. //#define MPU6050_LPF_98HZ
  525. //#define MPU6050_LPF_42HZ
  526. //#define MPU6050_LPF_20HZ
  527. //#define MPU6050_LPF_10HZ
  528. //#define MPU6050_LPF_5HZ // Use this only in extreme cases, rather change motors and/or props
  529.  
  530. /****** Gyro smoothing **********************************/
  531. /* GYRO_SMOOTHING. In case you cannot reduce vibrations _and_ _after_ you have tried the low pass filter options, you
  532. may try this gyro smoothing via averaging. Not suitable for multicopters!
  533. Good results for helicopter, airplanes and flying wings (foamies) with lots of vibrations.*/
  534. //#define GYRO_SMOOTHING {20, 20, 3} // (*) separate averaging ranges for roll, pitch, yaw
  535.  
  536. /************************ Moving Average Gyros **********************************/
  537. //#define MMGYRO 10 // (*) Active Moving Average Function for Gyros
  538. //#define MMGYROVECTORLENGTH 15 // Length of Moving Average Vector (maximum value for tunable MMGYRO
  539. /* Moving Average ServoGimbal Signal Output */
  540. //#define MMSERVOGIMBAL // Active Output Moving Average Function for Servos Gimbal
  541. //#define MMSERVOGIMBALVECTORLENGHT 32 // Lenght of Moving Average Vector
  542.  
  543.  
  544.  
  545.  
  546. /*************************************************************************************************/
  547. /***************** ***************/
  548. /**************** SECTION 6 - OPTIONAL FEATURES *******/
  549. /***************** ***************/
  550. /*************************************************************************************************/
  551.  
  552. /************************ continuous gyro calibration ********************/
  553. /* Gyrocalibration will be repeated if copter is moving during calibration. */
  554. //#define GYROCALIBRATIONFAILSAFE
  555.  
  556. /************************ AP FlightMode **********************************/
  557. /* Temporarily Disables GPS_HOLD_MODE to be able to make it possible to adjust the Hold-position when moving the sticks.*/
  558. #define AP_MODE 40 // Create a deadspan for GPS.
  559.  
  560. /************************ Assisted AcroTrainer ************************************/
  561. /* Train Acro with auto recovery. Value set the point where ANGLE_MODE takes over.
  562. Remember to activate ANGLE_MODE first!...
  563. A Value on 200 will give a very distinct transfer */
  564. //#define ACROTRAINER_MODE 200 // http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944#p17437
  565.  
  566.  
  567. /******** Failsafe settings ********************/
  568. /* Failsafe check pulses on four main control channels CH1-CH4. If the pulse is missing or bellow 985us (on any of these four channels)
  569. the failsafe procedure is initiated. After FAILSAFE_DELAY time from failsafe detection, the level mode is on (if ACC or nunchuk is avaliable),
  570. 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
  571. for best results. This value is depended from your configuration, AUW and some other params. Next, afrer FAILSAFE_OFF_DELAY the copter is disarmed,
  572. 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. */
  573. //#define FAILSAFE // uncomment to activate the failsafe function
  574. #define FAILSAFE_DELAY 10 // Guard time for failsafe activation after signal lost. 1 step = 0.1sec - 1sec in example
  575. #define FAILSAFE_OFF_DELAY 200 // Time for Landing before motors stop in 0.1sec. 1 step = 0.1sec - 20sec in example
  576. #define FAILSAFE_THROTTLE (MINTHROTTLE + 200) // (*) Throttle level used for landing - may be relative to MINTHROTTLE - as in this case
  577.  
  578.  
  579. /***************** DFRobot LED RING *********************************/
  580. /* I2C DFRobot LED RING communication */
  581. //#define LED_RING
  582.  
  583. /******************************** LED FLASHER ***********************************/
  584. //#define LED_FLASHER
  585. //#define LED_FLASHER_DDR DDRB
  586. //#define LED_FLASHER_PORT PORTB
  587. //#define LED_FLASHER_BIT PORTB4
  588. //#define LED_FLASHER_INVERT
  589. //#define LED_FLASHER_SEQUENCE 0b00000000 // leds OFF
  590. //#define LED_FLASHER_SEQUENCE_ARMED 0b00000101 // create double flashes
  591. //#define LED_FLASHER_SEQUENCE_MAX 0b11111111 // full illumination
  592. //#define LED_FLASHER_SEQUENCE_LOW 0b00000000 // no illumination
  593.  
  594.  
  595. /******************************* Landing lights *********************************/
  596. /* Landing lights
  597. Use an output pin to control landing lights.
  598. They can be switched automatically when used in conjunction
  599. with altitude data from a sonar unit. */
  600. //#define LANDING_LIGHTS_DDR DDRC
  601. //#define LANDING_LIGHTS_PORT PORTC
  602. //#define LANDING_LIGHTS_BIT PORTC0
  603. //#define LANDING_LIGHTS_INVERT
  604.  
  605. /* altitude above ground (in cm) as reported by sonar */
  606. //#define LANDING_LIGHTS_AUTO_ALTITUDE 50
  607.  
  608. /* adopt the flasher pattern for landing light LEDs */
  609. //#define LANDING_LIGHTS_ADOPT_LED_FLASHER_PATTERN
  610.  
  611. /************************* INFLIGHT ACC Calibration *****************************/
  612. /* This will activate the ACC-Inflight calibration if unchecked */
  613. //#define INFLIGHT_ACC_CALIBRATION
  614.  
  615. /************************** Disable WMP power pin *******************************/
  616. /* disable use of the POWER PIN
  617. (allready done if the option RCAUXPIN12 is selected) */
  618. //#define DISABLE_POWER_PIN
  619.  
  620. /******************************* OSD Switch *************************************/
  621. // This adds a box that can be interpreted by OSD in activation status (to switch on/off the overlay for instance)
  622. //#define OSD_SWITCH
  623.  
  624. /**************************************************************************************/
  625. /*********************** TX-related **************************/
  626. /**************************************************************************************/
  627.  
  628. /* introduce a deadband around the stick center
  629. Must be greater than zero, comment if you dont want a deadband on roll, pitch and yaw */
  630. //#define DEADBAND 6
  631.  
  632. /* defines the neutral zone of throttle stick during altitude hold, default setting is
  633. +/-40 uncommend and change the value below if you want to change it. */
  634. //#define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 40
  635.  
  636.  
  637. /**************************************************************************************/
  638. /*********************** GPS **************************/
  639. /**************************************************************************************/
  640.  
  641. /* GPS using a SERIAL port
  642. if enabled, define here the Arduino Serial port number and the UART speed
  643. note: only the RX PIN is used in case of NMEA mode, the GPS is not configured by multiwii
  644. 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)
  645. at least 5Hz update rate. uncomment the first line to select the GPS serial port of the arduino */
  646. //#define GPS_SERIAL 2 // should be 2 for flyduino v2. It's the serial port number on arduino MEGA
  647. //#define GPS_BAUD 57600
  648. #define GPS_BAUD 115200
  649.  
  650.  
  651. /* GPS protocol
  652. NMEA - Standard NMEA protocol GGA, GSA and RMC sentences are needed
  653. UBLOX - U-Blox binary protocol, use the ublox config file (u-blox-config.ublox.txt) from the source tree
  654. MTK_BINARY16 and MTK_BINARY19 - MTK3329 chipset based GPS with DIYDrones binary firmware (v1.6 or v1.9)
  655. With UBLOX and MTK_BINARY you don't have to use GPS_FILTERING in multiwii code !!! */
  656.  
  657.  
  658. //#define NMEA
  659. //#define UBLOX
  660. //#define MTK_BINARY16
  661. //#define MTK_BINARY19
  662. //#define INIT_MTK_GPS // initialize MTK GPS for using selected speed, 5Hz update rate and GGA & RMC sentence or binary settings
  663.  
  664. //#define GPS_PROMINI_SERIAL 57600 // Will Autosense if GPS is connected when ardu boots
  665.  
  666. /* I2C GPS device made with an independant arduino + GPS device
  667. including some navigation functions
  668. contribution from EOSBandi http://code.google.com/p/i2c-gps-nav/
  669. You have to use at least I2CGpsNav code r33 */
  670. //#define I2C_GPS
  671.  
  672. /* I2C GPS device made with an indeedent ATTiny[24]313 + GPS device and
  673. optional sonar device. https://github.com/wertarbyte/tiny-gps/ */
  674. /* get GPS data from Tiny-GPS */
  675. //#define TINY_GPS
  676. /* get sonar data from Tiny-GPS */
  677. //#define TINY_GPS_SONAR
  678.  
  679. /* GPS data readed from Misio-OSD - GPS module connected to OSD, and MultiWii read GPS data from OSD - tested and working OK ! */
  680. //#define GPS_FROM_OSD
  681.  
  682. /* 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
  683. - No GPS FIX -> LED blink at speed of incoming GPS frames
  684. - Fix and sat no. bellow 5 -> LED off
  685. - Fix and sat no. >= 5 -> LED blinks, one blink for 5 sat, two blinks for 6 sat, three for 7 ... */
  686. #define GPS_LED_INDICATOR
  687.  
  688. //#define USE_MSP_WP //Enables the MSP_WP command, which is used by WinGUI to display and log Home and Poshold positions
  689.  
  690. //#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)
  691.  
  692. /* GPS navigation can control the heading */
  693.  
  694. #define NAV_CONTROLS_HEADING true // copter faces toward the navigation point, maghold must be enabled for it
  695. #define NAV_TAIL_FIRST false // true - copter comes in with tail first
  696. #define NAV_SET_TAKEOFF_HEADING true // true - when copter arrives to home position it rotates it's head to takeoff direction
  697.  
  698.  
  699. /* Get your magnetic decliniation from here : http://magnetic-declination.com/
  700. Convert the degree+minutes into decimal degree by ==> degree+minutes*(1/60)
  701. Note the sign on declination it could be negative or positive (WEST or EAST) */
  702. //#define MAG_DECLINIATION 3.96f //For Budapest Hungary.
  703. #define MAG_DECLINIATION 0.0f
  704.  
  705. #define GPS_LEAD_FILTER // Adds a forward predictive filterig to compensate gps lag. Code based on Jason Short's lead filter implementation
  706.  
  707. //#define GPS_FILTERING // add a 5 element moving average filter to GPS coordinates, helps eliminate gps noise but adds latency comment out to disable
  708. #define GPS_WP_RADIUS 200 // if we are within this distance to a waypoint then we consider it reached (distance is in cm)
  709. #define NAV_SLEW_RATE 30 // Adds a rate control to nav output, will smoothen out nav angle spikes
  710.  
  711.  
  712. /**************************************************************************************/
  713. /*********************** LCD/OLED - display settings *********************/
  714. /**************************************************************************************/
  715.  
  716. /* http://www.multiwii.com/wiki/index.php?title=Extra_features#LCD_.2F_OLED */
  717.  
  718. /***************************** The type of LCD **********************************/
  719. /* choice of LCD attached for configuration and telemetry, see notes below */
  720. //#define LCD_DUMMY // No Physical LCD attached. With this & LCD_CONF defined, TX sticks still work to set gains, by watching LED blink.
  721. //#define LCD_SERIAL3W // Alex' initial variant with 3 wires, using rx-pin for transmission @9600 baud fixed
  722. //#define LCD_TEXTSTAR // SERIAL LCD: Cat's Whisker LCD_TEXTSTAR Module CW-LCD-02 (Which has 4 input keys for selecting menus)
  723. //#define LCD_VT100 // SERIAL LCD: vt100 compatible terminal emulation (blueterm, putty, etc.)
  724. //#define LCD_TTY // SERIAL LCD: useful to tweak parameters over cable with arduino IDE 'serial monitor'
  725. //#define LCD_ETPP // I2C LCD: Eagle Tree Power Panel LCD, which is i2c (not serial)
  726. //#define LCD_LCD03 // I2C LCD: LCD03, which is i2c
  727. //#define OLED_I2C_128x64 // I2C LCD: OLED http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
  728.  
  729. /****************************** Display settings ***********************************/
  730. #define LCD_SERIAL_PORT 0 // must be 0 on Pro Mini and single serial boards; Set to your choice on any Mega based board
  731.  
  732. //#define SUPPRESS_OLED_I2C_128x64LOGO // suppress display of OLED logo to save memory
  733.  
  734. /* double font height for better readability. Reduces visible #lines by half.
  735. * The lower part of each page is accessible under the name of shifted keyboard letter :
  736. * 1 - ! , 2 - @ , 3 - # , 4 - $ , 5 - % , 6 - ^ , 7 - & , 8 - * , 9 - (
  737. * You must add both to your lcd.telemetry.* sequences
  738. */
  739. //#define DISPLAY_FONT_DSIZE //currently only aplicable for OLED_I2C_128x64
  740.  
  741. /* style of display - AUTODETECTED via LCD_ setting - only activate to override defaults */
  742. //#define DISPLAY_2LINES
  743. //#define DISPLAY_MULTILINE
  744. //#define MULTILINE_PRE 2 // multiline configMenu # pref lines
  745. //#define MULTILINE_POST 6 // multiline configMenu # post lines
  746. /******************************** Navigation ***********************************/
  747. /* keys to navigate the LCD menu */
  748. #define LCD_MENU_PREV 'p'
  749. #define LCD_MENU_NEXT 'n'
  750. #define LCD_VALUE_UP 'u'
  751. #define LCD_VALUE_DOWN 'd'
  752.  
  753. #define LCD_MENU_SAVE_EXIT 's'
  754. #define LCD_MENU_ABORT 'x'
  755.  
  756. /**************************************************************************************/
  757. /*********************** LCD configuration menu **************************/
  758. /**************************************************************************************/
  759.  
  760. /* uncomment this line if you plan to use a LCD or OLED for tweaking parameters
  761. * http://www.multiwii.com/wiki/index.php?title=Extra_features#Configuration_Menu */
  762. //#define LCD_CONF
  763.  
  764. /* to include setting the aux switches for AUX1 -> AUX4 via LCD */
  765. //#define LCD_CONF_AUX
  766.  
  767. /* optional exclude some functionality - uncomment to suppress some unwanted telemetry pages */
  768. //#define SUPPRESS_LCD_CONF_AUX34
  769.  
  770. /**************************************************************************************/
  771. /*********************** LCD telemetry **************************/
  772. /**************************************************************************************/
  773.  
  774. /* to monitor system values (battery level, loop time etc. with LCD
  775. * http://www.multiwii.com/wiki/index.php?title=LCD_Telemetry */
  776.  
  777. /******************************** Activation ***********************************/
  778. //#define LCD_TELEMETRY
  779.  
  780. /* to enable automatic hopping between a choice of telemetry pages uncomment this. */
  781. //#define LCD_TELEMETRY_AUTO "123452679" // pages 1 to 9 in ascending order
  782. //#define LCD_TELEMETRY_AUTO "212232425262729" // strong emphasis on page 2
  783.  
  784. /* manual stepping sequence; first page of the sequence gets loaded at startup to allow non-interactive display */
  785. //#define LCD_TELEMETRY_STEP "0123456789" // should contain a 0 to allow switching off.
  786.  
  787. /* optional exclude some functionality - uncomment to suppress some unwanted telemetry pages */
  788. //#define SUPPRESS_TELEMETRY_PAGE_1
  789. //#define SUPPRESS_TELEMETRY_PAGE_2
  790. //#define SUPPRESS_TELEMETRY_PAGE_3
  791. //#define SUPPRESS_TELEMETRY_PAGE_4
  792. //#define SUPPRESS_TELEMETRY_PAGE_5
  793. //#define SUPPRESS_TELEMETRY_PAGE_6
  794. //#define SUPPRESS_TELEMETRY_PAGE_7
  795. //#define SUPPRESS_TELEMETRY_PAGE_8
  796. //#define SUPPRESS_TELEMETRY_PAGE_9
  797.  
  798. /********************************************************************/
  799. /**** RSSI ****/
  800. /********************************************************************/
  801. //#define RX_RSSI
  802. //#define RX_RSSI_PIN A3
  803.  
  804. /********************************************************************/
  805. /**** Buzzer ****/
  806. /********************************************************************/
  807. //#define BUZZER
  808. //#define RCOPTIONSBEEP // uncomment this if you want the buzzer to beep at any rcOptions change on channel Aux1 to Aux4
  809. //#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)
  810. //#define PILOTLAMP //Uncomment if you are using a X-Arcraft Pilot Lamp
  811.  
  812. /********************************************************************/
  813. /**** battery voltage monitoring ****/
  814. /********************************************************************/
  815. /* for V BAT monitoring
  816. after the resistor divisor we should get [0V;5V]->[0;1023] on analog V_BATPIN
  817. with R1=33k and R2=51k
  818. vbat = [0;1023]*16/VBATSCALE
  819. must be associated with #define BUZZER ! */
  820. //#define VBAT // uncomment this line to activate the vbat code
  821. #define VBATSCALE 131 // (*) change this value if readed Battery voltage is different than real voltage
  822. #define VBATNOMINAL 126 // 12,6V full battery nominal voltage - only used for lcd.telemetry
  823. #define VBATLEVEL_WARN1 107 // (*) 10,7V
  824. #define VBATLEVEL_WARN2 99 // (*) 9.9V
  825. #define VBATLEVEL_CRIT 93 // (*) 9.3V - critical condition: if vbat ever goes below this value, permanent alarm is triggered
  826. #define NO_VBAT 16 // (*) Avoid beeping without any battery
  827.  
  828.  
  829. /********************************************************************/
  830. /**** powermeter (battery capacity monitoring) ****/
  831. /********************************************************************/
  832.  
  833. /* enable monitoring of the power consumption from battery (think of mAh)
  834. allows to set alarm value in GUI or via LCD
  835. Full description and howto here http://www.multiwii.com/wiki/index.php?title=Powermeter
  836. Two options:
  837. 1 - hard: - (uses hardware sensor, after configuration gives very good results)
  838. 2 - soft: - (good results +-5% for plush and mystery ESCs @ 2S and 3S, not good with SuperSimple ESC) */
  839. //#define POWERMETER_SOFT
  840. //#define POWERMETER_HARD
  841. /* PLEVELSCALE is the step size you can use to set alarm */
  842. #define PLEVELSCALE 50 // if you change this value for other granularity, you must search for comments in code to change accordingly
  843. /* larger PLEVELDIV will get you smaller value for power (mAh equivalent) */
  844. #define PLEVELDIV 5000 // (*) default for soft - if you lower PLEVELDIV, beware of overrun in uint32 pMeter
  845. #define PLEVELDIVSOFT PLEVELDIV // for soft always equal to PLEVELDIV; for hard set to 5000
  846. #define PSENSORNULL 510 // (*) set to analogRead() value for zero current; for I=0A my sensor gives 1/2 Vss; that is approx 2.49Volt;
  847. #define PINT2mA 13 // (*) for telemtry display: one integer step on arduino analog translates to mA (example 4.9 / 37 * 100
  848.  
  849. /********************************************************************/
  850. /**** altitude hold ****/
  851. /********************************************************************/
  852.  
  853. /* uncomment to disable the altitude hold feature.
  854. * This is useful if all of the following apply
  855. * + you have a baro
  856. * + want altitude readout
  857. * + do not use altitude hold feature
  858. * + want to save memory space
  859. */
  860. //#define SUPPRESS_BARO_ALTHOLD
  861.  
  862. /* Natural alt change for rapid pilots. It's temporary switch OFF the althold when throttle stick is out of deadband defined with ALT_HOLD_THROTTLE_NEUTRAL_ZONE
  863. * but if it's commented: Smooth alt change routine is activated, for slow auto and aerophoto modes (in general solution from alexmos). It's slowly increase/decrease
  864. * altitude proportional to stick movement (+/-100 throttle gives about +/-50 cm in 1 second with cycle time about 3-4ms)
  865. */
  866. #define ALTHOLD_FAST_THROTTLE_CHANGE
  867.  
  868. /********************************************************************/
  869. /**** altitude variometer ****/
  870. /********************************************************************/
  871.  
  872. /* enable to get audio feedback upon rising/falling copter/plane.
  873. * Requires a working baro.
  874. * For now, Output gets sent to an enabled vt100 terminal program over the serial line.
  875. * choice of two methods (enable either one or both)
  876. * method 1 : use short term movement from baro ( bigger code size)
  877. * method 2 : use long term observation of altitude from baro (smaller code size)
  878. */
  879. //#define VARIOMETER 12 // possible values: 12 = methods 1 & 2 ; 1 = method 1 ; 2 = method 2
  880. //#define SUPPRESS_VARIOMETER_UP // if no signaling for up movement is desired
  881. //#define SUPPRESS_VARIOMETER_DOWN // if no signaling for down movement is desired
  882. //#define VARIOMETER_SINGLE_TONE // use only one tone (BEL); neccessary for non-patched vt100 terminals
  883.  
  884. /********************************************************************/
  885. /**** baord naming ****/
  886. /********************************************************************/
  887.  
  888. /*
  889. * this name is displayed together with the MultiWii version number
  890. * upon powerup on the LCD.
  891. * If you are without a DISPLAYD then You may enable LCD_TTY and
  892. * use arduino IDE's serial monitor to view the info.
  893. *
  894. * You must preserve the format of this string!
  895. * It must be 16 characters total,
  896. * The last 4 characters will be overwritten with the version number.
  897. */
  898. #define BOARD_NAME "MultiWii V-.--"
  899. // 123456789.123456
  900.  
  901. /************* Support multiple configuration profiles in EEPROM ************/
  902. //#define MULTIPLE_CONFIGURATION_PROFILES
  903.  
  904. /*************************************************************************************************/
  905. /***************** ***************/
  906. /**************** SECTION 7 - TUNING & DEVELOPER **************/
  907. /***************** ***************/
  908. /*************************************************************************************************/
  909.  
  910. /************ Experimental: force a stable, fixated (high) cycle time **********/
  911. /* when activated, the displayed cycle time in GUI will not be correct.
  912. * Tunable via LCD config menu.
  913. * value of 0 turns the feature off.
  914. */
  915. //#define CYCLETIME_FIXATED 9000 // (*)
  916.  
  917. /**************************************************************************************/
  918. /******** special ESC with extended range [0-2000] microseconds ********************/
  919. /**************************************************************************************/
  920. //#define EXT_MOTOR_RANGE
  921.  
  922. /**************************************************************************************/
  923. /*********************** motor, servo and other presets ***********************/
  924. /**************************************************************************************/
  925. /* motors will not spin when the throttle command is in low position
  926. this is an alternative method to stop immediately the motors */
  927. //#define MOTOR_STOP
  928.  
  929. /* some radios have not a neutral point centered on 1500. can be changed here */
  930. #define MIDRC 1500
  931.  
  932. /*********************** Servo Refreshrates ***********************/
  933. /* Default 50Hz Servo refresh rate*/
  934. #define SERVO_RFR_50HZ
  935.  
  936. /* up to 160Hz servo refreshrate .. works with the most analog servos*/
  937. //#define SERVO_RFR_160HZ
  938.  
  939. /* up to 300Hz refreshrate it is as fast as possible (100-300Hz depending on the cound of used servos and the servos state).
  940. for use with digital servos
  941. dont use it with analog servos! thay may get damage. (some will work but be careful) */
  942. //#define SERVO_RFR_300HZ
  943.  
  944. /*********************** HW PWM Servos ***********************/
  945. /* HW PWM Servo outputs for Arduino Mega.. moves:
  946. Pitch = pin 44
  947. Roll = pin 45
  948. CamTrig = pin 46
  949. SERVO4 = pin 11 (assigned to PPM or SPECTRUM CH9 on copter configuration)
  950. SERVO5 = pin 12 (assigned to PPM or SPECTRUM CH10 on copter configuration)
  951. this option disable other software PWM's for servos - only five hardware controlled servos avaliable
  952. */
  953. //#define MEGA_HW_PWM_SERVOS
  954.  
  955. /********************************************************************/
  956. /**** Serial command handling - MSP and other ****/
  957. /********************************************************************/
  958.  
  959. /* to reduce memory footprint, it is possible to suppress handling of serial commands.
  960. * This does _not_ affect handling of RXserial, Spektrum or GPS. Those will not be affected and still work the same.
  961. * Enable either one or both of the following options */
  962.  
  963. /* Remove handling of all commands of the New MultiWii Serial Protocol.
  964. * This will disable use of the GUI, winGUI, android apps and any other program that makes use of the MSP.
  965. * You must find another way (like LCD_CONF) to tune the parameters or live with the defaults.
  966. * If you run a LCD/OLED via i2c or serial/Bluetooth, this is safe to use */
  967. //#define SUPPRESS_ALL_SERIAL_MSP // saves approx 2700 bytes
  968.  
  969. /* Remove handling of other serial commands.
  970. * This includes navigating via serial the lcd.configuration menu, lcd.telemetry and permanent.log .
  971. * Navigating via stick inputs on tx is not affected and will work the same. */
  972. //#define SUPPRESS_OTHER_SERIAL_COMMANDS // saves approx 0 to 100 bytes, depending on features enabled
  973.  
  974. /********************************************************************/
  975. /**** diagnostics ****/
  976. /********************************************************************/
  977.  
  978. /* to log values like max loop time and others to come
  979. logging values are visible via LCD config
  980. set to 1, enable 'R' option to reset values, max current, max altitude
  981. set to 2, adds min/max cycleTimes
  982. 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) */
  983. //#define LOG_VALUES 1
  984.  
  985. /* Permanent logging to eeprom - survives (most) upgrades and parameter resets.
  986. * used to track number of flights etc. over lifetime of controller board.
  987. * Writes to end of eeprom - should not conflict with stored parameters yet.
  988. * Logged values: accumulated lifetime, #powercycle/reset/initialize events, #arm events, #disarm events, last armedTime,
  989. * #failsafe@disarm, #i2c_errs@disarm
  990. * To activate set to size of eeprom for your mcu: promini 328p: 1023 ; 2560: 4095.
  991. * Enable one or more options to show the log
  992. */
  993. //#define LOG_PERMANENT 1023
  994. //#define LOG_PERMANENT_SHOW_AT_STARTUP // enable to display log at startup
  995. //#define LOG_PERMANENT_SHOW_AT_L // enable to display log when receiving 'L'
  996. //#define LOG_PERMANENT_SHOW_AFTER_CONFIG // enable to display log after exiting LCD config menu
  997. //#define LOG_PERMANENT_SERVICE_LIFETIME 36000 // in seconds; service alert at startup after 10 hours of armed time
  998.  
  999. /* to add debugging code
  1000. not needed and not recommended for normal operation
  1001. will add extra code that may slow down the main loop or make copter non-flyable */
  1002. //#define DEBUG
  1003.  
  1004. /* Use this to trigger LCD configuration without a TX - only for debugging - do NOT fly with this activated */
  1005. //#define LCD_CONF_DEBUG
  1006.  
  1007. /* Use this to trigger telemetry without a TX - only for debugging - do NOT fly with this activated */
  1008. //#define LCD_TELEMETRY_DEBUG //This form rolls between all screens, LCD_TELEMETRY_AUTO must also be defined.
  1009. //#define LCD_TELEMETRY_DEBUG 6 //This form stays on the screen specified.
  1010.  
  1011. /* Enable string transmissions from copter to GUI */
  1012. //#define DEBUGMSG
  1013.  
  1014.  
  1015. /********************************************************************/
  1016. /**** ESCs calibration ****/
  1017. /********************************************************************/
  1018.  
  1019. /* to calibrate all ESCs connected to MWii at the same time (useful to avoid unplugging/re-plugging each ESC)
  1020. Warning: this creates a special version of MultiWii Code
  1021. You cannot fly with this special version. It is only to be used for calibrating ESCs
  1022. Read How To at http://code.google.com/p/multiwii/wiki/ESCsCalibration */
  1023. #define ESC_CALIB_LOW MINCOMMAND
  1024. #define ESC_CALIB_HIGH 2000
  1025. //#define ESC_CALIB_CANNOT_FLY // uncomment to activate
  1026.  
  1027. /**** internal frequencies ****/
  1028. /* frequenies for rare cyclic actions in the main loop, depend on cycle time
  1029. time base is main loop cycle time - a value of 6 means to trigger the action every 6th run through the main loop
  1030. example: with cycle time of approx 3ms, do action every 6*3ms=18ms
  1031. value must be [1; 65535] */
  1032. #define LCD_TELEMETRY_FREQ 23 // to send telemetry data over serial 23 <=> 60ms <=> 16Hz (only sending interlaced, so 8Hz update rate)
  1033. #define LCD_TELEMETRY_AUTO_FREQ 967 // to step to next telemetry page 967 <=> 3s
  1034. #define PSENSORFREQ 6 // to read hardware powermeter sensor 6 <=> 18ms
  1035. #define VBATFREQ PSENSORFREQ // to read battery voltage - keep equal to PSENSORFREQ unless you know what you are doing
  1036.  
  1037. /********************************************************************/
  1038. /**** Regression testing ****/
  1039. /********************************************************************/
  1040.  
  1041. /* for development only:
  1042. to allow for easier and reproducable config sets for test compiling, different sets of config parameters are kept
  1043. together. This is meant to help detecting compile time errors for various features in a coordinated way.
  1044. It is not meant to produce your flying firmware
  1045. To use:
  1046. - do not set any options in config.h,
  1047. - enable with #define COPTERTEST 1, then compile
  1048. - if possible, check for the size
  1049. - repeat with other values of 2, 3, 4 etc.
  1050. */
  1051. //#define COPTERTEST 1
  1052.  
  1053. /*************************************************************************************************/
  1054. /**** END OF CONFIGURABLE PARAMETERS ****/
  1055. /*************************************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment