MWC飞控config库文件(带汉化注释)
#ifndef CONFIG_H_
#define CONFIG_H_
/*************************************************************************************************/
/**** 可配置参数 ****/
/*************************************************************************************************/
/* 本文件由几部分组成
* 用于创建一个可用的组合,你必须至少在第1部分做出你的选择。
* 1 - 基本设置 - 你必须在每个块中选择一个选项。
* 这里假定你的板子连接了4个通道还有标准电调和舵机。
* 2 - 飞行器分类详细选项 - 你可能需要为你的飞行器分类检查选项
* 3 - 遥控系统设置
* 4 - 替代CPU和板子 - 如果你有
* 5 - 替代设置 - 在此选择替代发射机(SBUS,PPM等),替代电调范围等
* 6 - 可选特性 - 在此启用锦上添花的特性(飞行模式,LCD,遥测,电池监控等)
* 7 - 调试 & 开发者 - 如果你知道你在做什么;已经警告过你了
* - (ESC的动态校准,电机/支撑平衡,诊断,节省内存.....)
* 8 - 不推荐使用 - 这些功能将在将来的版本中删除
*/
/* Notes:
* 1. 在注释中用(*)标记的参数被储存在eeprom中,并且可以通过串口监控器或LCD调节。
* 2. 在注释中用(**)标记的参数被储存在eeprom中,并且可以通过GUI调节
*/
/*************************************************************************************************/
/**** 汉化注释说明 ****/
/*************************************************************************************************/
/*multiwii2.3 config.h中文注释由OYUZIQI@arduino吧(tieba.baidu.com)收集整理,校验by梓叶亭
未改变原有默认设置,但未经测试,建议此注释仅作参考对照使用,下载程序时请使用原版英文注释文件进行设置
*部分注释来自MultiWii中文网翻译组的2.2版,感谢bys_1123,1992liubo和tompsontan
*以及jpno1@bbs.5imx.com
*感谢他们的辛劳付出,减少了我大量的工作
*欢迎转载,但请载明出处
*若有翻译不当之处,敬请原谅
*期待更多朋友爱上mwc!
/*************************************************************************************************/
/***************** ***************/
/**************** 第 1 部分 - 基本设置 *******/
/***************** ***************/
/*************************************************************************************************/
/************************** 多旋翼飞行器种类 ****************************/
//#define GIMBAL 自稳云台
//#define BI 两轴
//#define TRI 三轴
//#define QUADP 四轴十字模式
//#define QUADX 四轴X模式
//#define Y4 四轴Y模式
//#define Y6 六轴Y模式
//#define HEX6 六轴
//#define HEX6X 六轴X模式
//#define HEX6H // New Model 六轴H模式(新)
//#define OCTOX8 八轴
//#define OCTOFLATP 八轴十字
//#define OCTOFLATX 八轴X
//#define FLYING_WING 飞翼
//#define VTAIL4 四轴v尾
//#define AIRPLANE 固定翼
//#define SINGLECOPTER 单旋翼
//#define DUALCOPTER 双旋翼
//#define HELI_120_CCPM 120度CCPM直升机
//#define HELI_90_DEG 90度斜盘直升机
/**************************** 电机最小油门 *******************************/
/* 设定发送至电调(ESC,Electronic Speed Controller)的最小油门命令
该最小值允许电机运行在怠速上 即维持电机怠速的最低油门值. */
//#define MINTHROTTLE 1300 // 用于Turnigy Plush ESCs 10A
//#define MINTHROTTLE 1120 // 用于Super Simple ESCs 10A
//#define MINTHROTTLE 1064 // 特殊的ESC (simonk蜘蛛电调)
//#define MINTHROTTLE 1050 // 用于brushed ESC比如ladybird
#define MINTHROTTLE 1150 // (*)
/**************************** 电机最大油门 *******************************/
/* ESC全功率工作的最大值,该值最大可增至2000 */
#define MAXTHROTTLE 1850
/**************************** 最小命令 *******************************/
/* 该值用于未解锁时的ESC
在某些情况下,用于一些特殊的电调该值必须降至900,否则电调会初始化失败
OYUZIQI提示 用场效应管驱动空心杯时上电若微微转动可适当降低此数值*/
#define MINCOMMAND 1000
/********************************** I2C速度 ************************************/
//#define I2C_SPEED 100000L //100kHz普通模式,正品WPM必须使用该值
#define I2C_SPEED 400000L //400kHz快速模式,仅用于一些山寨WPM (可用于GY系列模块)
/*************************** 内部i2c上拉 ********************************/
/* 启用内部I2C上拉(在多数情况下,使用外部上拉更佳)(GY系列模块自带外部上拉) */
//#define INTERNAL_I2C_PULLUPS
/**************************************************************************************/
/***************** 主控板与传感器定义 ******************/
/**************************************************************************************/
/*************************** Combined IMU Boards ********************************/
/* 如果你在使用特定的传感器板:
请提交改动到这个列表。
来自Alex的提示:我只有其中一些板子,对于其他板子,我不能确保好用,信息由遥控论坛生成,请小心使用 *
OYUZIQI提示 可支持 GY-87 GY-88等模块 详见本人帖子 http://tieba.baidu.com/p/3441325219?bd_source_light=1563095&pn=0&
//#define GY_80 // Chinese 10 DOF with L3G4200D ADXL345 HMC5883L BMP085, LLC
//#define GY_85 // Chinese 9 DOF with ITG3205 ADXL345 HMC5883L LLC
//#define GY_86 // Chinese 10 DOF with MPU6050 HMC5883L MS5611, LLC
//#define GY_521 // Chinese 6 DOF with MPU6050, LLC
//#define FFIMUv1 // first 9DOF+baro board from Jussi, with HMC5843 <- confirmed by Alex
//#define FFIMUv2 // second version of 9DOF+baro board from Jussi, with HMC5883 <- confirmed by Alex
//#define FREEIMUv1 // v0.1 & v0.2 & v0.3 version of 9DOF board from Fabio
//#define FREEIMUv03 // FreeIMU v0.3 and v0.3.1
//#define FREEIMUv035 // FreeIMU v0.3.5 no baro
//#define FREEIMUv035_MS // FreeIMU v0.3.5_MS <- confirmed by Alex
//#define FREEIMUv035_BMP // FreeIMU v0.3.5_BMP
//#define FREEIMUv04 // FreeIMU v0.4 with MPU6050, HMC5883L, MS561101BA <- confirmed by Alex
//#define FREEIMUv043 // same as FREEIMUv04 with final MPU6050 (with the right ACC scale)
//#define NANOWII // the smallest multiwii FC based on MPU6050 + pro micro based proc <- confirmed by Alex
//#define PIPO // 9DOF board from erazz
//#define QUADRINO // full FC board 9DOF+baro board from witespy with BMP085 baro <- confirmed by Alex
//#define QUADRINO_ZOOM // full FC board 9DOF+baro board from witespy second edition
//#define QUADRINO_ZOOM_MS// full FC board 9DOF+baro board from witespy second edition <- confirmed by Alex
//#define ALLINONE // full FC board or standalone 9DOF+baro board from CSG_EU
//#define AEROQUADSHIELDv2
//#define ATAVRSBIN1 // Atmel 9DOF (Contribution by EOSBandi). requires 3.3V power.
//#define SIRIUS // Sirius Navigator IMU <- confirmed by Alex
//#define SIRIUSGPS // Sirius Navigator IMU using external MAG on GPS board <- confirmed by Alex
//#define SIRIUS600 // Sirius Navigator IMU using the WMP for the gyro
//#define SIRIUS_AIR // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com <- confirmed by Alex
//#define SIRIUS_AIR_GPS // Sirius Navigator IMU 6050 32U4 from MultiWiiCopter.com with GPS/MAG remote located
//#define SIRIUS_MEGAV5_OSD // Paris_Sirius™ ITG3050,BMA280,MS5611,HMC5883,uBlox http://www.Multiwiicopter.com <- confirmed by Alex
//#define MINIWII // Jussi's MiniWii Flight Controller <- confirmed by Alex
//#define MICROWII // MicroWii 10DOF with ATmega32u4, MPU6050, HMC5883L, MS561101BA from http://flyduino.net/
//#define CITRUSv2_1 // CITRUS from qcrc.ca
//#define CHERRY6DOFv1_0
//#define DROTEK_10DOF // Drotek 10DOF with ITG3200, BMA180, HMC5883, BMP085, w or w/o LLC
//#define DROTEK_10DOF_MS // Drotek 10DOF with ITG3200, BMA180, HMC5883, MS5611, LLC
//#define DROTEK_6DOFv2 // Drotek 6DOF v2
//#define DROTEK_6DOF_MPU // Drotek 6DOF with MPU6050
//#define DROTEK_10DOF_MPU//
//#define MONGOOSE1_0 // mongoose 1.0 http://store.ckdevices.com/
//#define CRIUS_LITE // Crius MultiWii Lite
//#define CRIUS_SE // Crius MultiWii SE
//#define CRIUS_SE_v2_0 // Crius MultiWii SE 2.0 with MPU6050, HMC5883 and BMP085
//#define OPENLRSv2MULTI // OpenLRS v2 Multi Rc Receiver board including ITG3205 and ADXL345
//#define BOARD_PROTO_1 // with MPU6050 + HMC5883L + MS baro
//#define BOARD_PROTO_2 // with MPU6050 + slave MAG3110 + MS baro
//#define INNOVWORKS_10DOF // with ITG3200, BMA180, HMC5883, BMP085 available here http://www.diymulticopter.com
//#define INNOVWORKS_6DOF // with ITG3200, BMA180 available here http://www.diymulticopter.com
//#define MultiWiiMega // MEGA + MPU6050+HMC5883L+MS5611 available here http://www.diymulticopter.com
//#define PROTO_DIY // 10DOF mega board
//#define IOI_MINI_MULTIWII// www.bambucopter.com
//#define Bobs_6DOF_V1 // BobsQuads 6DOF V1 with ITG3200 & BMA180
//#define Bobs_9DOF_V1 // BobsQuads 9DOF V1 with ITG3200, BMA180 & HMC5883L
//#define Bobs_10DOF_BMP_V1 // BobsQuads 10DOF V1 with ITG3200, BMA180, HMC5883L & BMP180 - BMP180 is software compatible with BMP085
//#define FLYDUINO_MPU // MPU6050 Break Out onboard 3.3V reg
//#define CRIUS_AIO_PRO_V1
//#define DESQUARED6DOFV2GO // DEsquared V2 with ITG3200 only
//#define DESQUARED6DOFV4 // DEsquared V4 with MPU6050
//#define LADYBIRD
//#define MEGAWAP_V2_STD // available here: http://www.multircshop.com <- confirmed by Alex
//#define MEGAWAP_V2_ADV
//#define HK_MultiWii_SE_V2 // Hobbyking board with MPU6050 + HMC5883L + BMP085
//#define HK_MultiWii_328P // Also labeled "Hobbybro" on the back. ITG3205 + BMA180 + BMP085 + NMC5583L + DSM2 Connector (Spektrum Satellite)
//#define RCNet_FC // RCNet FC with MPU6050 and MS561101BA http://www.rcnet.com
//#define RCNet_FC_GPS // RCNet FC with MPU6050 + MS561101BA + HMC5883L + UBLOX GPS http://www.rcnet.com
//#define FLYDU_ULTRA // MEGA+10DOF+MT3339 FC
//#define DIYFLYING_MAGE_V1 // diyflying 10DOF mega board with MPU6050 + HMC5883L + BMP085 http://www.indoor-flying.hk
//#define MultiWii_32U4_SE // Hextronik MultiWii_32U4_SE
//#define MultiWii_32U4_SE_no_baro // Hextronik MultiWii_32U4_SE without the MS561101BA for more free flash-memory
//#define Flyduino9DOF // Flyduino 9DOF IMU MPU6050+HMC5883l
//#define Nano_Plane // Multiwii Plane version with tail-front LSM330 sensor http://www.radiosait.ru/en/page_5324.html
/*************************** 独立的传感器 ********************************/
/* 如果你已在上方选择了相应的板子,请跳过,保持以下注释状态即可 */
/* I2C陀螺仪 */
//#define WMP
//#define ITG3200
//#define MPU3050
//#define L3G4200D
//#define MPU6050 //combo + ACC
//#define LSM330 //combo + ACC
/* I2C加速度计 */
//#define NUNCHUCK // 如果你要将nunckuk连接到WMP使用
//#define MMA7455
//#define ADXL345
//#define BMA020
//#define BMA180
//#define BMA280
//#define NUNCHACK // 如果你要将nunckuk作为单独的I2C加速度计使用,不连接到WMP
//#define LIS3LV02
//#define LSM303DLx_ACC
//#define MMA8451Q
/* I2C气压计 */
//#define BMP085
//#define MS561101BA
/* I2C磁力计 */
//#define HMC5843
//#define HMC5883
//#define AK8975
//#define MAG3110
/* 声呐 */ // 目前用作显示用途 - 无控制代码支持
/* OYUZIQI提示:貌似bbs.5imx.com上有大神完成了代码,且国外论坛上有光流
http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=726172&page=1
http://www.multiwii.com/forum/viewtopic.php?f=7&t=1413
//#define SRF02 // use the Devantech SRF i2c sensors
//#define SRF08
//#define SRF10
//#define SRF23
/* ADC加速度计 */ // 用于来自sparkfun的5DOF,使用模拟针脚A1/A2/A3
//#define ADCACC
/* 强制你独有的的传感器方向 - 甚至覆盖集成dof板子特定的默认值 */
//#define FORCE_ACC_ORIENTATION(X, Y, Z) {imu.accADC[ROLL] = Y; imu.accADC[PITCH] = -X; imu.accADC[YAW] = Z;}
//#define FORCE_GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] = -Y; imu.gyroADC[PITCH] = X; imu.gyroADC[YAW] = Z;}
//#define FORCE_MAG_ORIENTATION(X, Y, Z) {imu.magADC[ROLL] = X; imu.magADC[PITCH] = Y; imu.magADC[YAW] = Z;}
/* 板子方向转移 */
/* 如果你的机架设计仅用于+模式,并且你不能物理上将飞控旋转至用于X模式飞行(反之亦然)
* 你可以使用其中一个选项虚拟旋转传感器45度,然后通过飞行模式设定多旋翼飞行器的类型。
* 检查电机顺序与旋转方向是否与新的“前方”匹配!仅使用其中一项注释! */
//#define SENSORS_TILT_45DEG_RIGHT // 将“前方”顺时针旋转45度
//#define SENSORS_TILT_45DEG_LEFT // 将“前方”逆时针旋转45度
/*************************************************************************************************/
/***************** ***************/
/**************** 第 2 部分 - 飞行器类型特定的选项 *******/
/***************** ***************/
/*************************************************************************************************/
/******************************** PID控制算法 *********************************/
/* 单独选择一个PID控制算法
* 1 = 演进 oldschool 算法(类似于V2.2)
* 2 = 新的实验算法 来自 Alex Khoroshko - unsupported - http://www.multiwii.com/forum/viewtopic.php?f=8&t=3671&start=10#p37387
* */
#define PID_CONTROLLER 1
/* NEW: 不再使用伺服飞行器种类 (需要修复)) <== NEEDS FIXING - MOVE TO WIKI */
#define YAW_DIRECTION 1
//#define YAW_DIRECTION -1 // 如果你想反向修正偏航方向
#define ONLYARMWHENFLAT //阻止飞行器倾斜时解锁
/******************************** 锁定/解锁 *********************************/
/* 可以禁止使用摇杆组合进行锁定/解锁电机。
* 在多数情况下,选择其中一种通过发射机摇杆锁定/解锁电机的选项即可 */
#define ALLOW_ARM_DISARM_VIA_TX_YAW //通过转向(尾舵)解锁(默认)
//#define ALLOW_ARM_DISARM_VIA_TX_ROLL //通过翻滚(副翼)解锁
/******************************** 舵机 *********************************/
/* 舵机连接在哪里以及如何设置可以在这里找到
* http://www.multiwii.com/wiki/index.php?title=Config.h#Servos_configuration
*/
/* 如果你想预定最小/中间/最大值为伺服正确后flashing,
因为物理因素限制伺服行程的设置,您必须启用并设置所有三以下选项* /
//#define SERVO_MIN {1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020} //舵机最小值(jpno1 注)
//#define SERVO_MAX {2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000} //舵机最大值(jpno1 注)
//#define SERVO_MID {1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500} // (*)舵机中立点(jpno1注)
//#define FORCE_SERVO_RATES {30,30,100,100,100,100,100,100} // 0=正向 1=反向
/*********************** 相机稳定 ***********************/
/* 以下几行仅用于pitch/roll倾斜稳定系统。去除注释第一或第二行来激活它 */
//#define SERVO_MIX_TILT //混合模式(用于十字模式) (jpno1注)
//#define SERVO_TILT // 普通x模式适用(jpno1注)
/* 相机触发设置 : 激发路径显示在GUI, 使用A2作为舵机输出在promini */
// 触发路径可以设置 (*GUI*) or 或者通过AUX铺助通道
//#define CAMTRIG
#define CAM_TIME_HIGH 1000 // 高电平时间(毫秒)
/*********************** 飞机 ***********************/
//#define USE_THROTTLESERVO // 用于在油门上使用标准50Hz舵机。
//#define FLAPPERONS AUX4 // 混合襟翼与副翼。
#define FLAPPERON_EP { 1500, 1700 } // 用于襟翼双向切换的端点,另外可设为{1020,2000}并在遥控上编程。
#define FLAPPERON_INVERT { -1, 1 } // 改变襟副翼的方向{ Wing1, Wing2 }
//#define FLAPS // 传统移动 SERVO3.
//#define FLAPSPEED 3 //使襟翼移动变慢,值越高速度越快。
/*********************** 直升机与飞机公用 ***********************/
/* 调节器:试图通过螺距和电压的改变维持转速
* 预测方法:观察输入信号与电压并猜测适当的修正。
* (油门曲线必须为调节器留有空间,所以0-50-75-80-80是可以的,不可以为0-50-95-100-100。
* 可以通过aux开关切换
*/
//#define GOVERNOR_P 7 // (*) 比例因子。更大的值 -> 更大的油门增量。必须>=1;0 = 关闭
//#define GOVERNOR_D 4 // (*) 衰减时间。更大的值 -> 油门回到正常需要更长时间。 必须>=1;
//#define VOLTAGEDROP_COMPENSATION // 电压影响校正
/*********************** 直升机 ***********************/
/* 控制总距的通道 */
#define COLLECTIVE_PITCH THROTTLE
/* 限制总距的范围。100%为每个方向的最大范围,还有零螺距的位置 */
#define COLLECTIVE_RANGE { 80, 0, 80 }// {最小%,从1500开始的零螺距偏移,最大%}。
#define YAWMOTOR 0 // 如果一个电机用作YAW则设为1,否则设为0。
/* 用于120直升机的舵机混控,使用分数1/10(例.5 = 5/10 = 1/2)
{Coll,Nick,Roll} */
#define SERVO_NICK { +10, -10, 0 }
#define SERVO_LEFT { +10, +5, +10 }
#define SERVO_RIGHT { +10, +5, -10 }
/* 限制用于Roll & Nick最大控制,范围0-100% */
#define CONTROL_RANGE { 100, 100 } // { ROLL,PITCH }
/* 使用舵机代码驱动油门输出。用模拟舵机驱动IC引擎上的油门时,你会需要此项。
如果不启用,油门输出会被看做电机输出,所以它可以驱动电调 */
//#define HELI_USE_SERVO_FOR_THROTTLE
/*********************** 你的独立混控 ***********************/
/* 如果你想要覆盖一个选存的混合表中的条目,你可能想要避免
* 在每个版本一遍又一遍的编辑mixTable()函数
* 操作方式:http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_Mixing
*/
//#define MY_PRIVATE_MIXING "filename.h" 更改filename.h为你自己的默认文件(jpno1注)
/*********************** y你的默认参数 ***********************/
/* 如果你想要覆盖一个选存的混合表中的条目,你可能想要避免
* 在每个版本一遍又一遍的编辑 LoadDefaults() 函数
* http://www.multiwii.com/wiki/index.php?title=Config.h#Individual_defaults
*/
//#define MY_PRIVATE_DEFAULTS "filename.h" 更改filename.h为你自己的默认文件(jpno1注)
/*************************************************************************************************/
/***************** ***************/
/**************** 第 3 部分 - 遥控系统设置 *******/
/***************** ***************/
/*************************************************************************************************/
/* 提示:如果你使用的是标准接收机,不必解除本节的一些注释 */
/**************************************************************************************/
/******** 特殊接收机类型 ********************/
/**************************************************************************************/
/**************************** PPM Sum接收机 ***********************************/
/* 下列几行仅用于特定的仅有一个PPM sum信号的接收机,接在数字针脚2上
根据你的遥控品牌选择相应的行。当你的PPM顺序不同时,你可以随意修改顺序 */
//#define SERIAL_SUM_PPM PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Graupner/Spektrum
//#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Robe/Hitec/Futaba
//#define SERIAL_SUM_PPM ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于Multiplex
//#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //用于一些韩国的/日本三和/其它
// 解除下面这行注释以允许连接PPM_SUM接收机至MEGA板上的标准油门针脚(例.CRIUS AIO上的A8)
//#define PPM_ON_THROTTLE
/********************** Spektrum卫星接收机 *******************************/
/* 以下几行仅用于Spektrum卫星接收机
Spektrum卫星系列是3V设备。不要连接至5V!
对于MEGA板,将灰线连接到RX1,19针脚上。黑线接地。橙线连接到Mega板的3.3V上(或其他3V至3.3V的电源)。
对于PROMINI,将灰线连接到RX0。黑线接地。 */
//#define SPEKTRUM 1024
//#define SPEKTRUM 2048
//#define SPEK_SERIAL_PORT 1 // Pro Mini与其他单串口的板子上只能设为0;在所有基于Mega的板子上设为你选择的0,1,2(在Mega上默认为1)。
//**************************
// 定义此项允许Spektrum或兼容机远程接收机(也就是卫星)通过配置GUI对频。
// 对频模式与上述的相同,只要你的发射机支持。
// 接地,电源,信号必须来自三个邻近的针脚。
// 默认下,它们为接地=4,电源=5,信号=6。这些针脚在多数MultiWii扩展板上都为一排。可在下方覆盖针脚。
// 通常需要在电源针脚上使用3.3V稳压器!!如果你的卫星在对频时停摆(闪烁,但不会常亮停止闪烁),将所有的针脚连接至5V。
//**************************
// 对于Pro Mini,用于卫星的属于FTDI的连接器可以拔掉,并移至那三个相邻针脚。
//#define SPEK_BIND //解除注释以开启Spektrum卫星对频支持。没有它代码可节省约420字节。
//#define SPEK_BIND_GROUND 4
//#define SPEK_BIND_POWER 5
//#define SPEK_BIND_DATA 6
/******************************* SBUS接收机 ************************************/
/* 下面这行仅用于Futaba S-Bus接收机在MEGA板上的RX1的情况(串口1)。
你必须反转S-Bus-串口信号,例如使用十六进制反相器像是IC SN74 LS 04 */
//#define SBUS
//#define SBUS_SERIAL_PORT 1
#define SBUS_MID_OFFSET 988 //SBUS Mid-Point at 1500
/*************************************************************************************************/
/***************** ***************/
/**************** SECTION 4 - ALTERNATE CPUs & BOARDS *******/
/***************** ***************/
/*************************************************************************************************/
/**************************************************************************************/
/**************** 第 4 部分 - 替代CPU和板子 *******/
/**************************************************************************************/
/**************************************************************************************/
/******** Promini专用设置 ********************/
/**************************************************************************************/
/************************** 六轴电机 5 & 6 针脚 *******************************/
/* 用A0与A1针脚代替D5与D6针脚,用于6个电机配置与promini配置
该模式允许在promini上标准接收机的使用
(不必使用PPM sum接收机) */
//#define A0_A1_PIN_HEX
/********************************* Aux 2 针脚 ***********************************/
/* 让你可以使用针脚8或针脚12作为遥控的AUX2输入(只可启用一个,不可全部启用)
如果启用它会使功率针脚(针脚12)或蜂鸣针脚(针脚8)失效 */
//#define RCAUXPIN8
//#define RCAUXPIN12
/**************************************************************************************/
/***************** Teensy 2.0 支持 ******************/
/**************************************************************************************/
/* 解除此项如果你使用的是使用teensyduino的teensy 2.0
它需要运行在16MHz */
//#define TEENSY20
/**************************************************************************************/
/******** 用于ProMicro,Leonardo和其他Atmega32u4板子的设置 ***********/
/**************************************************************************************/
/********************************* 针脚布局 **********************************/
/* 如果所有针脚都能使用,激活此项可获得更好的针脚布局 => 在ProMicro上不可用 */
//#define A32U4ALLPINS
/********************************** PWM设置 **********************************/
/* 激活全部6个硬件PWM输出,电机5 = D11,电机6 = D13。
提示:不可用于sparkfun promicro(针脚11 & 13未被引出)
如果激活:
电机1-6 = 10位硬件PWM
电机7-8 = 8位软件PWM
舵机 = 8位软件PWM
如果未激活:
电机1-4 = 10位硬件PWM
电机5-8 = 10位软件PWM
舵机 = 10位软件PWM */
//#define HWPWM6
/********************************** Aux 2 针脚 **********************************/
/* AUX2针脚在RXO针脚上 */
//#define RCAUX2PINRXO
/* aux2针脚在D17针脚上(RXLED) */
//#define RCAUX2PIND17
/********************************** 蜂鸣针脚 **********************************/
/* 此项将蜂鸣针脚从TX0移动至D8以使用ppm sum或spectrum sat.接收机(如果启用了A32U4ALLPINS则不需此项) */
//#define D8BUZZER
/*********************** Promicro版本相关 ****************************/
/* 反转状态LED用于Promicro版本10 */
//#define PROMICRO10
/**************************************************************************************/
/******** 覆盖默认针脚分配 ********************/
/**************************************************************************************/
/* 仅在你必须改变默认针脚分配时才启用其中一项,例:你的板子没有特定针脚 */
/* 你可能需要依据期望的针脚给PINx与PORTx加上#移位! */
//#define OVERRIDE_V_BATPIN A0 // 代替A3 // 模拟针脚3
//#define OVERRIDE_LEDPIN_PINMODE pinMode (A1, OUTPUT); // 使用A1代替d13
//#define OVERRIDE_LEDPIN_TOGGLE PINC |= 1<<1; // PINB |= 1<<5; //切换LED针脚状态(数字针脚13)
//#define OVERRIDE_LEDPIN_OFF PORTC &= ~(1<<1); // PORTB &= ~(1<<5);
//#define OVERRIDE_LEDPIN_ON PORTC |= 1<<1; // was PORTB |= (1<<5);
//#define OVERRIDE_BUZZERPIN_PINMODE pinMode (A2, OUTPUT); // 使用A2代替d8
//#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2 //PORTB |= 1;
//#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2); //PORTB &= ~1;
/*************************************************************************************************/
/***************** ***************/
/**************** 第 5 部分 - 替代设置 *******/
/***************** ***************/
/*************************************************************************************************/
/****** 串行通讯速度 *********************************/
/* 此为串行接口速度 */
#define SERIAL0_COM_SPEED 115200
#define SERIAL1_COM_SPEED 115200
#define SERIAL2_COM_SPEED 115200
#define SERIAL3_COM_SPEED 115200
/* 在WMP+NK配置中读取WMP/NK两者之间的交错延迟以微秒为单位
如果加速度计校准时间非常长(20或30秒),尝试增大此延迟至4000
它仅与有NK(鸡腿柄)的配置相关 */
#define INTERLEAVING_DELAY 3000
/* 当I2C总线有错误时,我们可在很短的时间内中立化相关值。用微秒表示
它仅与至少有一个WMP的配置相关 */
#define NEUTRALIZE_DELAY 100000
/**************************************************************************************/
/******** 陀螺仪滤波器 ********************/
/**************************************************************************************/
/********************* 一些陀螺仪的低通滤波器 ****************************/
/* ITG3200 & ITG3205 低通滤波器设置。假如你不能消除陀螺仪的所有震动,你可以尝试
减少低通滤波器(LPF)的频率,每次只要减少一档。一旦抽动消失,就保持这个设置。
它对回馈引起的摆动不起作用,所以只在飞行器随机抽动并且所有抑制和
平衡设置失效的时候才修改它。只取消注释其中一项!
重要!改变低通滤波器设置将会改变PID的行为,所以在改变LPF后重新调整你的PID。*/
//#define ITG3200_LPF_256HZ // 此为默认设置,不需要取消注释,只作为参考
//#define ITG3200_LPF_188HZ
//#define ITG3200_LPF_98HZ
//#define ITG3200_LPF_42HZ
//#define ITG3200_LPF_20HZ
//#define ITG3200_LPF_10HZ // 只在极端情况下使用此项,更应该换电机和/或螺旋桨
/* MPU6050 低通滤波器设置。假如你不能消除陀螺仪的所有震动,你可以尝试
减少低通滤波器(LPF)的频率,每次只要减少一档。一旦抽动消失,就保持这个设置。
它对回馈引起的摆动不起作用,所以只在飞行器随机抽动并且所有抑制和
平衡设置失效的时候才修改它。只取消注释其中一项!
重要!改变低通滤波器设置将会改变PID的行为,所以在改变LPF后重新调整你的PID。*/
//#define MPU6050_LPF_256HZ // 此为默认设置,不需要取消注释,只作为参考
//#define MPU6050_LPF_188HZ
//#define MPU6050_LPF_98HZ
//#define MPU6050_LPF_42HZ
//#define MPU6050_LPF_20HZ
//#define MPU6050_LPF_10HZ
//#define MPU6050_LPF_5HZ // 只在极端情况下使用此项,更应该换电机和/或螺旋桨
/****** 陀螺仪平滑化 **********************************/
/* GYRO_SMOOTHING.在你不能消除振动的情况下,_并且_是在尝试了低通滤波器选项_之后_,你
可尝试此通过平均化的陀螺仪平滑化。不适用于多旋翼飞行器!
在有很多振动的直升机,飞机和飞翼(泡沫的)上可获得良好结果。*/
//#define GYRO_SMOOTHING {20, 20, 3} // (*) 分别为roll, pitch, yaw的平均化范围
/************************ 移动平均陀螺仪 **********************************/
//#define MMGYRO 10 // (*) 激活用于陀螺仪的移动平均函数
//#define MMGYROVECTORLENGTH 15 // 移动平均向量的长度(用于可调节的MMGYRO的最大值
/* 移动平均舵机云台信号输出 */
//#define MMSERVOGIMBAL // 激活用于舵机云台的输出移动平均函数
//#define MMSERVOGIMBALVECTORLENGHT 32 // 移动平均向量的长度
/************************ 模拟读取 ********************************** /
/*如果你想更快的模拟读取,注释它。它可能会导致不准确的结果,特别是对多个模拟通道*/
//#define FASTER_ANALOG_READS
/*************************************************************************************************/
/***************** ***************/
/**************** 第 6 部分 - 可选特性 *******/
/***************** ***************/
/*************************************************************************************************/
/************************ 油门随着角度补偿 ********************/
/* 可以让你飞机倾斜的时候不要掉高度。根据角度增加油门,这是可以开下来的,但是要根据飞机不同来调节。免得角度一倾斜,油门窜得太高。
最初构想 by Kraut Rob, first implementation HAdrian */
//#define THROTTLE_ANGLE_CORRECTION 40
/************************* 高级 Headfree 无头模式 ********************/
/* In Advanced Headfree mode when the copter is farther than ADV_HEADFREE_RANGE meters then
the bearing between home and copter position will become the control direction
IF copter come closer than ADV_HEADFREE_RANGE meters, then the control direction freezed to the
bearing between home and copter at the point where it crosses the ADV_HEADFREE_RANGE meter distance
first implementation by HAdrian, mods by EOSBandi
在高级无头模式下,当飞行机超过ADV_HEADFREE_RANGE定义的范围,
起飞点和飞行器的连线将成为控制方向, 当飞行器飞入ADV_HEADFREE_RANGE定义范围,那么控制方向将锁定为原点和飞行器飞入ADV_HEADFREE_RANGE
范围内时位置的连线,
*/
//#define ADVANCED_HEADFREE //去掉注释开启高级无头模式
//#define ADV_HEADFREE_RANGE 15 //高级无头模式范围米.
/************************ 连续陀螺仪校准 ********************/
/* 如果在校准过程中飞行器被移动,陀螺仪校准将会重复。 */
//#define GYROCALIBRATIONFAILSAFE
/************************ AP飞行模式 **********************************/
/* 临时禁用GPS_HOLD_MODE(GPS保持模式),让移动摇杆时可以调整定点位置。*/
#define AP_MODE 40 // Create a deadspan for GPS.
/************************ 辅助特技练习器 ************************************/
/* 在自动复原辅助下训练特技。该值设定ANGLE_MODE接管的点。
记住首先激活ANGLE_MODE!...
值为200将会给你一个很明显的转换 */
//#define ACROTRAINER_MODE 200 // http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944#p17437
/******** 失控保护设置 ********************/
/* 失控保护检查四个控制通道CH1-CH4的脉冲。如果脉冲丢失或低于985us(在这四个通道的任意一个上)
失控保护程序就会启动。从失控保护检测到,再经过FAILSAFE_DELAY的时间,自稳模式就会开启(如果加速度或鸡腿柄可用),
PITCH,ROLL和YAW被置中,油门设为FAILSAFE_THR0TTLE的值。你必须设定该值使下降速度在1m/s左右
以获得最佳结果。该值取决于你的配置,总重量和一些其他参数。接下来,在FAILSAFE_OFF_DELAY之后,飞行器会被锁定,
并且电机会停止。如果遥控脉冲在到达FAILSAFE_OFF_DELAY时间之前恢复,在很短的保护时间之后遥控就会恢复正常。 */
//#define FAILSAFE // 解除注释以激活failsafe函数
#define FAILSAFE_DELAY 10 // 用于丢失信号之后失控保护激活之前的保护时间。1步=0.1秒 - 示例中为1秒
#define FAILSAFE_OFF_DELAY 200 // 用于电机停止前的着陆时间,以0.1秒为单位。1步=0.1秒 - 示例中为20秒
#define FAILSAFE_THROTTLE (MINTHROTTLE + 200) // (*) 用于降落的油门级别 - 可与MINTHROTTLE相关联 - 如本例所示
#define FAILSAFE_DETECT_TRESHOLD 985
/***************** DFRobot LED 光环 *********************************/
/* I2C DFRobot LED光环通讯 */
//#define LED_RING
/******************************** LED闪光灯 ***********************************/
//#define LED_FLASHER
//#define LED_FLASHER_DDR DDRB
//#define LED_FLASHER_PORT PORTB
//#define LED_FLASHER_BIT PORTB4
//#define LED_FLASHER_INVERT
//#define LED_FLASHER_SEQUENCE 0b00000000 // leds关闭
//#define LED_FLASHER_SEQUENCE_ARMED 0b00000101 // 创建双闪
//#define LED_FLASHER_SEQUENCE_MAX 0b11111111 // 全照明
//#define LED_FLASHER_SEQUENCE_LOW 0b00000000 // 无照明
/******************************* 着陆灯 *********************************/
/* 着陆灯
使用一个输出针脚控制着陆灯。
它与从声纳获得的高度数据结合时
可以自动开关。 */
//#define LANDING_LIGHTS_DDR DDRC
//#define LANDING_LIGHTS_PORT PORTC
//#define LANDING_LIGHTS_BIT PORTC0
//#define LANDING_LIGHTS_INVERT
/* 依据声纳传来的数在地面之上的高度(以cm为单位) */
//#define LANDING_LIGHTS_AUTO_ALTITUDE 50
/* 让闪光灯的样式应用于着陆灯LED */
//#define LANDING_LIGHTS_ADOPT_LED_FLASHER_PATTERN
/************************* 飞行时加速度计校准 *****************************/
/* 此项会激活加速度计飞行时校准 */
//#define INFLIGHT_ACC_CALIBRATION
/******************************* OSD切换 *************************************/
// 此项会添加一个可被OSD解读的激活状态的选框(比如说开关覆盖物)
//#define OSD_SWITCH
/**************************************************************************************/
/*********************** 发射机-相关 **************************/
/**************************************************************************************/
/* 在摇杆中点周围引入一个死区(译者注:无作用控制区)
必须大于零,如果你不需要在roll,pitch和yaw上的死区就注释掉它 */
//#define DEADBAND 6
/**************************************************************************************/
/*********************** GPS **************************/
/**************************************************************************************/
/* GPS使用一个串口
如果启用,在此定义Arduino串口号与UART速度
注:如在NMEA模式只有RX针脚是被使用的,GPS不可被multiwii配置
在NMEA模式下,GPS必须配置为输出GGA与RMC NMEA语句(在大部分GPS设备中通常为默认配置)
至少为5Hz更新速率。解除第一行注释来选择用于GPS的arduino串口 */
//#define GPS_SERIAL 2 // flyduino v2应设为2。此为arduino MEGA上的串口号
//#define GPS_PROMINI_SERIAL // 当ardu(ino)启动时如果已连接了GPS,将会自动检测
// 避免使用115200波特因为16MHz Arduino 115200波特率超过2%速度误差(57600有0.8%的误差)
#define GPS_BAUD 57600
/* GPS协议
NMEA - 标准NMEA协议。需要GGA,GSA与RMC语句
UBLOX - U-Blox二进制协议,使用来自源码树的ublox配置文件(u-blox-config.ublox.txt)
MTK_BINARY16 与 MTK_BINARY19 - 基于MTK3329芯片的GPS,使用DIYDrones二进制固件(v1.6 或 v1.9)
在使用UBLOX与MTK_BINARY时你不需要在multiwii代码中使用GPS_FILTERING!!! */
//#define NMEA
//#define UBLOX
//#define MTK_BINARY16
//#define MTK_BINARY19
//#define INIT_MTK_GPS // 初始化MTK GPS。使其使用选定的速度,5Hz更新速率与GGA & RMC语句或二进制的设置
/* I2C GPS设备,使用一个独立的arduino + GPS设备制作
包含一些导航函数
由EOSBandi贡献 http://code.google.com/p/i2c-gps-nav/
你必须使用I2CGpsNav r33以上版本 */
//#define I2C_GPS
// 如果你的I2C GPS板有声纳支持
//#define I2C_GPS_SONAR
/* 从Misio-OSD中读取GPS数据 - GPS模块连接至OSD,然后MultiWii从OSD中读取GPS数据 - 已测试并且运行正常! */
//#define GPS_FROM_OSD
/* 通过LED闪烁表明GPS搜到了至少5颗有效的卫星 - 由MIS修改 - 使用常亮的LED(CRIUS AIO上为黄色)led作为星数指示器工作
- GPS无定位 -> LED闪烁速度为收到GPS帧的速度
- 定位并且星数小于5 -> LED关闭
- 定位并且星数 >= 5 -> LED闪烁,闪一下表示5颗星,闪两下表示6颗星,三下表示7 ... */
#define GPS_LED_INDICATOR
//#define USE_MSP_WP // 启用MSP_WP命令,用于WinGUI显示与记录家与定点的位置
//#define DONT_RESET_HOME_AT_ARM // 家(HOME)的地点会在每次解锁时重置,解除注释此项来禁用它(你可以通过校准陀螺仪来设置家的地点)
/* GPS navigation can control the heading */
#define NAV_CONTROLS_HEADING true // 飞行器面对着航电飞行,磁场保持必须为此开启
#define NAV_TAIL_FIRST false // true - 飞行器以尾部首先飞来
#define NAV_SET_TAKEOFF_HEADING true // true - 当飞行器到达家的位置时他会旋转至起飞时的角度
/* 从这里获取你的磁偏角:http://magnetic-declination.com/
转换度+分至小数的角度,通过 ==> 度+分*(1/60)
注意磁偏角的符号,它可为负或正(西或东) */
//#define MAG_DECLINIATION 3.96f // 用于匈牙利布达佩斯。
#define MAG_DECLINIATION 0.0f
#define GPS_LEAD_FILTER // 添加向前预测滤波以补偿GPS延迟。代码基于Jason Short领导的滤波器实现
//#define GPS_FILTERING // 添加5元素移动平均滤波器至GPS坐标,帮助消除GPS噪波但会增加延时,注释以禁用
#define GPS_WP_RADIUS 200 // 如果我们与航点在此距离以内,我们则认为已到达航点(以cm为单位)
#define NAV_SLEW_RATE 30 // 将速率控制添加至导航输出,可磨平导航角度毛刺
/**************************************************************************************/
/*********************** LCD/OLED - 显示设置 *********************/
/**************************************************************************************/
/* http://www.multiwii.com/wiki/index.php?title=Extra_features#LCD_.2F_OLED */
/***************************** LCD种类 **********************************/
/* 选择用于配置和遥测的LCD,见下方注解 */
//#define LCD_DUMMY // 无物理LCD附加。通过定义此与LCD_CONF,发射机遥杆可用于设置增益,通过观察LED闪烁。
//#define LCD_SERIAL3W // Alex的初始变体使用3条导线,使用rx针脚进行传输@固定的9600波特率
//#define LCD_TEXTSTAR // 串口LCD:Cat's Whisker品牌的LCD_TEXTSTAR模块CW-LCD-02(拥有4个输入按键用于选择菜单)
//#define LCD_VT100 // 串口LCD:vt100兼容终端仿真(blueterm,putty等)
//#define LCD_TTY // 串口LCD:用于通过线缆与arduino IDE“串口监视器”连接调整参数
//#define LCD_ETPP // I2C LCD:Eagle Tree品牌的Power Panel LCD,使用i2c(非串口)
//#define LCD_LCD03 // I2C LCD:LCD03,使用i2c
//#define OLED_I2C_128x64 // I2C LCD:OLED http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
//#define OLED_DIGOLE // I2C OLED from http://www.digole.com/index.php?productID=550
/****************************** 显示设置 ***********************************/
#define LCD_SERIAL_PORT 0 // 在Pro Mini以及其他单串口板上只能设为0,在任何基于Mega的板子上可设置为你的选择
//#define SUPPRESS_OLED_I2C_128x64LOGO // 禁用OLED logo显示来节省储存
/* 为获得更好的可读性,使用双倍字体高度。减少一半可见#行。
* 每个页面的下半部分以按住shift的键盘文字作为名字:
* 1 - ! , 2 - @ , 3 - # , 4 - $ , 5 - % , 6 - ^ , 7 - & , 8 - * , 9 - (
* 你必须同时添加到你的lcd.遥测.*序列中
*/
//#define DISPLAY_FONT_DSIZE //目前只能应用于OLED_I2C_128x64 OLED_DIGOLE
/* 显示风格 - 通过LCD_ setting自动检测 - 仅在覆盖默认时激活 */
//#define DISPLAY_2LINES
//#define DISPLAY_MULTILINE
//#define MULTILINE_PRE 2 // 多行配置菜单#之前的行
//#define MULTILINE_POST 6 // 多行配置菜单#之后的行
//#define DISPLAY_COLUMNS 16
/******************************** 导航 ***********************************/
/* 用来导航LCD配置菜单的按键 */
#define LCD_MENU_PREV 'p'
#define LCD_MENU_NEXT 'n'
#define LCD_VALUE_UP 'u'
#define LCD_VALUE_DOWN 'd'
#define LCD_MENU_SAVE_EXIT 's'
#define LCD_MENU_ABORT 'x'
/**************************************************************************************/
/*********************** LCD配置菜单 **************************/
/**************************************************************************************/
/* 如果你准备将LCD或OLED用于调整参数,那么解除本行注释
* http://www.multiwii.com/wiki/index.php?title=Extra_features#Configuration_Menu */
//#define LCD_CONF
/* 用于包含通过LCD进行AUX1 -> AUX4辅助开关切换的设置 */
//#define LCD_CONF_AUX
/* 可选排除一些功能 - 解除注释以禁用一些不需要的遥测页面或通道设置 */
//#define SUPPRESS_LCD_CONF_AUX2
//#define SUPPRESS_LCD_CONF_AUX34
/**************************************************************************************/
/*********************** LCD telemetry **************************/
/**************************************************************************************/
/* to monitor system values (battery level, loop time etc. with LCD
* http://www.multiwii.com/wiki/index.php?title=LCD_Telemetry */
/******************************** 激活 ***********************************/
//#define LCD_TELEMETRY
/* 在解除注释于此的一个遥测页面组合中启用自动跳转。 */
//#define LCD_TELEMETRY_AUTO "123452679" // 升序显示1至9页
//#define LCD_TELEMETRY_AUTO "212232425262729" // 着重显示第2页
/* 手动步进序列;序列的第一页在启动时加载以允许无交互时显示 */
//#define LCD_TELEMETRY_STEP "0123456789" // 应包含一个0以允许关闭。
/* 可选地排除一些功能 - 解除注释以禁用一些不需要的遥测页面 */
//#define SUPPRESS_TELEMETRY_PAGE_1
//#define SUPPRESS_TELEMETRY_PAGE_2
//#define SUPPRESS_TELEMETRY_PAGE_3
//#define SUPPRESS_TELEMETRY_PAGE_4
//#define SUPPRESS_TELEMETRY_PAGE_5
//#define SUPPRESS_TELEMETRY_PAGE_6
//#define SUPPRESS_TELEMETRY_PAGE_7
//#define SUPPRESS_TELEMETRY_PAGE_8
//#define SUPPRESS_TELEMETRY_PAGE_9
//#define SUPPRESS_TELEMETRY_PAGE_R
/********************************************************************/
/**** 接收信号强度显示(RSSI) ****/
/********************************************************************/
//#define RX_RSSI
//#define RX_RSSI_PIN A3
/********************************************************************/
/**** 蜂鸣器(BUZZER) ****/
/********************************************************************/
//#define BUZZER
//#define RCOPTIONSBEEP // 如果你想在遥控选项在通道Aux1至Aux4改变时让蜂鸣器响起,解除注释此项
//#define ARMEDTIMEWARNING 330 // (*) 在解锁一段时间[s]后触发警报以保护锂电。(如果你的发射机没有倒计时)
//#define PILOTLAMP //如果你在使用X-Arcraft导航灯那么解除注释
/********************************************************************/
/**** 电池电压监控 ****/
/********************************************************************/
/* 用于V BAT(电池电压)监控
在电阻分压后,我们在模拟V_BAT针脚上应获得[0V;5V]->[0;1023]
通过R1=33k和R2=51k
vbat = [0;1023]*16/VBATSCALE
必须与#define BUZZER结合! */
//#define VBAT // 解除注释本行以激活vbat代码
#define VBATSCALE 131 // (*) 如果读取到的电池电压与真实电压不同,修改该值
#define VBATNOMINAL 126 // 12,6V满电标准电压 - 仅用于lcd.遥测
#define VBATLEVEL_WARN1 107 // (*) 10,7V
#define VBATLEVEL_WARN2 99 // (*) 9.9V
#define VBATLEVEL_CRIT 93 // (*) 9.3V - 临界情况:如果vbat持续低于该值,就会触发警报长响
#define NO_VBAT 16 // (*) 避免在没有电池时响起
/********************************************************************/
/**** 功率计(电池容量监控) ****/
/********************************************************************/
/* 启用电池能量消耗监控(以mAh考虑)
允许在GUI中或通过LCD设置警戒值
全部描述与操作方法请见此 http://www.multiwii.com/wiki/index.php?title=Powermeter
有两个选项:
1 - 硬件: - (使用硬件传感器,配置后将获得相当不错的结果)
2 - 软件: - (使用plush与mystery电调可获得+-5%的料号结果,使用SuperSimple电调结果不佳) */
//#define POWERMETER_SOFT
//#define POWERMETER_HARD
#define PSENSORNULL 510 // (*) 设置0电流时analogRead()的值;I=0A时,我的传感器得到1/2 Vss;约为2.49伏;
#define PINT2mA 132 // (*) 用于遥测显示:一个用在arduino模拟转换为mA时的整数(例4.9 / 37 * 100
/*soft: use fictional value, start with 100.
for hard and soft: larger PINT2mA will get you larger value for power (mAh equivalent) */
/********************************************************************/
/**** 高度保持 ****/
/********************************************************************/
/*定高模式(AltHold)是使用自动油门,试图保持目前的高度的稳定模式。
定高模式时高度仍然可以通过提高或降低油门控制,但中间会有一个油门死区,油门动作幅度超过这个死区时,飞行器才会响应你的升降动作
当进入任何带有自动高度控制的模式,你目前的油门将被用来作为调整油门保持高度的基准。
在进入高度保持前确保你在悬停在一个稳定的高度。
飞行器将随着时间补偿不良的数值。只要它不会下跌过快,就不会有什么问题。
离开高度保持模式时请务必小心,油门位置将成为新的油门,
如果不是在飞行器的中性悬停位置,将会导致飞行器迅速下降或上升。默认设置是 +/-50 uncommend and change the value below if you want to change it. */
#define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 50
//#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.
/* 解除注释以禁用高度保持特性。
* 此项可用于所有下列应用
* + 你有一个气压传感器
* + 想要高度值输出
* + 不需要使用高度保持特性
* + 想要节省储存空间
*/
//#define SUPPRESS_BARO_ALTHOLD
/********************************************************************/
/**** 高度爬升率测定器 (高度仪) ****/
/********************************************************************/
/* 启用以获得来自上升/下降中的飞行器/飞机的声频反馈。
* 需要工作中的气压计。
* 目前,输出会通过串行线发送至启用中的vt100终端程序。
* 有两种方式可选(启用其中一个或同时启用)
* 方式1:使用来自气压计的短期移动(更大的代码尺寸)
* 方式2:使用来自气压计的长期高度观察(更小的代码尺寸)
*/
//#define VARIOMETER 12 // 可用值:12 = 方式 1 & 2 ;1 = 方式 1;2 = 方式 2
//#define SUPPRESS_VARIOMETER_UP // 如果不期望有用于向上移动的信号
//#define SUPPRESS_VARIOMETER_DOWN // 如果不期望有用于向下移动的信号
//#define VARIOMETER_SINGLE_TONE // 仅使用一个声调(响铃);对未打补丁的vt100终端是必需的
/********************************************************************/
/**** 板子命名 ****/
/********************************************************************/
/*
* 这个名字会与MultiWii版本号共同显示
* 在打开电源时显示在LCD上。
* 如果你没有显示设备那么你可以启用LCD_TTY并
* 使用arduino IDE的串口监控器来查看此信息。
*
* 你必须保持此处文本的格式!
* 它必须总共有16个字母,
* 最后4个字母将会被版本号覆盖。
*/
#define BOARD_NAME "MultiWii V-.--"
// 123456789.123456
/************* 在EEPROM中支持多个配置参数文件 ************/
//#define MULTIPLE_CONFIGURATION_PROFILES
/************* do no reset constants when change of flashed program is detected ***********/
#define NO_FLASH_CHECK
/*************************************************************************************************/
/***************** ***************/
/**************** 第 7 部分 - 调试 & 开发者 **************/
/***************** ***************/
/*************************************************************************************************/
/**************************************************************************************/
/******** 使用扩展范围[0-2000]微秒的特殊电调 ********************/
/**************************************************************************************/
//#define EXT_MOTOR_RANGE // 在用场效应管驱动空心杯时必须注释它,否则电机上电就转
/**************************************************************************************/
/*********************** 电机,舵机和其他的预置 ***********************/
/**************************************************************************************/
/* 当油门命令在低位时电机将不会旋转
这是立即停止电机的替代方案 */
//#define MOTOR_STOP
/* 一些遥控器的中立点不是1500。可以在此修改 */
#define MIDRC 1500
/*********************** 舵机刷新率 ***********************/
/* 默认50Hz舵机刷新率 */
#define SERVO_RFR_50HZ
/* 升至160Hz舵机刷新率 .. 用于多数模拟舵机 */
//#define SERVO_RFR_160HZ
/* 升至300Hz刷新率,它越快越好(100-300Hz取决于使用的舵机和舵机状态)。
用于数字舵机
不要用于模拟舵机!它们可能遭到破坏。(一些可以使用,但请非常小心) */
//#define SERVO_RFR_300HZ
/*********************** 硬件PWM舵机 ***********************/
/* 硬件PWM舵机输出用于Arduino Mega..移动至:
Pitch = pin 44
Roll = pin 45
CamTrig = pin 46
SERVO4 = pin 11 (aileron left for fixed wing or TRI YAW SERVO)
SERVO5 = pin 12 (aileron right for fixed wing)
SERVO6 = pin 6 (rudder for fixed wing)
SERVO7 = pin 7 (elevator for fixed wing)
SERVO8 = pin 8 (motor for fixed wing) */
/*此选项禁用其他用于舵机的软件PWM - 仅有五个硬件控制舵机可用
*/
#define MEGA_HW_PWM_SERVOS
/* ps:以下真心不懂
HW PWM Servo outputs for 32u4 NanoWii, MicroWii etc. - works with either the variable SERVO_RFR_RATE or
* one of the 3 fixed servo.refresh.rates *
* Tested only for heli_120, i.e. 1 motor + 4 servos, moves..
* motor[0] = motor = pin 6
* servo[3] = nick servo = pin 11
* servo[4] = left servo = pin 10
* servo[5] = yaw servo = pin 5
* servo[6] = right servo= pin 9
*/
//#define A32U4_4_HW_PWM_SERVOS
#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
//#define SERVO_PIN5_RFR_RATE 200 // separate yaw pwm rate.
// In Hz, you can set it from 20 to 400Hz, used only in HW PWM mode for 32u4
/********************************************************************/
/**** 节约记忆体空间 ****/
/********************************************************************/
/* 针对Flash和RAM内存的普遍短缺 leonardo m32u4 and others */
/**** 可以通过禁用串口命令处理来实现。***
* 它_不会_对RXserial,Spektrum,GPS的处理产生影响。这些不会受到影响,仍可以照常工作。
* 启用下列选项中其中一项或两项 */
/* 移除所有新MultiWii串行协议命令的处理。
* 这将会禁用GUI,winGUI,android应用以及其他所有使用MSP的程序。
* 你必须找到其他调试参数的方法(如LCD_CONF)或保持默认。
* 如果你是通过i2c或串口/蓝牙使用LCD/OLED,可以放心使用 */
//#define SUPPRESS_ALL_SERIAL_MSP // 节省约2700字节
/* 移除其他串行命令处理。
* 包含通过串口操作lcd.配置菜单,lcd.遥测与永久.日志。
* 通过在发射机上摇杆输入进行操作不会受到影响,操作起来是一样的。 */
//#define SUPPRESS_OTHER_SERIAL_COMMANDS // 节省约0至100字节,取决于启用的特性
/**** 保证代码中无初始设置和复位的缺陷。
这需要一个手动初始设置的PID等手动写defaults.mwi;
reset in GUI will not work on PIDs
*/
//#define SUPPRESS_DEFAULTS_FROM_GUI
//#define DISABLE_SETTINGS_TAB // Saves ~400bytes on ProMini
/********************************************************************/
/**** 诊断 ****/
/********************************************************************/
/* 记录像最大周期时间与其他可能的值
记录值可通过LCD配置看到
设为1,启用'R'选项来重置值,最大电流,最大高度
设为2,添加最大/最小周期时间
设为3,以每个电机为单位添加额外的功耗(它使用一个很大的数组并且很吃储存,如果POWERMETER <> PM_SOFT) */
//#define LOG_VALUES 1
/* 永久记录至eeprom - 可在(多数)升级与参数重置中保留下来。
* 常用于追踪控制板生命周期中的飞行次数等。
* 写入至eeprom末端 - 不应与已储存的参数冲突。
* 记录的值:累积的生存时间,#重启/重置/初始化事件,#解锁事件,#锁定事件,最后解锁时间,
* #失控保护@锁定,#i2c_errs@锁定
* 设置你的mcu的eeprom的尺寸以激活:promini 328p:1023;2560:4095。
* 启用一项或更多选项以显示记录
*/
//#define LOG_PERMANENT_SHOW_AT_STARTUP // 启用以在启动时显示记录
//#define LOG_PERMANENT_SHOW_AT_L // 启用以在接收到'L'时显示记录
//#define LOG_PERMANENT_SHOW_AFTER_CONFIG // 启用以在退出LCD配置菜单之后显示记录
//#define LOG_PERMANENT_SERVICE_LIFETIME 36000 // 以秒为单位;在10小时的解锁时间之后,在启动时响起服务警告
/* 添加调试代码
不需要并且也不推荐在平常运行时开启
将会额外添加代码,可能会使主循环变慢或使飞行器不可飞行 */
//#define DEBUG
//#define DEBUG_FREE // will add 'F' command to show free memory
/* 使用此项在没有发射机时触发LCD配置 - 仅用于调试 - 不要在此项激活的情况下飞行 */
//#define LCD_CONF_DEBUG
/* 使用此项在没有发射机时触发遥测 - 仅用于调试 - 不要在此项激活的情况下飞行 */
//#define LCD_TELEMETRY_DEBUG //该形式在所有的屏幕间轮换,LCD_TELEMETRY_AUTO必须同时被定义。
//#define LCD_TELEMETRY_DEBUG 6 //该形式停在特定的屏幕上。
/* 启用从飞行器到GUI的字符串传送 */
//#define DEBUGMSG
/********************************************************************/
/**** 电调校准 ****/
/********************************************************************/
/* 同时校准所有连接到MWii的电调(可以避免来回连接每一个电调)
警告:这将产生一个特别版本的MultiWii代码
这个特殊的版本是不可以用来飞行的。它只可以用来校准电调
使用方法详见 http://code.google.com/p/multiwii/wiki/ESCsCalibration */
#define ESC_CALIB_LOW MINCOMMAND
#define ESC_CALIB_HIGH 2000
//#define ESC_CALIB_CANNOT_FLY // 解除注释激活此项
/**** 内部频率 ****/
/* 在主循环中的稀有循环操作的频率,取决于周期时间
时间基数为主循环周期时间 - 值为6意味着每六个主循环触发一次操作
示例:周期时间大约在3ms,执行操作就在每 6*3ms=18ms
取值范围 [1; 65535] */
#define LCD_TELEMETRY_FREQ 23 // 通过串口发送遥测数据 23 <=> 60ms <=> 16Hz (只发送隔行数据,8Hz上传速率)
#define LCD_TELEMETRY_AUTO_FREQ 967 // 翻到下一个遥测页面 967 <=> 3s
#define PSENSOR_SMOOTH 16 // len of averaging vector for smoothing the PSENSOR readings; should be power of 2; set to 1 to disable
#define VBAT_SMOOTH 16 // len of averaging vector for smoothing the VBAT readings; should be power of 2; set to 1 to disable
#define RSSI_SMOOTH 16 // len of averaging vector for smoothing the RSSI readings; should be power of 2; set to 1 to disable
/********************************************************************/
/**** 桨/马达动平衡 ****/
/********************************************************************/
/* !!! No Fly Mode !!! */
//#define DYNBALANCE // (**) 用gui调整动平衡
/********************************************************************/
/**** 回归测试 ****/
/********************************************************************/
/* 只用作开发用途:
考虑到测试编译时,不同的config参数是保持在一起的,所以可以更简单地重复测试config设置,
它的意义是可以帮助检测编译时的错误,让多种不同的特性以协调的方式运作。
这并不是用来制作你自己的飞行固件的。
使用方法:
- 不要在config.h中做任何设置,
- 启用#define COPTERTEST 1,然后编译
- 如果可能的话,检查程序大小
- 重复测试其他值2, 3, 4等。
*/
//#define COPTERTEST 1
/*************************************************************************************************/
/***************** ***************/
/**************** 第 8 部分 - 不推荐使用 *******/
/***************** ***************/
/*************************************************************************************************/
/*这些功能将在未来被移除的。不再更新
*基于这样的特点功能。所有这些功能默认是关闭的。
*/
/************************** WMP的电源引脚 *******************************/
//#define D12_POWER // Use D12 on PROMINI to power sensors. Will disable servo[4] on D12
/* disable use of the POWER PIN (allready done if the option RCAUXPIN12 is selected) */
#define DISABLE_POWER_PIN
/*************************************************************************************************/
/**** 可配置参数结束 ****/
/*************************************************************************************************/
#endif /* CONFIG_H_ */