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