1 #ifndef CONFIG_H_
2 #define CONFIG_H_
3
4 /*************************************************************************************************/
5 /**** 可配置参数 ****/
6 /*************************************************************************************************/
7 /*
8 这个文件由几个部分组成
9 * 要创建一个工作组合,您必须至少在1节中做出选择。
10 * 1 - 基本设置 - 您在基本设置中必须选择一个选项。
11 * 以你连接了4个通道的标准的电调和电机为例。
12 * 2 - 飞行器类型特定的选项,你可能要检查你的飞行器类型选项的设置
13 * 3 - 无线遥控系统的设置
14 * 4 - 替代的CPU和主板 - 如果你有
15 * 5 - 替代设置 - 选择替代的RX(SBU,PPM,等),替代ESC范围,等在这里
16 * 6 - 可选功能 - 这里有一些很好的功能可以启用(飞行的模式,LCD,遥测,电池监控等)
17 * 7 - 调试和开发 - 如果你知道你正在做什么,已经警告过你了。
18 *(ESC的动态校准,电机/支撑平衡,诊断,节省内存.....)
19 * 8 - 不推荐使用 - 这些功能将在将来的版本中删除
20 */
21 /* Notes:
22 * 1. 在注释中用(*)标记的参数被储存在eeprom中,并且可以通过串口监控器或LCD调节。
23 * 2. 在注释中用(**)标记的参数被储存在eeprom中,并且可以通过GUI调节
24 */
25
26
27 /*************************************************************************************************/
28 /***************** ***************/
29 /**************** SECTION 1 - 基本设置 *******/
30 /***************** ***************/
31 /*************************************************************************************************/
32
33 /************************** 多旋翼飞行器种类 ****************************/
34 //#define GIMBAL //自稳云台
35 //#define BI //两轴
36 //#define TRI //三轴
37 //#define QUADP //四轴十字模式
38 #define QUADX //四轴X模式
39 //#define Y4 //四轴Y模式
40 //#define Y6 //六轴Y模式
41 //#define HEX6 //六轴
42 //#define HEX6X //六轴X模式
43 //#define HEX6H // 新类型 六轴H模式
44 //#define OCTOX8 //八轴
45 //#define OCTOFLATP //八轴十字
46 //#define OCTOFLATX //八轴X
47 //#define FLYING_WING //飞翼
48 //#define VTAIL4 //四轴v尾
49 //#define AIRPLANE //固定翼
50 //#define SINGLECOPTER //单旋翼
51 //#define DUALCOPTER //双旋翼
52 //#define HELI_120_CCPM //120度CCPM直升机
53 //#define HELI_90_DEG //90度斜盘直升机
54
55 /**************************** 电机最小油门 *******************************/
56 /* 设定发送至电调(ESC,Electronic Speed Controller)的最小油门命令
57 该最小值允许电机运行在怠速上 即维持电机怠速的最低油门值. */
58 //#define MINTHROTTLE 1300 // 用于Turnigy Plush ESCs 10A
59 //#define MINTHROTTLE 1120 // 用于Super Simple ESCs 10A
60 //#define MINTHROTTLE 1064 // 特殊的ESC (simonk蜘蛛电调)
61 //#define MINTHROTTLE 1050 // 用于brushed ESC比如ladybird
62 #define MINTHROTTLE 1150 // (*)
63
64 /**************************** 电机最大油门 *******************************/
65 /* ESC全功率工作的最大值,该值最大可增至2000 */
66 #define MAXTHROTTLE 1850
67
68 /**************************** 最小命令 *******************************/
69 /* 该值用于未解锁时的ESC
70 在某些情况下,用于一些特殊的电调该值必须降至900,否则电调会初始化失败
71 OYUZIQI提示 用场效应管驱动空心杯时上电若微微转动可适当降低此数值*/
72 #define MINCOMMAND 1000
73
74 /********************************** I2C速度 ************************************/
75 //#define I2C_SPEED 100000L //100kHz普通模式,正品WPM必须使用该值
76 #define I2C_SPEED 400000L //400kHz快速模式,仅用于一些山寨WPM (可用于GY系列模块)
77
78 /*************************** 内部i2c上拉 ********************************/
79 /* 启用内部I2C上拉(在多数情况下,使用外部上拉更佳)(GY系列模块自带外部上拉) */
80 //#define INTERNAL_I2C_PULLUPS
81
82 /********************************** 循环周期时间 ******************************/
83 #define LOOP_TIME 2800
84
85 /**************************************************************************************/
86 /***************** 主控板与传感器定义 ******************/
87 /**************************************************************************************/
88
89 /*************************** 传感器组合板(传感器集成板) ********************************/
90 /* 如果你在使用特定的传感器板:
91 请提交改动到这个列表。
92 来自Alex的提示:我只有其中一些板子,对于其他板子,我不能确保好用,信息由遥控论坛生成,请小心使用 *
93 /*=======================友情提示==========================
94 下面有一些集成板子淘宝上可以淘到的,如GY_XX系列比较划算。
95 推荐GY_86,MPU6050\HMC5883L\MS5611的组合挺划算。BMP的180,085气压计确实不怎么样。
96 */
97
98
99 //#define FFIMUv1 // first 9DOF+baro board from Jussi, with HMC5843 <- confirmed by Alex
100 //#define FFIMUv2 // second version of 9DOF+baro board from Jussi, with HMC5883 <- confirmed by Alex
101 //#define FREEIMUv1 // v0.1 & v0.2 & v0.3 version of 9DOF board from Fabio
102 //#define FREEIMUv03 // FreeIMU v0.3 and v0.3.1
103 //#define FREEIMUv035 // FreeIMU v0.3.5 no baro
104 //#define FREEIMUv035_MS // FreeIMU v0.3.5_MS <- confirmed by Alex
105 //#define FREEIMUv035_BMP // FreeIMU v0.3.5_BMP
106 //#define FREEIMUv04 // FreeIMU v0.4 with MPU6050, HMC5883L, MS561101BA <- confirmed by Alex
107 //#define FREEIMUv043 // same as FREEIMUv04 with final MPU6050 (with the right ACC scale)
108 //#define NANOWII // the smallest multiwii FC based on MPU6050 + pro micro based proc <- confirmed by Alex
109 //#define PIPO // 9DOF board from erazz
110 //#define QUADRINO // full FC board 9DOF+baro board from witespy with BMP085 baro <- confirmed by Alex
111 //#define QUADRINO_ZOOM // full FC board 9DOF+baro board from witespy second edition
112 //#define QUADRINO_ZOOM_MS// full FC board 9DOF+baro board from witespy second edition <- confirmed by Alex
113 //#define ALLINONE // full FC board or standalone 9DOF+baro board from CSG_EU
114 //#define AEROQUADSHIELDv2
115 //#define ATAVRSBIN1 // Atmel 9DOF (Contribution by EOSBandi). requires 3.3V power.
116 //#define SIRIUS // Sirius Navigator IMU <- confirmed by Alex
117 //#define SIRIUSGPS // Sirius Navigator IMU using external MAG on GPS board <- confirmed by Alex
118 //#define SIRIUS600 // Sirius Navigator IMU using the WMP for the gyro
119 //#define SIRIUS_AIR // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com <- confirmed by Alex
120 //#define SIRIUS_AIR_GPS // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com with GPS/MAG remote located
121 //#define SIRIUS_MEGAv5_OSD // Paris_Sirius™ ITG3050,BMA280,MS5611,HMC5883,uBlox http://www.Multiwiicopter.com <- confirmed by Alex
122 //#define MINIWII // Jussi‘s MiniWii Flight Controller <- confirmed by Alex
123 //#define MICROWII // MicroWii 10DOF with ATmega32u4, MPU6050, HMC5883L, MS561101BA from http://flyduino.net/
124 //#define CITRUSv2_1 // CITRUS from qcrc.ca
125 //#define CHERRY6DOFv1_0
126 //#define DROTEK_10DOF // Drotek 10DOF with ITG3200, BMA180, HMC5883, BMP085, w or w/o LLC
127 //#define DROTEK_10DOF_MS // Drotek 10DOF with ITG3200, BMA180, HMC5883, MS5611, LLC
128 //#define DROTEK_6DOFv2 // Drotek 6DOF v2
129 //#define DROTEK_6DOF_MPU // Drotek 6DOF with MPU6050
130 //#define DROTEK_10DOF_MPU//
131 //#define MONGOOSE1_0 // mongoose 1.0 http://store.ckdevices.com/
132 //#define CRIUS_LITE // Crius MultiWii Lite
133 //#define CRIUS_SE // Crius MultiWii SE
134 //#define CRIUS_SE_v2_0 // Crius MultiWii SE 2.0 with MPU6050, HMC5883 and BMP085
135 //#define OPENLRSv2MULTI // OpenLRS v2 Multi Rc Receiver board including ITG3205 and ADXL345
136 //#define BOARD_PROTO_1 // with MPU6050 + HMC5883L + MS baro
137 //#define BOARD_PROTO_2 // with MPU6050 + slave MAG3110 + MS baro
138 //#define GY_80 // Chinese 10 DOF with L3G4200D ADXL345 HMC5883L BMP085, LLC
139 //#define GY_85 // Chinese 9 DOF with ITG3205 ADXL345 HMC5883L LLC
140 //#define GY_86 // Chinese 10 DOF with MPU6050 HMC5883L MS5611, LLC
141 #define GY_88 // Chinese 10 DOF with MPU6050 HMC5883L BMP085, LLC
142 //#define GY_521 // Chinese 6 DOF with MPU6050, LLC
143 //#define INNOVWORKS_10DOF // with ITG3200, BMA180, HMC5883, BMP085 available here http://www.diymulticopter.com
144 //#define INNOVWORKS_6DOF // with ITG3200, BMA180 available here http://www.diymulticopter.com
145 //#define MultiWiiMega // MEGA + MPU6050+HMC5883L+MS5611 available here http://www.diymulticopter.com
146 //#define PROTO_DIY // 10DOF mega board
147 //#define IOI_MINI_MULTIWII// www.bambucopter.com
148 //#define Bobs_6DOF_V1 // BobsQuads 6DOF V1 with ITG3200 & BMA180
149 //#define Bobs_9DOF_V1 // BobsQuads 9DOF V1 with ITG3200, BMA180 & HMC5883L
150 //#define Bobs_10DOF_BMP_V1 // BobsQuads 10DOF V1 with ITG3200, BMA180, HMC5883L & BMP180 - BMP180 is software compatible with BMP085
151 //#define FLYDUINO_MPU // MPU6050 Break Out onboard 3.3V reg
152 //#define CRIUS_AIO_PRO
153 //#define DESQUARED6DOFV2GO // DEsquared V2 with ITG3200 only
154 //#define DESQUARED6DOFV4 // DEsquared V4 with MPU6050
155 //#define LADYBIRD
156 //#define MEGAWAP_V2_STD // available here: http://www.multircshop.com <- confirmed by Alex
157 //#define MEGAWAP_V2_ADV
158 //#define HK_MultiWii_SE_V2 // Hobbyking board with MPU6050 + HMC5883L + BMP085
159 //#define HK_MultiWii_328P // Also labeled "Hobbybro" on the back. ITG3205 + BMA180 + BMP085 + NMC5583L + DSM2 Connector (Spektrum Satellite)
160 //#define RCNet_FC // RCNet FC with MPU6050 and MS561101BA http://www.rcnet.com
161 //#define RCNet_FC_GPS // RCNet FC with MPU6050 + MS561101BA + HMC5883L + UBLOX GPS http://www.rcnet.com
162 //#define FLYDU_ULTRA // MEGA+10DOF+MT3339 FC
163 //#define DIYFLYING_MAGE_V1 // diyflying 10DOF mega board with MPU6050 + HMC5883L + BMP085 http://www.indoor-flying.hk
164 //#define MultiWii_32U4_SE // Hextronik MultiWii_32U4_SE
165 //#define MultiWii_32U4_SE_no_baro // Hextronik MultiWii_32U4_SE without the MS561101BA to free flash-memory for other functions
166 //#define Flyduino9DOF // Flyduino 9DOF IMU MPU6050+HMC5883l
167 //#define Nano_Plane // Multiwii Plane version with tail-front LSM330 sensor http://www.radiosait.ru/en/page_5324.html
168
169 /*************************** 独立的传感器 ********************************/
170 /*
171 如果你已在上方选择了相应的组合板子,请跳过,保持以下注释状态即可
172 这里是用来设置你单独连接在I2C上的传感器模块。当然每样都单独买价格会高一些,如果你是豪,当我没说。
173 */
174 /* I2C陀螺仪 */
175 //#define WMP
176 //#define ITG3050
177 //#define ITG3200
178 //#define MPU3050
179 //#define L3G4200D
180 //#define MPU6050 //带了加速度
181 //#define LSM330 //带了加速度
182
183 /* I2C加速度计 */
184 //#define MMA7455
185 //#define ADXL345
186 //#define BMA020
187 //#define BMA180
188 //#define BMA280
189 //#define LIS3LV02
190 //#define LSM303DLx_ACC
191 //#define MMA8451Q
192
193 /* I2C气压计 */
194 //#define BMP085
195 //#define MS561101BA
196
197 /* I2C磁力计 */
198 //#define HMC5843
199 //#define HMC5883
200 //#define AK8975
201 //#define MAG3110
202
203 /* 声呐 */ // 目前用作显示用途 - 无控制代码支持
204 /* OYUZIQI提示:貌似bbs.5imx.com上有大神完成了代码,且国外论坛上有光流
205 http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=726172&page=1
206 http://www.multiwii.com/forum/viewtopic.php?f=7&t=1413
207 */
208 //#define SRF02 // use the Devantech SRF i2c sensors
209 //#define SRF08
210 //#define SRF10
211 //#define SRF235
212
213 /* ADC加速度计 */ // 用于来自sparkfun的5DOF,使用模拟针脚A1/A2/A3
214 //#define ADCACC
215
216 /* 强制你独有的的传感器方向 - 甚至覆盖集成dof板子特定的默认值 */
217 //#define FORCE_ACC_ORIENTATION(X, Y, Z) {imu.accADC[ROLL] = Y; imu.accADC[PITCH] = -X; imu.accADC[YAW] = Z;}
218 //#define FORCE_GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] = -Y; imu.gyroADC[PITCH] = X; imu.gyroADC[YAW] = Z;}
219 //#define FORCE_MAG_ORIENTATION(X, Y, Z) {imu.magADC[ROLL] = X; imu.magADC[PITCH] = Y; imu.magADC[YAW] = Z;}
220
221 /* 板子方向转移 */
222 /* 如果你的机架设计仅用于+模式,并且你不能物理上将飞控旋转至用于X模式飞行(反之亦然)
223 * 你可以使用其中一个选项虚拟旋转传感器45度,然后通过飞行模式设定多旋翼飞行器的类型。
224 * 检查电机顺序与旋转方向是否与新的“前方”匹配!仅使用其中一项注释! */
225 //#define SENSORS_TILT_45DEG_RIGHT // 将“前方”顺时针旋转45度
226 //#define SENSORS_TILT_45DEG_LEFT // 将“前方”逆时针旋转45度
227
228
229 /*************************************************************************************************/
230 /***************** ***************/
231 /**************** SECTION 2 - 飞行器类型特定的选项 *******/
232 /***************** ***************/
233 /*************************************************************************************************/
234 /******************************** PID控制算法 *********************************/
235 /* 单独选择一个PID控制算法
236 * 1 = 演进 oldschool 算法(类似于V2.2)
237 * 2 = 新的实验算法 来自 Alex Khoroshko - 无技术支持 - http://www.multiwii.com/forum/viewtopic.php?f=8&t=3671&start=10#p37387
238 * */
239 #define PID_CONTROLLER 1
240
241 /* NEW: 不再使用伺服飞行器种类 (需要修复)) <== NEEDS FIXING - MOVE TO WIKI */
242 #define YAW_DIRECTION 1
243 //#define YAW_DIRECTION -1 // 如果你想反向修正偏航方向
244
245 #define ONLYARMWHENFLAT //阻止飞行器倾斜时解锁
246
247 /******************************** 锁定/解锁 *********************************/
248 /* 可以禁止使用摇杆组合进行锁定/解锁电机。
249 * 在多数情况下,选择其中一种通过发射机摇杆锁定/解锁电机的选项即可 */
250 #define ALLOW_ARM_DISARM_VIA_TX_ROLL //通过翻滚(副翼)解锁
251 //#define ALLOW_ARM_DISARM_VIA_TX_YAW //通过转向(尾舵)解锁(默认)
252
253 /******************************** 舵机 *********************************/
254 /* 舵机连接在哪里以及如何设置可以在这里找到
255 * http://www.multiwii.com/wiki/index.php?title=Config.h#Servos_configuration
256 */
257
258
259 /* 如果你想预定最小/中间/最大值为伺服正确后flashing,
260 因为物理因素限制伺服行程的设置,您必须启用并设置所有三以下选项* /
261 //#define SERVO_MIN {1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020} //舵机最小值(jpno1 注)
262 //#define SERVO_MAX {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000} //舵机最大值(jpno1 注)
263 //#define SERVO_MID {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500} // (*)舵机中立点(jpno1注)
264 //#define FORCE_SERVO_RATES {30,30,100,100,100,100,100,100} // 0=正向 1=反向
265
266 /*********************** 相机稳定 ***********************/
267 /* 以下几行仅用于pitch/roll倾斜稳定系统。去除注释第一或第二行来激活它 */
268 //#define SERVO_MIX_TILT //混合模式(用于十字模式) (jpno1注)
269 //#define SERVO_TILT // 普通x模式适用(jpno1注)
270
271 /* 相机触发设置 : 激发路径显示在GUI, 使用A2作为舵机输出在promini */
272 // 触发路径可以设置 (*GUI*) or 或者通过AUX铺助通道
273 //#define CAMTRIG
274 #define CAM_TIME_HIGH 1000 // 高电平时间(毫秒)
275
276 /*********************** 飞机 ***********************/
277 //#define USE_THROTTLESERVO // 用于在油门上使用标准50Hz舵机。
278
279 //#define FLAPPERONS AUX4 // 混合襟翼与副翼。
280 #define FLAPPERON_EP { 1500, 1700 } // 用于襟翼双向切换的端点,另外可设为{1020,2000}并在遥控上编程。
281 #define FLAPPERON_INVERT { -1, 1 } // 改变襟副翼的方向{ Wing1, Wing2 }
282
283 //#define FLAPS // 传统移动 SERVO3.
284 //#define FLAPSPEED 3 //使襟翼移动变慢,值越高速度越快。
285
286 /*********************** 直升机与飞机通用 ***********************/
287
288 /* 调节器:试图通过螺距和电压的改变维持转速
289 * 预测方法:观察输入信号与电压并猜测适当的修正。
290 * (油门曲线必须为调节器留有空间,所以0-50-75-80-80是可以的,不可以为0-50-95-100-100。
291 * 可以通过aux开关切换
292 */
293 //#define GOVERNOR_P 7 // (*) 比例因子。更大的值 -> 更大的油门增量。必须>=1;0 = 关闭
294 //#define GOVERNOR_D 4 // (*) 衰减时间。更大的值 -> 油门回到正常需要更长时间。 必须>=1;
295 //#define VOLTAGEDROP_COMPENSATION // 电压影响校正
296
297 /*********************** 直升机 ***********************/
298 /* 控制总距的通道 */
299 #define COLLECTIVE_PITCH THROTTLE
300
301 /* 限制总距的范围。100%为每个方向的最大范围,还有零螺距的位置 */
302 #define COLLECTIVE_RANGE { 80, 0, 80 }// {最小%,从1500开始的零螺距偏移,最大%}。
303 #define YAWMOTOR 0 // 如果一个电机用作YAW则设为1,否则设为0。
304
305 /* 用于120直升机的舵机混控,使用分数1/10(例.5 = 5/10 = 1/2)
306 {Coll,Nick,Roll} */
307 #define SERVO_NICK { +10, -10, 0 }
308 #define SERVO_LEFT { +10, +5, +10 }
309 #define SERVO_RIGHT { +10, +5, -10 }
310
311 /* 限制用于Roll & Nick最大控制,范围0-100% */
312 #define CONTROL_RANGE { 100, 100 } // { ROLL,PITCH }
313
314 /* 使用舵机代码驱动油门输出。用模拟舵机驱动IC引擎上的油门时,你会需要此项。
315 如果不启用,油门输出会被看做电机输出,所以它可以驱动电调 */
316 //#define HELI_USE_SERVO_FOR_THROTTLE
317
318 /*********************** 你的独立混控 ***********************/
319 /* 如果你想要覆盖一个选存的混合表中的条目,你可能想要避免
320 * 在每个版本一遍又一遍的编辑mixTable()函数
321 * 操作方式:http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_Mixing
322 */
323 //#define MY_PRIVATE_MIXING "filename.h" 更改filename.h为你自己的默认文件(jpno1注)
324
325 /*********************** y你的默认参数 ***********************/
326 /* 如果你想要覆盖一个选存的混合表中的条目,你可能想要避免
327 * 在每个版本一遍又一遍的编辑 LoadDefaults() 函数
328 * http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_defaults
329 */
330 //#define MY_PRIVATE_DEFAULTS "filename.h" 更改filename.h为你自己的默认文件(jpno1注)
331
332
333 /*************************************************************************************************/
334 /***************** ***************/
335 /**************** SECTION 3 - 无线遥控系统设置 *******/
336 /***************** ***************/
337 /*************************************************************************************************/
338
339 /* 提示:如果你使用的是标准接收机,不必取消本节的一些注释 */
340
341 /**************************** 扩展辅助状态 ***********************************/
342 /* 如果你启用这个设置,在AUX通道(aux1-aux4)通道,你可以使用六个档位。
343 注意:能使用6个档位的只有wingui 2.3或者更新的版本地面站。multiwiiconf还不支持
344 档位值
345 1000-1230
346 1231-1360
347 1361-1490
348 1491-1620
349 1621-1749
350 1750-
351
352 */
353
354 //#define EXTENDED_AUX_STATES
355
356
357 /**************************************************************************************/
358 /******** 特殊接收机类型 ********************/
359 /**************************************************************************************/
360
361 /**************************** PPM Sum接收机 ***********************************/
362 /* 下列几行仅用于特定的仅有一个PPM sum信号的接收机,接在数字针脚2上
363 根据你的遥控品牌选择相应的行。当你的PPM顺序不同时,你可以随意修改顺序 */
364 //#define SERIAL_SUM_PPM PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Graupner/Spektrum
365 //#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Robe/Hitec/Futaba
366 //#define SERIAL_SUM_PPM ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Multiplex
367 //#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于一些韩国的/日本三和/其它
368
369 // 解除下面这行注释以允许连接PPM_SUM接收机至MEGA板上的标准油门针脚(例.CRIUS AIO上的A8)
370 //#define PPM_ON_THROTTLE
371
372 /********************** Spektrum卫星接收机 *******************************/
373 /* 以下几行仅用于Spektrum卫星接收机
374 Spektrum卫星系列是3V设备。不要连接至5V!
375 对于MEGA板,将灰线连接到RX1,19针脚上。黑线接地。橙线连接到Mega板的3.3V上(或其他3V至3.3V的电源)。
376 对于PROMINI,将灰线连接到RX0。黑线接地。 */
377 //#define SPEKTRUM 1024
378 //#define SPEKTRUM 2048
379 //#define SPEK_SERIAL_PORT 1 // Pro Mini与其他单串口的板子上只能设为0;在所有基于Mega的板子上设为你选择的0,1,2(在Mega上默认为1)。
380 //**************************
381 // 定义此项允许Spektrum或兼容机远程接收机(也就是卫星)通过配置GUI对频。
382 // 对频模式与上述的相同,只要你的发射机支持。
383 // 接地,电源,信号必须来自三个邻近的针脚。
384 // 默认下,它们为接地=4,电源=5,信号=6。这些针脚在多数MultiWii扩展板上都为一排。可在下方覆盖针脚。
385 // 通常需要在电源针脚上使用3.3V稳压器!!如果你的卫星在对频时停摆(闪烁,但不会常亮停止闪烁),将所有的针脚连接至5V。
386 //**************************
387 // 对于Pro Mini,用于卫星的属于FTDI的连接器可以拔掉,并移至那三个相邻针脚。
388 //#define SPEK_BIND //解除注释以开启Spektrum卫星对频支持。没有它代码可节省约420字节。
389 //#define SPEK_BIND_GROUND 4
390 //#define SPEK_BIND_POWER 5
391 //#define SPEK_BIND_DATA 6
392
393 /******************************* SBUS接收机 ************************************/
394 /* 下面这行仅用于Futaba S-Bus接收机在MEGA板上的RX1的情况(串口1)。
395 你必须反转S-Bus-串口信号,例如使用十六进制反相器像是IC SN74 LS 04 */
396 //#define SBUS
397 //#define SBUS_SERIAL_PORT 1
398 #define SBUS_MID_OFFSET 988 //SBUS Mid-Point at 1500
399
400 /******************************* HOTT 接收机 ************************************/
401 /* Graupner Hott HD */
402 //#define SUMD PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4
403 //#define RX_SERIAL_PORT 1
404
405 /*************************************************************************************************/
406 /***************** ***************/
407 /**************** SECTION 4 - 替代的CPU和主板 *******/
408 /***************** ***************/
409 /*************************************************************************************************/
410
411 /**************************************************************************************/
412 /******** Promini板专用设置 ********************/
413 /**************************************************************************************/
414
415 /************************** 六轴电机 5 & 6 针脚 *******************************/
416 /* 用A0与A1针脚代替D5与D6针脚,用于6个电机配置与promini配置
417 该模式允许在promini上标准接收机的使用
418 (不必使用PPM sum接收机) */
419 //#define A0_A1_PIN_HEX
420
421 /********************************* Aux 2 针脚 ***********************************/
422 /* 让你可以使用针脚8或针脚12作为遥控的AUX2输入(只可启用一个,不可全部启用)
423 如果启用它会使功率针脚(针脚12)或蜂鸣针脚(针脚8)失效 */
424 //#define RCAUXPIN8
425 //#define RCAUXPIN12
426
427
428 /**************************************************************************************/
429 /***************** Teensy 2.0 支持 ******************/
430 /**************************************************************************************/
431 /* 解除此项如果你使用的是使用teensyduino的teensy 2.0
432 它需要运行在16MHz */
433 //#define TEENSY20
434
435
436 /**************************************************************************************/
437 /******** 用于ProMicro,Leonardo和其他Atmega32u4板子的设置 ***********/
438 /**************************************************************************************/
439
440 /********************************* 针脚布局 **********************************/
441 /* 如果所有针脚都能使用,激活此项可获得更好的针脚布局 => 在ProMicro上不可用 */
442 //#define A32U4ALLPINS
443
444 /********************************** PWM设置 **********************************/
445 /* 激活全部6个硬件PWM输出,电机5 = D11,电机6 = D13。
446 提示:不可用于sparkfun promicro(针脚11 & 13未被引出)
447 如果激活:
448 电机1-6 = 10位硬件PWM
449 电机7-8 = 8位软件PWM
450 舵机 = 8位软件PWM
451 如果未激活:
452 电机1-4 = 10位硬件PWM
453 电机5-8 = 10位软件PWM
454 舵机 = 10位软件PWM */
455 //#define HWPWM6
456
457 /********************************** Aux 2 针脚 **********************************/
458 /* AUX2针脚在RXO针脚上 */
459 //#define RCAUX2PINRXO
460
461 /* aux2针脚在D17针脚上(RXLED) */
462 //#define RCAUX2PIND17
463
464 /********************************** 蜂鸣针脚 **********************************/
465 /* 此项将蜂鸣针脚从TX0移动至D8以使用ppm sum或spectrum sat.接收机(如果启用了A32U4ALLPINS则不需此项) */
466 //#define D8BUZZER
467
468 /*********************** Promicro版本相关 ****************************/
469 /* 反转状态LED用于Promicro版本10 */
470 //#define PROMICRO10
471
472
473 /**************************************************************************************/
474 /******** 默认针脚分配调整 ********************/
475 /**************************************************************************************/
476
477 /* 仅在你必须改变默认针脚分配时才启用其中一项,例:你的板子没有特定针脚 */
478 /* 你可能需要依据期望的针脚给PINx与PORTx加上#移位! */
479
480 //#define OVERRIDE_V_BATPIN A0 // 代替A3 //模拟针脚3
481
482 //#define OVERRIDE_PSENSORPIN A1 // 代替A2 //模拟针脚2
483
484 //#define OVERRIDE_LEDPIN_PINMODE pinMode (A1, OUTPUT); // 使用A1代替d13
485 //#define OVERRIDE_LEDPIN_TOGGLE PINC |= 1<<1; // PINB |= 1<<5; //切换LED针脚状态(数字针脚13)
486 //#define OVERRIDE_LEDPIN_OFF PORTC &= ~(1<<1); // PORTB &= ~(1<<5);
487 //#define OVERRIDE_LEDPIN_ON PORTC |= 1<<1; // was PORTB |= (1<<5);
488
489 //#define OVERRIDE_BUZZERPIN_PINMODE pinMode (A2, OUTPUT); // 使用A2代替d8
490 //#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2 //PORTB |= 1;
491 //#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2); //PORTB &= ~1;
492
493 /*************************************************************************************************/
494 /***************** ***************/
495 /**************** SECTION 5 - 替代设置 *******/
496 /***************** ***************/
497 /*************************************************************************************************/
498
499 /****** 串行速率 *********************************/
500 /* 此为每个串口的速率 */
501 #define SERIAL0_COM_SPEED 115200
502 #define SERIAL1_COM_SPEED 115200
503 #define SERIAL2_COM_SPEED 115200
504 #define SERIAL3_COM_SPEED 115200
505
506 /* 当I2C总线有错误时,我们可在很短的时间内中立化相关值。用微秒表示
507 它仅与至少有一个WMP的配置相关 */
508 #define NEUTRALIZE_DELAY 100000
509
510 /**************************************************************************************/
511 /******** 陀螺仪滤波器 ********************/
512 /**************************************************************************************/
513
514 /********************* 特定的几款陀螺仪的低通滤波器 ****************************/
515 /* ITG3200 & ITG3205 的低通滤波设置. 如果你不能减小飞行器震动,你可以尝试
516 逐步降低低通滤波器的频率,一旦抖动消失就可以保持相应滤波设置
517 它对回馈引起的摆动不起作用,所以只在飞行器随机抽动并且所有抑制和平衡设置失效的时候才修改它。只取消注释其中一项!
518 重要!改变低通滤波器设置将会改变PID的行为,所以在改变LPF后重新调整你的PID。
519 支持低通滤波的陀螺仪模块:ITG3050, ITG3200, MPU3050, MPU6050*/
520 //#define GYRO_LPF_256HZ // 此为默认设置,不需要取消注释,只作为参考
521 //#define GYRO_LPF_188HZ
522 //#define GYRO_LPF_98HZ
523 //#define GYRO_LPF_42HZ
524 #define GYRO_LPF_20HZ
525 //#define GYRO_LPF_10HZ
526 //#define GYRO_LPF_5HZ // 只在极端情况下使用此项,更应该换电机和/或螺旋桨 -- 此设置不能在ITG3200陀螺仪上工作
527
528 /****** 陀螺仪平滑化 **********************************/
529 /* GYRO_SMOOTHING.在你不能消除振动的情况下,_并且_是在尝试了低通滤波器选项_之后_,你
530 可尝试此通过平均化的陀螺仪平滑化。不适用于多旋翼飞行器!
531 在有很多振动的直升机,飞机和飞翼(泡沫的)上可获得良好结果。*/
532 //#define GYRO_SMOOTHING {20, 20, 3} // (*) 分别为roll, pitch, yaw的平均化范围
533
534 /************************ 移动平均陀螺仪 **********************************/
535 //#define MMGYRO 10 // (*) 激活用于陀螺仪的移动平均函数
536 //#define MMGYROVECTORLENGTH 15 // 移动平均向量的长度(用于可调节的MMGYRO的最大值
537 /* 移动平均舵机云台信号输出 */
538 //#define MMSERVOGIMBAL // 激活用于舵机云台的输出移动平均函数
539 //#define MMSERVOGIMBALVECTORLENGHT 32 // 移动平均向量的长度
540
541 /************************ 模拟读取 ********************************** /
542 /*如果你想更快的模拟读取,注释它。它可能会导致不准确的结果,特别是对多个模拟通道*/
543 //#define FASTER_ANALOG_READS
544
545 /*************************************************************************************************/
546 /***************** ***************/
547 /**************** SECTION 6 - 可选功能 *******/
548 /***************** ***************/
549 /*************************************************************************************************/
550
551 /************************ 解锁后重置气压计高度 ********************/
552 /* When unchecked a calibration of the baro altitude is preformed every time arming is activated */
553 #define ALTITUDE_RESET_ON_ARM
554
555 /************************ 油门随着角度补偿 ********************/
556 /* 可以让你飞机倾斜的时候不要掉高度。根据角度增加油门,这是可以开下来的,但是要根据飞机不同来调节。免得角度一倾斜,油门窜得太高。
557 最初构想 by Kraut Rob, first implementation HAdrian */
558
559 //#define THROTTLE_ANGLE_CORRECTION 40
560
561 /*** 无头模式 : 起飞点和飞行器的连线将成为控制方向 ***/
562 #define HEADFREE
563
564 /************************* 高级 Headfree 无头模式 ********************/
565 /* In Advanced Headfree mode when the copter is farther than ADV_HEADFREE_RANGE meters then
566 the bearing between home and copter position will become the control direction
567 IF copter come closer than ADV_HEADFREE_RANGE meters, then the control direction freezed to the
568 bearing between home and copter at the point where it crosses the ADV_HEADFREE_RANGE meter distance
569 first implementation by HAdrian, mods by EOSBandi
570 在高级无头模式下,当飞行机超过ADV_HEADFREE_RANGE定义的范围,
571 起飞点和飞行器的连线将成为控制方向, 当飞行器飞入ADV_HEADFREE_RANGE定义范围,那么控制方向将锁定为原点和飞行器飞入ADV_HEADFREE_RANGE
572 范围内时位置的连线,
573 */
574
575 //#define ADVANCED_HEADFREE //去掉注释开启高级无头模式
576 //#define ADV_HEADFREE_RANGE 15 //高级无头模式范围米.
577
578
579 /************************ 连续的陀螺仪校准 ********************/
580 /* 如果在校准过程中飞行器被移动,陀螺仪校准将会重复。 */
581 //#define GYROCALIBRATIONFAILSAFE
582
583 /************************ AP飞行模式 **********************************/
584 /* 临时禁用GPS_HOLD_MODE(GPS保持模式),让移动摇杆时可以调整定点位置。*/
585 #define AP_MODE 40 // Create a deadspan for GPS.
586
587 /************************ 辅助特技练习器 ************************************/
588 /* 在自动复原辅助下训练特技。该值设定ANGLE_MODE接管的点。
589 记住首先激活ANGLE_MODE!...
590 值为200将会给你一个很明显的转换 */
591 //#define ACROTRAINER_MODE 200 // http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944#p17437
592
593
594 /******** 失控保护设置 ********************/
595 /* 失控保护检查四个控制通道CH1-CH4的脉冲。如果脉冲丢失或低于985us(在这四个通道的任意一个上)
596 失控保护程序就会启动。从失控保护检测到,再经过FAILSAFE_DELAY的时间,自稳模式就会开启(如果加速度或鸡腿柄可用),
597 PITCH,ROLL和YAW被置中,油门设为FAILSAFE_THR0TTLE的值。你必须设定该值使下降速度在1m/s左右
598 以获得最佳结果。该值取决于你的配置,总重量和一些其他参数。接下来,在FAILSAFE_OFF_DELAY之后,飞行器会被锁定,
599 并且电机会停止。如果遥控脉冲在到达FAILSAFE_OFF_DELAY时间之前恢复,在很短的保护时间之后遥控就会恢复正常。 */
600 //#define FAILSAFE // 解除注释以激活failsafe函数
601 #define FAILSAFE_DELAY 10 // 用于丢失信号之后失控保护激活之前的保护时间。1步=0.1秒 - 示例中为1秒
602 #define FAILSAFE_OFF_DELAY 200 // 用于电机停止前的着陆时间,以0.1秒为单位。1步=0.1秒 - 示例中为20秒
603 #define FAILSAFE_THROTTLE (MINTHROTTLE + 200) // (*) 用于降落的油门级别 - 可与MINTHROTTLE相关联 - 如本例所示
604
605 #define FAILSAFE_DETECT_TRESHOLD 985
606
607
608 /***************** DFRobot LED 光环 *********************************/
609 /* I2C DFRobot LED光环通讯 */
610 //#define LED_RING
611
612 /******************************** LED闪光灯 ***********************************/
613 //#define LED_FLASHER
614 //#define LED_FLASHER_DDR DDRB
615 //#define LED_FLASHER_PORT PORTB
616 //#define LED_FLASHER_BIT PORTB4
617 //#define LED_FLASHER_INVERT
618 //#define LED_FLASHER_SEQUENCE 0b00000000 // leds关闭
619 //#define LED_FLASHER_SEQUENCE_ARMED 0b00000101 // 创建双闪
620 //#define LED_FLASHER_SEQUENCE_MAX 0b11111111 // 全照明
621 //#define LED_FLASHER_SEQUENCE_LOW 0b00000000 // 无照明
622
623
624 /******************************* 着陆灯 *********************************/
625 /* 着陆灯
626 使用一个输出针脚控制着陆灯。
627 它与从声纳获得的高度数据结合时
628 可以自动开关。 */
629 //#define LANDING_LIGHTS_DDR DDRC
630 //#define LANDING_LIGHTS_PORT PORTC
631 //#define LANDING_LIGHTS_BIT PORTC0
632 //#define LANDING_LIGHTS_INVERT
633
634 /* 依据声纳传来的数在地面之上的高度(以cm为单位) */
635 //#define LANDING_LIGHTS_AUTO_ALTITUDE 50
636
637 /* 让闪光灯的样式应用于着陆灯LED */
638 //#define LANDING_LIGHTS_ADOPT_LED_FLASHER_PATTERN
639
640 /************************* 飞行时加速度计校准 *****************************/
641 /* 此项会激活加速度计飞行时校准 */
642 //#define INFLIGHT_ACC_CALIBRATION
643
644 /******************************* OSD切换 *************************************/
645 // 此项会添加一个可被OSD解读的激活状态的选框(比如说开关覆盖物)
646 //#define OSD_SWITCH
647
648 /**************************************************************************************/
649 /*********************** 发射机-相关 **************************/
650 /**************************************************************************************/
651
652 /* 在摇杆中点周围引入一个死区(译者注:无作用控制区)
653 必须大于零,如果你不需要在roll,pitch和yaw上的死区就注释掉它 */
654 #define DEADBAND 6
655
656 /**************************************************************************************/
657 /*********************** GPS **************************/
658 /**************************************************************************************/
659
660 /* 启用GPS 模拟器 (只支持NMEA协议)*/
661 //#define GPS_SIMULATOR
662
663 /* GPS使用一个串口
664 如果启用,在此定义Arduino串口号与UART速度
665 注:如在NMEA模式只有RX针脚是被使用的,GPS不可被multiwii配置
666 在NMEA模式下,GPS必须配置为输出GGA与RMC NMEA语句(在大部分GPS设备中通常为默认配置)
667 至少为5Hz更新速率。解除第一行注释来选择用于GPS的arduino串口 */
668
669 //#define GPS_SERIAL 2
670 // flyduino v2应设为2。此为arduino MEGA上的串口号
671 // PRO_MINI(ex GPS_PRO_MINI)必须为0
672 // 提示: 现在GPS可以共享同一端口的MSP。唯一的限制是不同时使用它,并使用相同的端口速度。
673
674 // 避免使用115200波特因为16MHz Arduino 115200波特率超过2%速度误差(57600有0.8%的误差)
675 //#define GPS_BAUD 38400 // GPS_BAUD will override SERIALx_COM_SPEED for the selected port
676
677 /* GPS协议
678 NMEA - 标准NMEA协议。需要GGA,GSA与RMC语句
679 UBLOX - U-Blox二进制协议,使用来自源码树的ublox配置文件(u-blox-config.ublox.txt)
680 MTK_BINARY16 与 MTK_BINARY19 - 基于MTK3329芯片的GPS,使用DIYDrones二进制固件(v1.6 或 v1.9)
681 在使用UBLOX与MTK_BINARY时你不需要在multiwii代码中使用GPS_FILTERING!!! */
682
683
684 #define NMEA
685 //#define UBLOX
686 //#define MTK_BINARY16
687 //#define MTK_BINARY19
688 //#define INIT_MTK_GPS // 初始化MTK GPS。使其使用选定的速度,5Hz更新速率与GGA & RMC语句或二进制的设置
689
690
691 /* I2C GPS设备,使用一个独立的arduino + GPS设备制作
692 包含一些导航函数
693 由EOSBandi贡献 http://code.google.com/p/i2c-gps-nav/
694 你必须使用I2CGpsNav r33以上版本 */
695 /* all functionnalities allowed by SERIAL_GPS are now available for I2C_GPS: all relevant navigation computations are gathered in the main FC */
696
697 #define I2C_GPS
698
699 // 如果你的I2C GPS板有声纳支持
700 //#define I2C_GPS_SONAR
701
702 /* 通过LED闪烁表明GPS搜到了至少5颗有效的卫星 - 由MIS修改 - 使用常亮的LED(CRIUS AIO上为黄色)led作为星数指示器工作
703 - GPS无定位 -> LED闪烁速度为收到GPS帧的速度
704 - 定位并且星数小于5 -> LED关闭
705 - 定位并且星数 >= 5 -> LED闪烁,闪一下表示5颗星,闪两下表示6颗星,三下表示7 ... */
706 #define GPS_LED_INDICATOR
707
708 // 启用MSP_WP命令,用于WinGUI显示与记录家与定点的位置
709 #define USE_MSP_WP
710
711 // 家的地点(HOME position)会在每次解锁时重置,解除注释此项来禁用它(你可以通过校准陀螺仪来设置家的地点)
712 //#define DONT_RESET_HOME_AT_ARM
713
714 /* 允许GPS导航控制头部方向 */
715
716 // 飞行器面对着航点飞行,磁场保持必须为此开启
717 #define NAV_CONTROLS_HEADING 1 //(**)
718 // true - 飞行器以尾部首先飞来
719 #define NAV_TAIL_FIRST 0 //(**)
720 // true - 当飞行器到达家的位置时他会旋转至起飞时的角度
721 #define NAV_SET_TAKEOFF_HEADING 1 //(**)
722
723 /* 从这里获取你的磁偏角:http://magnetic-declination.com/
724 转换度+分至小数的角度,通过 ==> 度+分*(1/60)
725 注意磁偏角的符号,它可为负或正(西或东) */
726 #define MAG_DECLINATION -1.55f //(中国广西南宁市江南区)
727
728 // 添加向前预测滤波以补偿GPS延迟。代码基于Jason Short领导的滤波器实现
729 #define GPS_LEAD_FILTER //(**)
730
731 // 添加5元素移动平均滤波器至GPS坐标,帮助消除GPS噪波但会增加延时,注释以禁用
732 // 仅支持NMEA协议的GPS
733 #define GPS_FILTERING //(**)
734
735 // 如果我们与航点在此距离以内,我们则认为已到达航点(以cm为单位)
736 #define GPS_WP_RADIUS 100 //(**)
737
738 // 安全的航路点的距离,如果第一个航路点的距离大于这个数,将不执行任务(单位:米)
739 //同时,下一个航点间的距离大于这个数任务也会被终止(也就是两个航点间距离不能大于这个数)
740 #define SAFE_WP_DISTANCE 500 //(**)
741
742 // 最大允许航行高度(米)高度自动控制不会超过这个高度
743 #define MAX_NAV_ALTITUDE 100 //(**)
744
745 //接近航点时的最小速度
746 #define NAV_SPEED_MIN 100 // cm/sec //(**)
747 //最大速度达到之间的航点
748 #define NAV_SPEED_MAX 400 // cm/sec //(**)
749 // 到达航点时减速到零(与nav_speed_min = 0类似)
750 #define NAV_SLOW_NAV 0 //(**)
751 // 在导航计算的偏航错误的权重因子(别改)
752 #define CROSSTRACK_GAIN .4 //(**)
753 //导航时的最大倾斜输出
754 #define NAV_BANK_MAX 3000 //(**)
755
756 //定义返回点高度。0是在返回点保持当时高度(米)
757 #define RTH_ALTITUDE 15 //(**)
758 //前往导航点前等待升高到预定高度(0-否,1-是)
759 #define WAIT_FOR_RTH_ALT 1 //(**)
760
761 //导航引擎接管气压定高模式工作
762 #define NAV_TAKEOVER_BARO 1 //(**)
763
764 //忽略油门杆的输入(只在气压定高模式)
765 #define IGNORE_THROTTLE 1 //(**)
766
767 //如果定义的范围大于0,飞行器将在超出此距离是自动切换到自动返航模式返回定义的返回点。
768 #define FENCE_DISTANCE 600
769
770 //这参数控制自动降落模式的降落速度. 100表示下降速度为50厘米/秒
771 #define LAND_SPEED 100
772
773
774 //#define ONLY_ALLOW_ARM_WITH_GPS_3DFIX // 限制飞控只能在GPS获取到三维定位数据后解锁
775
776 /**************************************************************************************/
777 /*********************** LCD/OLED - 显示设置 *********************/
778 /**************************************************************************************/
779
780 /* http://www.multiwii.com/wiki/index.php?title=Extra_features#LCD_.2F_OLED */
781
782 /***************************** LCD种类 **********************************/
783 /* 选择用于配置和遥测的LCD,见下方注解 */
784 //#define LCD_DUMMY // 无物理LCD附加。通过定义此与LCD_CONF,发射机遥杆可用于设置增益,通过观察LED闪烁。
785 //#define LCD_SERIAL3W // Alex的初始变体使用3条导线,使用rx针脚进行传输@固定的9600波特率
786 //#define LCD_TEXTSTAR // 串口LCD:Cat‘s Whisker品牌的LCD_TEXTSTAR模块CW-LCD-02(拥有4个输入按键用于选择菜单)
787 //#define LCD_VT100 // 串口LCD:vt100兼容终端仿真(blueterm,putty等)
788 //#define LCD_TTY // 串口LCD:用于通过线缆与arduino IDE“串口监视器”连接调整参数
789 //#define LCD_ETPP // I2C LCD:Eagle Tree品牌的Power Panel LCD,使用i2c(非串口)
790 //#define LCD_LCD03 // I2C LCD:LCD03,使用i2c
791 //#define LCD_LCD03S // 串口LCD:lcd03通过串口9600波特率通信。
792 //#define OLED_I2C_128x64 // I2C LCD: OLED http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
793 //#define OLED_DIGOLE // I2C OLED from http://www.digole.com/index.php?productID=550
794
795 /****************************** 显示设置 ***********************************/
796 //#define LCD_SERIAL_PORT 0 // 在Pro Mini以及其他单串口板上只能设为0,在任何基于Mega的板子上可设置为你的选择
797
798 //#define SUPPRESS_OLED_I2C_128x64LOGO // 禁用OLED logo显示来节省储存
799
800 /* 为获得更好的可读性,使用双倍字体高度。减少一半可见#行。
801 * 每个页面的下半部分以按住shift的键盘文字作为名字:
802 * 1 - ! , 2 - @ , 3 - # , 4 - $ , 5 - % , 6 - ^ , 7 - & , 8 - * , 9 - (
803 * 你必须同时添加到你的lcd.遥测.*序列中
804 */
805 //#define DISPLAY_FONT_DSIZE //目前只能应用于OLED_I2C_128x64 OLED_DIGOLE
806
807 /* 显示风格 - 通过LCD_ setting自动检测 - 仅在覆盖默认时激活 */
808 //#define DISPLAY_2LINES
809 //#define DISPLAY_MULTILINE
810 //#define MULTILINE_PRE 2 // 多行配置菜单#之前的行
811 //#define MULTILINE_POST 6 // 多行配置菜单#之前的行
812 //#define DISPLAY_COLUMNS 16
813 /******************************** 导航 ***********************************/
814 /* 用来导航LCD配置菜单的按键 */
815 #define LCD_MENU_PREV ‘p‘
816 #define LCD_MENU_NEXT ‘n‘
817 #define LCD_VALUE_UP ‘u‘
818 #define LCD_VALUE_DOWN ‘d‘
819
820 #define LCD_MENU_SAVE_EXIT ‘s‘
821 #define LCD_MENU_ABORT ‘x‘
822
823 /**************************************************************************************/
824 /*********************** LCD配置菜单 **************************/
825 /**************************************************************************************/
826
827 /* 如果你准备将LCD或OLED用于调整参数,那么解除本行注释
828 * http://www.multiwii.com/wiki/index.php?title=Extra_features#Configuration_Menu */
829 //#define LCD_CONF
830
831 /* 用于包含通过LCD进行AUX1 -> AUX4辅助开关切换的设置 */
832 //#define LCD_CONF_AUX
833
834 /* 可选排除一些功能 - 解除注释以禁用一些不需要的遥测页面或通道设置 */
835 //#define SUPPRESS_LCD_CONF_AUX2
836 //#define SUPPRESS_LCD_CONF_AUX34
837
838 /**************************************************************************************/
839 /*********************** LCD 遥测 **************************/
840 /**************************************************************************************/
841
842 /* to monitor system values (battery level, loop time etc. with LCD
843 * http://www.multiwii.com/wiki/index.php?title=LCD_Telemetry */
844
845 /******************************** 激活 ***********************************/
846 //#define LCD_TELEMETRY
847
848 /* 在解除注释于此的一个遥测页面组合中启用自动跳转。 */
849 //#define LCD_TELEMETRY_AUTO "123452679" // 升序显示1至9页
850 //#define LCD_TELEMETRY_AUTO "212232425262729" // 着重显示第2页
851
852 /* 手动步进序列;序列的第一页在启动时加载以允许无交互时显示 */
853 //#define LCD_TELEMETRY_STEP "0123456789" // 应包含一个0以允许关闭。
854
855 /* 可选地排除一些功能 - 解除注释以禁用一些不需要的遥测页面 */
856 //#define SUPPRESS_TELEMETRY_PAGE_1
857 //#define SUPPRESS_TELEMETRY_PAGE_2 // 传感器读数
858 //#define SUPPRESS_TELEMETRY_PAGE_3 // 复选框项
859 //#define SUPPRESS_TELEMETRY_PAGE_4 // 遥控输入
860 //#define SUPPRESS_TELEMETRY_PAGE_5 // 舵机和电机输出
861 //#define SUPPRESS_TELEMETRY_PAGE_6 // 电池电压
862 //#define SUPPRESS_TELEMETRY_PAGE_7 // gps
863 //#define SUPPRESS_TELEMETRY_PAGE_8 // 告警状态
864 //#define SUPPRESS_TELEMETRY_PAGE_9 // 循环和失败
865 //#define SUPPRESS_TELEMETRY_PAGE_R // 重置
866
867 /*可选的默认项目的一些遥测页面-完整的可用功能列表见LCD.h */
868 //#define LCD_TELEMETRY_PAGE1 { output_V, output_mAh, }
869 //#define LCD_TELEMETRY_PAGE2 { output_gyroX, output_gyroY, output_accZ, }
870 //#define LCD_TELEMETRY_PAGE9 { output_fails, output_annex, output_debug0, output_debug3, }
871
872 /********************************************************************/
873 /**** RSSI ****/
874 /********************************************************************/
875 //#define RX_RSSI
876 //#define RX_RSSI_PIN A3
877 //#define RX_RSSI_CHAN 8 //RSSI 注入指定的通道 (for PPM, Olrs, SBUS, etc.) (Starts at 0)
878
879 /********************************************************************/
880 /**** 蜂鸣器(BUZZER) ****/
881 /********************************************************************/
882 #define BUZZER
883 #define RCOPTIONSBEEP // 如果你想在遥控选项在通道Aux1至Aux4改变时让蜂鸣器响起,解除注释此项
884 #define ARMEDTIMEWARNING 480 // (*) 在解锁一段时间[s]后触发警报以保护锂电。(如果你的发射机没有倒计时)
885 //#define PILOTLAMP //如果你在使用X-Arcraft导航灯那么解除注释
886
887 /********************************************************************/
888 /**** 电池电压监控 ****/
889 /********************************************************************/
890 /* 用于V BAT(电池电压)监控
891 在电阻分压后,我们在模拟V_BAT针脚上应获得[0V;5V]->[0;1023]
892 通过R1=33k和R2=51k
893 vbat = [0;1023]*16/VBATSCALE
894 必须与#define BUZZER结合! */
895 #define TanVBAT //自己增加的建议的电压测量功能,需要同时启用VBAT(该模块淘宝可以搜索arduino 电压检测模块,就两块到七块这样,量程是最大25V的)
896 #define VBAT // 解除注释本行以激活vbat代码
897 #define VBATSCALE 131 // (*) 如果读取到的电池电压与真实电压不同,修改该值
898 #define VBATNOMINAL 126 // 12,6V满电标准电压 - 仅用于lcd.遥测
899 #define VBATLEVEL_WARN1 110 // (*) (**) 10,7V
900 #define VBATLEVEL_WARN2 100 // (*) (**) 9.9V
901 #define VBATLEVEL_CRIT 99 // (*) 9.3V - 临界情况:如果vbat持续低于该值,就会触发警报长响
902 #define NO_VBAT 16 // (*) 避免在没有电池时响起
903 #define VBAT_OFFSET 0 //抵消0.1volts,加入有用的齐纳二极管的电压值
904
905 /* 对多个电池进行监控
906 * 必须同时启用VBAT,VBAT_CELLS
907 */
908 //#define VBAT_CELLS
909 #define VBAT_CELLS_NUM 0 // 设置连接在模拟阵脚pin上的电池数量
910 #define VBAT_CELLS_PINS {A0, A1, A2, A3, A4, A5 } // 将此设置为模拟引脚序列
911 #define VBAT_CELLS_OFFSETS {0, 50, 83, 121, 149, 177 } // in 0.1 volts, gets added to voltage value - useful for zener diodes
912 #define VBAT_CELLS_DIVS { 75, 122, 98, 18, 30, 37 } // divisor for proportional part according to resistors - larger value here gives smaller voltage
913
914 /********************************************************************/
915 /**** 功率计(电池容量监控) ****/
916 /********************************************************************/
917
918 /* 启用电池能量消耗监控(以mAh考虑)
919 允许在GUI中或通过LCD设置警戒值
920 全部描述与操作方法请见此 http://www.multiwii.com/wiki/index.php?title=Powermeter
921 有两个选项:
922 1 - 硬件: - (使用硬件传感器,配置后将获得相当不错的结果)
923 2 - 软件: - (使用plush与mystery电调可获得+-5%的料号结果,使用SuperSimple电调结果不佳) */
924 //#define POWERMETER_SOFT
925 //#define POWERMETER_HARD
926 #define PSENSORNULL 510 // (*) 设置0电流时analogRead()的值;I=0A时,我的传感器得到1/2 Vss;约为2.49伏;
927
928 #define PINT2mA 132 // (*) 用于遥测显示:一个用在arduino模拟转换为mA时的整数(例4.9 / 37 * 100
929 /*soft: use fictional value, start with 100.
930 for hard and soft: larger PINT2mA will get you larger value for power (mAh equivalent) */
931 //#define WATTS // 计算并显示实际瓦(=伏特×安培)需要powermeter_hard和VBAT
932
933 /********************************************************************/
934 /**** 高度保持 ****/
935 /********************************************************************/
936
937 /*定高模式(AltHold)是使用自动油门,试图保持目前的高度的稳定模式。
938 定高模式时高度仍然可以通过提高或降低油门控制,但中间会有一个油门死区,油门动作幅度超过这个死区时,飞行器才会响应你的升降动作
939 当进入任何带有自动高度控制的模式,你目前的油门将被用来作为调整油门保持高度的基准。
940 在进入高度保持前确保你在悬停在一个稳定的高度。
941 飞行器将随着时间补偿不良的数值。只要它不会下跌过快,就不会有什么问题。
942 离开高度保持模式时请务必小心,油门位置将成为新的油门,
943 如果不是在飞行器的中性悬停位置,将会导致飞行器迅速下降或上升。默认设置是 +/-50 uncommend and change the value below if you want to change it. */
944 #define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 50
945 //#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.
946
947
948 /* 解除注释以禁用高度保持特性。
949 * 此项可用于所有下列应用
950 * + 你有一个气压传感器
951 * + 想要高度值输出
952 * + 不需要使用高度保持特性
953 * + 想要节省储存空间
954 */
955 //#define SUPPRESS_BARO_ALTHOLD
956
957 /********************************************************************/
958 /**** 高度爬升率测定器 (高度仪) ****/
959 /********************************************************************/
960
961 /* 启用以获得来自上升/下降中的飞行器/飞机的声频反馈。
962 * 需要工作中的气压计。
963 * 目前,输出会通过串行线发送至启用中的vt100终端程序。
964 * 有两种方式可选(启用其中一个或同时启用)
965 * 方式1:使用来自气压计的短期移动(更大的代码尺寸)
966 * 方式2:使用来自气压计的长期高度观察(更小的代码尺寸)
967 */
968 //#define VARIOMETER 12 // 可用值:12 = 方式 1 & 2 ;1 = 方式 1;2 = 方式 2
969 //#define SUPPRESS_VARIOMETER_UP // 如果不期望有用于向上移动的信号
970 //#define SUPPRESS_VARIOMETER_DOWN // 如果不期望有用于向下移动的信号
971 //#define VARIOMETER_SINGLE_TONE // 仅使用一个声调(响铃);对未打补丁的vt100终端是必需的
972
973 /********************************************************************/
974 /**** 板子命名 ****/
975 /********************************************************************/
976
977 /*
978 * 这个名字会与MultiWii版本号共同显示
979 * 在打开电源时显示在LCD上。
980 * 如果你没有显示设备那么你可以启用LCD_TTY并
981 * 使用arduino IDE的串口监控器来查看此信息。
982 *
983 * 你必须保持此处文本的格式!
984 * 它必须总共有16个字母,
985 * 最后4个字母将会被版本号覆盖。
986 */
987 #define BOARD_NAME "MultiWii V-.--"
988 // 123456789.123456
989
990 /************* 在EEPROM中支持多个配置参数文件 ************/
991 //#define MULTIPLE_CONFIGURATION_PROFILES
992
993 /************* do no reset constants when change of flashed program is detected ***********/
994 #define NO_FLASH_CHECK
995
996 /*************************************************************************************************/
997 /***************** ***************/
998 /**************** 第 7 部分 - 调试 & 开发者 **************/
999 /***************** ***************/
1000 /*************************************************************************************************/
1001
1002 #define VBAT_PRESCALER 16 //设置为16,如果vbatscale将超过255
1003
1004 /**************************************************************************************/
1005 /******** 使用扩展范围[0-2000]微秒的特殊电调 ********************/
1006 /**************************************************************************************/
1007 //#define EXT_MOTOR_RANGE // 在用场效应管驱动空心杯时必须注释它,否则电机上电就转
1008
1009 /**************************************************************************************/
1010 /******** 刷电调 ****************************************************************/
1011 /**************************************************************************************/
1012 // for 328p proc
1013 //#define EXT_MOTOR_32KHZ
1014 //#define EXT_MOTOR_4KHZ
1015 //#define EXT_MOTOR_1KHZ
1016
1017 // for 32u4 proc
1018 //#define EXT_MOTOR_64KHZ
1019 //#define EXT_MOTOR_32KHZ
1020 //#define EXT_MOTOR_16KHZ
1021 //#define EXT_MOTOR_8KHZ
1022
1023 /**************************************************************************************/
1024 /*********************** 电机,舵机和其他的预置 ***********************/
1025 /**************************************************************************************/
1026 /* 当油门命令在低位时电机将不会旋转
1027 这是立即停止电机的替代方案 */
1028 #define MOTOR_STOP
1029
1030 /* 一些遥控器的中立点不是1500。可以在此修改 */
1031 #define MIDRC 1500
1032
1033 /*********************** 舵机刷新率 ***********************/
1034 /* 默认50Hz舵机刷新率 */
1035 #define SERVO_RFR_50HZ
1036
1037 /* 升至160Hz舵机刷新率 .. 用于多数模拟舵机 */
1038 //#define SERVO_RFR_160HZ
1039
1040 /* 升至300Hz刷新率,它越快越好(100-300Hz取决于使用的舵机和舵机状态)。
1041 用于数字舵机
1042 不要用于模拟舵机!它们可能遭到破坏。(一些可以使用,但请非常小心) */
1043 //#define SERVO_RFR_300HZ
1044
1045 /*********************** 硬件PWM舵机 ***********************/
1046 /* 硬件PWM舵机输出用于Arduino Mega..移动至:
1047 Pitch = pin 44
1048 Roll = pin 45
1049 CamTrig = pin 46
1050 SERVO4 = pin 11 (aileron left for fixed wing or TRI YAW SERVO)
1051 SERVO5 = pin 12 (aileron right for fixed wing)
1052 SERVO6 = pin 6 (rudder for fixed wing)
1053 SERVO7 = pin 7 (elevator for fixed wing)
1054 SERVO8 = pin 8 (motor for fixed wing) */
1055
1056 /*此选项禁用其他用于舵机的软件PWM - 仅有五个硬件控制舵机可用 */
1057 #define MEGA_HW_PWM_SERVOS
1058
1059 /* HW PWM Servo outputs for 32u4 NanoWii, MicroWii etc. - works with either the variable SERVO_RFR_RATE or
1060 * one of the 3 fixed servo.refresh.rates *
1061 * Tested only for heli_120, i.e. 1 motor + 4 servos, moves..
1062 * motor[0] = motor = pin 6
1063 * servo[3] = nick servo = pin 11
1064 * servo[4] = left servo = pin 10
1065 * servo[5] = yaw servo = pin 5
1066 * servo[6] = right servo= pin 9
1067 */
1068 //#define A32U4_4_HW_PWM_SERVOS
1069
1070 #define SERVO_RFR_RATE 50 // In Hz, you can set it from 20 to 400Hz, used only in HW PWM mode for mega and 32u4
1071 //#define SERVO_PIN5_RFR_RATE 200 // separate yaw pwm rate.
1072 // In Hz, you can set it from 20 to 400Hz, used only in HW PWM mode for 32u4
1073
1074
1075 /********************************************************************/
1076 /**** 节约记忆体空间 ****/
1077 /********************************************************************/
1078
1079 /* 针对Flash和RAM内存的普遍短缺 leonardo m32u4 and others */
1080
1081 /**** 可以通过禁用串口命令处理来实现。***
1082 * 它_不会_对RXserial,Spektrum,GPS的处理产生影响。这些不会受到影响,仍可以照常工作。
1083 * 启用下列选项中其中一项或两项 */
1084
1085 /* 移除所有新MultiWii串行协议命令的处理。
1086 * 这将会禁用GUI,winGUI,android应用以及其他所有使用MSP的程序。
1087 * 你必须找到其他调试参数的方法(如LCD_CONF)或保持默认。
1088 * 如果你是通过i2c或串口/蓝牙使用LCD/OLED,可以放心使用 */
1089 //#define SUPPRESS_ALL_SERIAL_MSP // 节省约2700字节
1090
1091 /* 移除其他串行命令处理。
1092 * 包含通过串口操作lcd.配置菜单,lcd.遥测与永久.日志。
1093 * 通过在发射机上摇杆输入进行操作不会受到影响,操作起来是一样的。 */
1094 //#define SUPPRESS_OTHER_SERIAL_COMMANDS // 节省约0至100字节,取决于启用的特性
1095
1096 /**** 保证代码中无初始设置和复位的缺陷。
1097 这需要一个手动初始设置的PID等手动写defaults.mwi;
1098 reset in GUI will not work on PIDs
1099 */
1100 //#define SUPPRESS_DEFAULTS_FROM_GUI
1101
1102 //#define DISABLE_SETTINGS_TAB // Saves ~400bytes on ProMini
1103
1104 /********************************************************************/
1105 /**** 诊断 ****/
1106 /********************************************************************/
1107
1108 /* 记录像最大周期时间与其他可能的值
1109 记录值可通过LCD配置看到
1110 设为1,启用‘R‘选项来重置值,最大电流,最大高度
1111 设为2,添加最大/最小周期时间
1112 设为3,以每个电机为单位添加额外的功耗(它使用一个很大的数组并且很吃储存,如果POWERMETER <> PM_SOFT) */
1113 //#define LOG_VALUES 1
1114
1115 /* 永久记录至eeprom - 可在(多数)升级与参数重置中保留下来。
1116 * 常用于追踪控制板生命周期中的飞行次数等。
1117 * 写入至eeprom末端 - 不应与已储存的参数冲突。
1118 * 记录的值:累积的生存时间,#重启/重置/初始化事件,#解锁事件,#锁定事件,最后解锁时间,
1119 * #失控保护@锁定,#i2c_errs@锁定
1120 * 设置你的mcu的eeprom的尺寸以激活:promini 328p:1023;2560:4095。
1121 * 启用一项或更多选项以显示记录
1122 */
1123 //#define LOG_PERMANENT_SHOW_AT_STARTUP // 启用以在启动时显示记录
1124 //#define LOG_PERMANENT_SHOW_AT_L // 启用以在接收到‘L‘时显示记录
1125 //#define LOG_PERMANENT_SHOW_AFTER_CONFIG // 启用以在退出LCD配置菜单之后显示记录
1126 //#define LOG_PERMANENT_SERVICE_LIFETIME 36000 // 以秒为单位;在10小时的解锁时间之后,在启动时响起服务警告
1127
1128 /* 添加调试代码
1129 不需要并且也不推荐在平常运行时开启
1130 将会额外添加代码,可能会使主循环变慢或使飞行器不可飞行 */
1131 //#define DEBUG
1132 //#define DEBUG_FREE // will add ‘F‘ command to show free memory
1133
1134 /* 使用此项在没有发射机时触发LCD配置 - 仅用于调试 - 不要在此项激活的情况下飞行 */
1135 //#define LCD_CONF_DEBUG
1136
1137 /* 使用此项在没有发射机时触发遥测 - 仅用于调试 - 不要在此项激活的情况下飞行 */
1138 //#define LCD_TELEMETRY_DEBUG //该形式在所有的屏幕间轮换,LCD_TELEMETRY_AUTO必须同时被定义。
1139 //#define LCD_TELEMETRY_DEBUG 6 //该形式停在特定的屏幕上。
1140
1141 /* 启用从飞行器到GUI的字符串传送 */
1142 //#define DEBUGMSG
1143
1144
1145 /********************************************************************/
1146 /**** 电调校准 ****/
1147 /********************************************************************/
1148
1149 /* 同时校准所有连接到MWii的电调(可以避免来回连接每一个电调)
1150 警告:这将产生一个特别版本的MultiWii代码
1151 这个特殊的版本是不可以用来飞行的。它只可以用来校准电调
1152 使用方法详见 http://code.google.com/p/multiwii/wiki/ESCsCalibration */
1153 #define ESC_CALIB_LOW MINCOMMAND
1154 #define ESC_CALIB_HIGH 2000
1155 //#define ESC_CALIB_CANNOT_FLY // 解除注释激活此项,千万注意,校准电调时请拆卸下你的螺旋桨!
1156
1157 /**** 内部频率 ****/
1158 /* 在主循环中的稀有循环操作的频率,取决于周期时间
1159 时间基数为主循环周期时间 - 值为6意味着每六个主循环触发一次操作
1160 示例:周期时间大约在3ms,执行操作就在每 6*3ms=18ms
1161 取值范围 [1; 65535] */
1162 #define LCD_TELEMETRY_FREQ 23 // 通过串口发送遥测数据 23 <=> 60ms <=> 16Hz (只发送隔行数据,8Hz上传速率)
1163 #define LCD_TELEMETRY_AUTO_FREQ 967 // 翻到下一个遥测页面 967 <=> 3s
1164 #define PSENSOR_SMOOTH 16 // len of averaging vector for smoothing the PSENSOR readings; should be power of 2; set to 1 to disable
1165 #define VBAT_SMOOTH 16 // len of averaging vector for smoothing the VBAT readings; should be power of 2; set to 1 to disable
1166 #define RSSI_SMOOTH 16 // len of averaging vector for smoothing the RSSI readings; should be power of 2; set to 1 to disable
1167
1168 /********************************************************************/
1169 /**** 桨/马达动平衡 ****/
1170 /********************************************************************/
1171 /* !!! No Fly Mode !!! */
1172
1173 //#define DYNBALANCE // (**) 用gui调整动平衡
1174
1175 /********************************************************************/
1176 /**** 回归测试 ****/
1177 /********************************************************************/
1178
1179 /* 只用作开发用途:
1180 考虑到测试编译时,不同的config参数是保持在一起的,所以可以更简单地重复测试config设置,
1181 它的意义是可以帮助检测编译时的错误,让多种不同的特性以协调的方式运作。
1182 这并不是用来制作你自己的飞行固件的。
1183 使用方法:
1184 - 不要在config.h中做任何设置,
1185 - 启用#define COPTERTEST 1,然后编译
1186 - 如果可能的话,检查程序大小
1187 - 重复测试其他值2, 3, 4等。
1188 */
1189 //#define COPTERTEST 1
1190
1191 /*************************************************************************************************/
1192 /***************** ***************/
1193 /**************** 第 8 部分 - 不推荐使用 *******/
1194 /***************** ***************/
1195 /*************************************************************************************************/
1196
1197 /*这些功能将在未来被移除的。不再更新
1198 *基于这样的特点功能。所有这些功能默认是关闭的。
1199 */
1200
1201 /************************** WMP的电源引脚 *******************************/
1202 //#define D12_POWER // Use D12 on PROMINI to power sensors. Will disable servo[4] on D12
1203 /* disable use of the POWER PIN (allready done if the option RCAUXPIN12 is selected) */
1204 #define DISABLE_POWER_PIN
1205
1206
1207 /*************************************************************************************************/
1208 /**** 可配置参数结束 ****/
1209 /*************************************************************************************************/
1210
1211 #endif /* CONFIG_H_ */