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 //八轴X47 //#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 10A59 //#define MINTHROTTLE 1120 // 用于Super Simple ESCs 10A60 //#define MINTHROTTLE 1064 // 特殊的ESC (simonk蜘蛛电调)61 //#define MINTHROTTLE 1050 // 用于brushed ESC比如ladybird62 #define MINTHROTTLE 1150 // (*)63 64 /**************************** 电机最大油门 *******************************/65 /* ESC全功率工作的最大值,该值最大可增至2000 */66 #define MAXTHROTTLE 185067 68 /**************************** 最小命令 *******************************/69 /* 该值用于未解锁时的ESC70 在某些情况下,用于一些特殊的电调该值必须降至900,否则电调会初始化失败71 OYUZIQI提示 用场效应管驱动空心杯时上电若微微转动可适当降低此数值*/72 #define MINCOMMAND 100073 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_PULLUPS81 82 /********************************** 循环周期时间 ******************************/83 #define LOOP_TIME 280084 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 Alex100 //#define FFIMUv2 // second version of 9DOF+baro board from Jussi, with HMC5883 <- confirmed by Alex101 //#define FREEIMUv1 // v0.1 & v0.2 & v0.3 version of 9DOF board from Fabio102 //#define FREEIMUv03 // FreeIMU v0.3 and v0.3.1103 //#define FREEIMUv035 // FreeIMU v0.3.5 no baro104 //#define FREEIMUv035_MS // FreeIMU v0.3.5_MS <- confirmed by Alex105 //#define FREEIMUv035_BMP // FreeIMU v0.3.5_BMP106 //#define FREEIMUv04 // FreeIMU v0.4 with MPU6050, HMC5883L, MS561101BA <- confirmed by Alex107 //#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 Alex109 //#define PIPO // 9DOF board from erazz110 //#define QUADRINO // full FC board 9DOF+baro board from witespy with BMP085 baro <- confirmed by Alex111 //#define QUADRINO_ZOOM // full FC board 9DOF+baro board from witespy second edition112 //#define QUADRINO_ZOOM_MS// full FC board 9DOF+baro board from witespy second edition <- confirmed by Alex113 //#define ALLINONE // full FC board or standalone 9DOF+baro board from CSG_EU114 //#define AEROQUADSHIELDv2115 //#define ATAVRSBIN1 // Atmel 9DOF (Contribution by EOSBandi). requires 3.3V power.116 //#define SIRIUS // Sirius Navigator IMU <- confirmed by Alex117 //#define SIRIUSGPS // Sirius Navigator IMU using external MAG on GPS board <- confirmed by Alex118 //#define SIRIUS600 // Sirius Navigator IMU using the WMP for the gyro119 //#define SIRIUS_AIR // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com <- confirmed by Alex120 //#define SIRIUS_AIR_GPS // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com with GPS/MAG remote located121 //#define SIRIUS_MEGAv5_OSD // Paris_Sirius™ ITG3050,BMA280,MS5611,HMC5883,uBlox http://www.Multiwiicopter.com <- confirmed by Alex122 //#define MINIWII // Jussi's MiniWii Flight Controller <- confirmed by Alex123 //#define MICROWII // MicroWii 10DOF with ATmega32u4, MPU6050, HMC5883L, MS561101BA from http://flyduino.net/124 //#define CITRUSv2_1 // CITRUS from qcrc.ca125 //#define CHERRY6DOFv1_0126 //#define DROTEK_10DOF // Drotek 10DOF with ITG3200, BMA180, HMC5883, BMP085, w or w/o LLC127 //#define DROTEK_10DOF_MS // Drotek 10DOF with ITG3200, BMA180, HMC5883, MS5611, LLC128 //#define DROTEK_6DOFv2 // Drotek 6DOF v2129 //#define DROTEK_6DOF_MPU // Drotek 6DOF with MPU6050130 //#define DROTEK_10DOF_MPU//131 //#define MONGOOSE1_0 // mongoose 1.0 http://store.ckdevices.com/132 //#define CRIUS_LITE // Crius MultiWii Lite133 //#define CRIUS_SE // Crius MultiWii SE134 //#define CRIUS_SE_v2_0 // Crius MultiWii SE 2.0 with MPU6050, HMC5883 and BMP085135 //#define OPENLRSv2MULTI // OpenLRS v2 Multi Rc Receiver board including ITG3205 and ADXL345136 //#define BOARD_PROTO_1 // with MPU6050 + HMC5883L + MS baro137 //#define BOARD_PROTO_2 // with MPU6050 + slave MAG3110 + MS baro138 //#define GY_80 // Chinese 10 DOF with L3G4200D ADXL345 HMC5883L BMP085, LLC139 //#define GY_85 // Chinese 9 DOF with ITG3205 ADXL345 HMC5883L LLC140 //#define GY_86 // Chinese 10 DOF with MPU6050 HMC5883L MS5611, LLC141 #define GY_88 // Chinese 10 DOF with MPU6050 HMC5883L BMP085, LLC142 //#define GY_521 // Chinese 6 DOF with MPU6050, LLC143 //#define INNOVWORKS_10DOF // with ITG3200, BMA180, HMC5883, BMP085 available here http://www.diymulticopter.com144 //#define INNOVWORKS_6DOF // with ITG3200, BMA180 available here http://www.diymulticopter.com145 //#define MultiWiiMega // MEGA + MPU6050+HMC5883L+MS5611 available here http://www.diymulticopter.com146 //#define PROTO_DIY // 10DOF mega board147 //#define IOI_MINI_MULTIWII// www.bambucopter.com148 //#define Bobs_6DOF_V1 // BobsQuads 6DOF V1 with ITG3200 & BMA180149 //#define Bobs_9DOF_V1 // BobsQuads 9DOF V1 with ITG3200, BMA180 & HMC5883L150 //#define Bobs_10DOF_BMP_V1 // BobsQuads 10DOF V1 with ITG3200, BMA180, HMC5883L & BMP180 - BMP180 is software compatible with BMP085151 //#define FLYDUINO_MPU // MPU6050 Break Out onboard 3.3V reg152 //#define CRIUS_AIO_PRO153 //#define DESQUARED6DOFV2GO // DEsquared V2 with ITG3200 only154 //#define DESQUARED6DOFV4 // DEsquared V4 with MPU6050155 //#define LADYBIRD156 //#define MEGAWAP_V2_STD // available here: http://www.multircshop.com <- confirmed by Alex157 //#define MEGAWAP_V2_ADV158 //#define HK_MultiWii_SE_V2 // Hobbyking board with MPU6050 + HMC5883L + BMP085159 //#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.com161 //#define RCNet_FC_GPS // RCNet FC with MPU6050 + MS561101BA + HMC5883L + UBLOX GPS http://www.rcnet.com162 //#define FLYDU_ULTRA // MEGA+10DOF+MT3339 FC163 //#define DIYFLYING_MAGE_V1 // diyflying 10DOF mega board with MPU6050 + HMC5883L + BMP085 http://www.indoor-flying.hk164 //#define MultiWii_32U4_SE // Hextronik MultiWii_32U4_SE165 //#define MultiWii_32U4_SE_no_baro // Hextronik MultiWii_32U4_SE without the MS561101BA to free flash-memory for other functions166 //#define Flyduino9DOF // Flyduino 9DOF IMU MPU6050+HMC5883l167 //#define Nano_Plane // Multiwii Plane version with tail-front LSM330 sensor http://www.radiosait.ru/en/page_5324.html168 169 /*************************** 独立的传感器 ********************************/170 /* 171 如果你已在上方选择了相应的组合板子,请跳过,保持以下注释状态即可 172 这里是用来设置你单独连接在I2C上的传感器模块。当然每样都单独买价格会高一些,如果你是豪,当我没说。173 */174 /* I2C陀螺仪 */175 //#define WMP176 //#define ITG3050177 //#define ITG3200178 //#define MPU3050179 //#define L3G4200D180 //#define MPU6050 //带了加速度181 //#define LSM330 //带了加速度182 183 /* I2C加速度计 */184 //#define MMA7455185 //#define ADXL345186 //#define BMA020187 //#define BMA180188 //#define BMA280189 //#define LIS3LV02190 //#define LSM303DLx_ACC191 //#define MMA8451Q192 193 /* I2C气压计 */194 //#define BMP085195 //#define MS561101BA196 197 /* I2C磁力计 */198 //#define HMC5843199 //#define HMC5883200 //#define AK8975201 //#define MAG3110202 203 /* 声呐 */ // 目前用作显示用途 - 无控制代码支持 204 /* OYUZIQI提示:貌似bbs.5imx.com上有大神完成了代码,且国外论坛上有光流205 http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=726172&page=1206 http://www.multiwii.com/forum/viewtopic.php?f=7&t=1413207 */208 //#define SRF02 // use the Devantech SRF i2c sensors209 //#define SRF08210 //#define SRF10211 //#define SRF235212 213 /* ADC加速度计 */ // 用于来自sparkfun的5DOF,使用模拟针脚A1/A2/A3214 //#define ADCACC215 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#p37387238 * */239 #define PID_CONTROLLER 1240 241 /* NEW: 不再使用伺服飞行器种类 (需要修复)) <== NEEDS FIXING - MOVE TO WIKI */242 #define YAW_DIRECTION 1243 //#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_configuration256 */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 CAMTRIG274 #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 THROTTLE300 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_THROTTLE317 318 /*********************** 你的独立混控 ***********************/319 /* 如果你想要覆盖一个选存的混合表中的条目,你可能想要避免320 * 在每个版本一遍又一遍的编辑mixTable()函数321 * 操作方式:http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_Mixing322 */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_defaults329 */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-1230346 1231-1360347 1361-1490348 1491-1620349 1621-1749350 1750-351 352 */353 354 //#define EXTENDED_AUX_STATES355 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/Spektrum365 //#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Robe/Hitec/Futaba366 //#define SERIAL_SUM_PPM ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Multiplex367 //#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_THROTTLE371 372 /********************** Spektrum卫星接收机 *******************************/373 /* 以下几行仅用于Spektrum卫星接收机374 Spektrum卫星系列是3V设备。不要连接至5V!375 对于MEGA板,将灰线连接到RX1,19针脚上。黑线接地。橙线连接到Mega板的3.3V上(或其他3V至3.3V的电源)。376 对于PROMINI,将灰线连接到RX0。黑线接地。 */377 //#define SPEKTRUM 1024378 //#define SPEKTRUM 2048379 //#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 4390 //#define SPEK_BIND_POWER 5391 //#define SPEK_BIND_DATA 6392 393 /******************************* SBUS接收机 ************************************/394 /* 下面这行仅用于Futaba S-Bus接收机在MEGA板上的RX1的情况(串口1)。395 你必须反转S-Bus-串口信号,例如使用十六进制反相器像是IC SN74 LS 04 */396 //#define SBUS397 //#define SBUS_SERIAL_PORT 1398 #define SBUS_MID_OFFSET 988 //SBUS Mid-Point at 1500399 400 /******************************* HOTT 接收机 ************************************/401 /* Graupner Hott HD */402 //#define SUMD PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4403 //#define RX_SERIAL_PORT 1404 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_HEX420 421 /********************************* Aux 2 针脚 ***********************************/422 /* 让你可以使用针脚8或针脚12作为遥控的AUX2输入(只可启用一个,不可全部启用)423 如果启用它会使功率针脚(针脚12)或蜂鸣针脚(针脚8)失效 */424 //#define RCAUXPIN8425 //#define RCAUXPIN12426 427 428 /**************************************************************************************/429 /***************** Teensy 2.0 支持 ******************/430 /**************************************************************************************/431 /* 解除此项如果你使用的是使用teensyduino的teensy 2.0432 它需要运行在16MHz */433 //#define TEENSY20434 435 436 /**************************************************************************************/437 /******** 用于ProMicro,Leonardo和其他Atmega32u4板子的设置 ***********/438 /**************************************************************************************/439 440 /********************************* 针脚布局 **********************************/441 /* 如果所有针脚都能使用,激活此项可获得更好的针脚布局 => 在ProMicro上不可用 */442 //#define A32U4ALLPINS443 444 /********************************** PWM设置 **********************************/445 /* 激活全部6个硬件PWM输出,电机5 = D11,电机6 = D13。446 提示:不可用于sparkfun promicro(针脚11 & 13未被引出)447 如果激活:448 电机1-6 = 10位硬件PWM449 电机7-8 = 8位软件PWM450 舵机 = 8位软件PWM451 如果未激活:452 电机1-4 = 10位硬件PWM453 电机5-8 = 10位软件PWM454 舵机 = 10位软件PWM */455 //#define HWPWM6456 457 /********************************** Aux 2 针脚 **********************************/458 /* AUX2针脚在RXO针脚上 */459 //#define RCAUX2PINRXO460 461 /* aux2针脚在D17针脚上(RXLED) */462 //#define RCAUX2PIND17463 464 /********************************** 蜂鸣针脚 **********************************/465 /* 此项将蜂鸣针脚从TX0移动至D8以使用ppm sum或spectrum sat.接收机(如果启用了A32U4ALLPINS则不需此项) */466 //#define D8BUZZER467 468 /*********************** Promicro版本相关 ****************************/469 /* 反转状态LED用于Promicro版本10 */470 //#define PROMICRO10471 472 473 /**************************************************************************************/474 /******** 默认针脚分配调整 ********************/475 /**************************************************************************************/476 477 /* 仅在你必须改变默认针脚分配时才启用其中一项,例:你的板子没有特定针脚 */478 /* 你可能需要依据期望的针脚给PINx与PORTx加上#移位! */479 480 //#define OVERRIDE_V_BATPIN A0 // 代替A3 //模拟针脚3481 482 //#define OVERRIDE_PSENSORPIN A1 // 代替A2 //模拟针脚2483 484 //#define OVERRIDE_LEDPIN_PINMODE pinMode (A1, OUTPUT); // 使用A1代替d13485 //#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代替d8490 //#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 115200502 #define SERIAL1_COM_SPEED 115200503 #define SERIAL2_COM_SPEED 115200504 #define SERIAL3_COM_SPEED 115200505 506 /* 当I2C总线有错误时,我们可在很短的时间内中立化相关值。用微秒表示507 它仅与至少有一个WMP的配置相关 */508 #define NEUTRALIZE_DELAY 100000509 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_188HZ522 //#define GYRO_LPF_98HZ523 //#define GYRO_LPF_42HZ524 #define GYRO_LPF_20HZ525 //#define GYRO_LPF_10HZ526 //#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_READS544 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_ARM554 555 /************************ 油门随着角度补偿 ********************/556 /* 可以让你飞机倾斜的时候不要掉高度。根据角度增加油门,这是可以开下来的,但是要根据飞机不同来调节。免得角度一倾斜,油门窜得太高。557 最初构想 by Kraut Rob, first implementation HAdrian */558 559 //#define THROTTLE_ANGLE_CORRECTION 40560 561 /*** 无头模式 : 起飞点和飞行器的连线将成为控制方向 ***/562 #define HEADFREE563 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 distance569 first implementation by HAdrian, mods by EOSBandi570 在高级无头模式下,当飞行机超过ADV_HEADFREE_RANGE定义的范围, 571 起飞点和飞行器的连线将成为控制方向, 当飞行器飞入ADV_HEADFREE_RANGE定义范围,那么控制方向将锁定为原点和飞行器飞入ADV_HEADFREE_RANGE572 范围内时位置的连线,573 */574 575 //#define ADVANCED_HEADFREE //去掉注释开启高级无头模式576 //#define ADV_HEADFREE_RANGE 15 //高级无头模式范围米.577 578 579 /************************ 连续的陀螺仪校准 ********************/580 /* 如果在校准过程中飞行器被移动,陀螺仪校准将会重复。 */581 //#define GYROCALIBRATIONFAILSAFE582 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#p17437592 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 985606 607 608 /***************** DFRobot LED 光环 *********************************/609 /* I2C DFRobot LED光环通讯 */610 //#define LED_RING611 612 /******************************** LED闪光灯 ***********************************/613 //#define LED_FLASHER614 //#define LED_FLASHER_DDR DDRB615 //#define LED_FLASHER_PORT PORTB616 //#define LED_FLASHER_BIT PORTB4617 //#define LED_FLASHER_INVERT618 //#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 DDRC630 //#define LANDING_LIGHTS_PORT PORTC631 //#define LANDING_LIGHTS_BIT PORTC0632 //#define LANDING_LIGHTS_INVERT633 634 /* 依据声纳传来的数在地面之上的高度(以cm为单位) */635 //#define LANDING_LIGHTS_AUTO_ALTITUDE 50636 637 /* 让闪光灯的样式应用于着陆灯LED */638 //#define LANDING_LIGHTS_ADOPT_LED_FLASHER_PATTERN639 640 /************************* 飞行时加速度计校准 *****************************/641 /* 此项会激活加速度计飞行时校准 */642 //#define INFLIGHT_ACC_CALIBRATION643 644 /******************************* OSD切换 *************************************/645 // 此项会添加一个可被OSD解读的激活状态的选框(比如说开关覆盖物)646 //#define OSD_SWITCH647 648 /**************************************************************************************/649 /*********************** 发射机-相关 **************************/650 /**************************************************************************************/651 652 /* 在摇杆中点周围引入一个死区(译者注:无作用控制区)653 必须大于零,如果你不需要在roll,pitch和yaw上的死区就注释掉它 */654 #define DEADBAND 6655 656 /**************************************************************************************/657 /*********************** GPS **************************/658 /**************************************************************************************/659 660 /* 启用GPS 模拟器 (只支持NMEA协议)*/661 //#define GPS_SIMULATOR662 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)必须为0672 // 提示: 现在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 port676 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 NMEA685 //#define UBLOX686 //#define MTK_BINARY16687 //#define MTK_BINARY19688 //#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_GPS698 699 // 如果你的I2C GPS板有声纳支持700 //#define I2C_GPS_SONAR701 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_INDICATOR707 708 // 启用MSP_WP命令,用于WinGUI显示与记录家与定点的位置709 #define USE_MSP_WP710 711 // 家的地点(HOME position)会在每次解锁时重置,解除注释此项来禁用它(你可以通过校准陀螺仪来设置家的地点)712 //#define DONT_RESET_HOME_AT_ARM713 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协议的GPS733 #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 600769 770 //这参数控制自动降落模式的降落速度. 100表示下降速度为50厘米/秒771 #define LAND_SPEED 100772 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,使用i2c791 //#define LCD_LCD03S // 串口LCD:lcd03通过串口9600波特率通信。792 //#define OLED_I2C_128x64 // I2C LCD: OLED http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350793 //#define OLED_DIGOLE // I2C OLED from http://www.digole.com/index.php?productID=550794 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_DIGOLE806 807 /* 显示风格 - 通过LCD_ setting自动检测 - 仅在覆盖默认时激活 */808 //#define DISPLAY_2LINES809 //#define DISPLAY_MULTILINE810 //#define MULTILINE_PRE 2 // 多行配置菜单#之前的行811 //#define MULTILINE_POST 6 // 多行配置菜单#之前的行812 //#define DISPLAY_COLUMNS 16813 /******************************** 导航 ***********************************/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_CONF830 831 /* 用于包含通过LCD进行AUX1 -> AUX4辅助开关切换的设置 */832 //#define LCD_CONF_AUX833 834 /* 可选排除一些功能 - 解除注释以禁用一些不需要的遥测页面或通道设置 */835 //#define SUPPRESS_LCD_CONF_AUX2836 //#define SUPPRESS_LCD_CONF_AUX34837 838 /**************************************************************************************/839 /*********************** LCD 遥测 **************************/840 /**************************************************************************************/841 842 /* to monitor system values (battery level, loop time etc. with LCD843 * http://www.multiwii.com/wiki/index.php?title=LCD_Telemetry */844 845 /******************************** 激活 ***********************************/846 //#define LCD_TELEMETRY847 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_1857 //#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 // gps863 //#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_RSSI876 //#define RX_RSSI_PIN A3877 //#define RX_RSSI_CHAN 8 //RSSI 注入指定的通道 (for PPM, Olrs, SBUS, etc.) (Starts at 0)878 879 /********************************************************************/880 /**** 蜂鸣器(BUZZER) ****/881 /********************************************************************/882 #define BUZZER883 #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=51k893 vbat = [0;1023]*16/VBATSCALE894 必须与#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,7V900 #define VBATLEVEL_WARN2 100 // (*) (**) 9.9V901 #define VBATLEVEL_CRIT 99 // (*) 9.3V - 临界情况:如果vbat持续低于该值,就会触发警报长响902 #define NO_VBAT 16 // (*) 避免在没有电池时响起903 #define VBAT_OFFSET 0 //抵消0.1volts,加入有用的齐纳二极管的电压值904 905 /* 对多个电池进行监控906 * 必须同时启用VBAT,VBAT_CELLS907 */908 //#define VBAT_CELLS909 #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 diodes912 #define VBAT_CELLS_DIVS { 75, 122, 98, 18, 30, 37 } // divisor for proportional part according to resistors - larger value here gives smaller voltage913 914 /********************************************************************/915 /**** 功率计(电池容量监控) ****/916 /********************************************************************/917 918 /* 启用电池能量消耗监控(以mAh考虑)919 允许在GUI中或通过LCD设置警戒值920 全部描述与操作方法请见此 http://www.multiwii.com/wiki/index.php?title=Powermeter921 有两个选项:922 1 - 硬件: - (使用硬件传感器,配置后将获得相当不错的结果)923 2 - 软件: - (使用plush与mystery电调可获得+-5%的料号结果,使用SuperSimple电调结果不佳) */924 //#define POWERMETER_SOFT925 //#define POWERMETER_HARD926 #define PSENSORNULL 510 // (*) 设置0电流时analogRead()的值;I=0A时,我的传感器得到1/2 Vss;约为2.49伏;927 928 #define PINT2mA 132 // (*) 用于遥测显示:一个用在arduino模拟转换为mA时的整数(例4.9 / 37 * 100929 /*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和VBAT932 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 50945 //#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_ALTHOLD956 957 /********************************************************************/958 /**** 高度爬升率测定器 (高度仪) ****/959 /********************************************************************/960 961 /* 启用以获得来自上升/下降中的飞行器/飞机的声频反馈。962 * 需要工作中的气压计。963 * 目前,输出会通过串行线发送至启用中的vt100终端程序。964 * 有两种方式可选(启用其中一个或同时启用)965 * 方式1:使用来自气压计的短期移动(更大的代码尺寸)966 * 方式2:使用来自气压计的长期高度观察(更小的代码尺寸)967 */968 //#define VARIOMETER 12 // 可用值:12 = 方式 1 & 2 ;1 = 方式 1;2 = 方式 2969 //#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.123456989 990 /************* 在EEPROM中支持多个配置参数文件 ************/991 //#define MULTIPLE_CONFIGURATION_PROFILES992 993 /************* do no reset constants when change of flashed program is detected ***********/994 #define NO_FLASH_CHECK995 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_ */