1.7 list of differences with the 1.6

ALL: BARO is more precise, but still not perfect (1m to 2m amplitude). Note it's a code issue, not a baro component issue.

ALL: RC channels AUX2, CAM1 CAM2 added. only relevant for PPM SUM stream or MEGA boards.
 	On the 328p with a standard receiver, only the first 5 channels are recognized.
 	CAM1 and CAM2 controls are not yet implemented.

ALL: AUX1 and AUX2 switches are fully customizable via a 3 state position.
	We can activate/deactivate individually  level mode (ACC), baro or compass (mag).
	It's a generic approach which lets other possibilities to control things in the future.
	With this principle, it's possible to activate permanently the options you want even if you have only 4 channels 
	(replace the FORCE LEVEL option)

ALL: CAM triger option:
	a servo can be connected on digital pin A2 (pro mini) to activate the trigger of a camera
	the option can be activated or deactivated via the button configuration panel AUX1/AUX2
	#define CAM_SERVO_HIGH 2000  // the position of HIGH state servo
	#define CAM_SERVO_LOW 1020   // the position of LOW state servo
	#define CAM_TIME_HIGH 1000   // the duration of HIGH state servo expressed in ms
	#define CAM_TIME_LOW 1000    // the duration of LOW state servo expressed in ms
	the PIN on arduino mega is also A2, but this is not the final PIN mapping

ALL CAM stab (servo tilt) button option:
	the servo tilt option can be activated or deactivated via the button configuration panel AUX1/AUX2

ALL: BI COPTER is now a avatar style implementation.
	on a pro mini: 9 motor left, 10 motor right, 11 servo left, 3 servo right
	on mega: 3 motor left, 5 motor right, 6 servo left, 2 servo right

ALL: addition of Y4 (not tested)
	on a pro mini: motors 9,10,11,3
	on mega: motors 3,5,6,2
	REAR1 , FRONT R , REAR2 , FRONT L

ALL: addition of HEX6X (not tested)
	on a pro mini: motors 9,10,11,3,6,5
	on mega: motors 3,5,6,2,7,8
	REAR_R , FRONT_R , REAR_L , FRONT_L , RIGHT , LEFT

ALL: new level mode
	The level mode is completely redesigned with a coherent independent trim
	There a now a PI control loop for level mode based on angle estimation.
	The old auto level strength value was a sort of P only control loop.
	With the new code, the I term allows to refine the remaining angular error for a better angle positioning accuracy.
	With an RC rate = 1, the angle at full stick is around 45deg => a flip should never happen in this mode.

MAIN SOFT: software trim for stable mode
	It is now possible to adjust the trim of the level mode to match the same TX trim used for the acro mode.
	1) disarm the motors
	2) full throttle (must be >1900)
	3) full PITCH forward/backward and full ROLL left/right (2 axis possibilities) will trim the level mode according to 
	the neutral angle you want to change. The status LED will blink to confirm each ticks.

MAIN SOFT: new calibration procedure
	The ACC calibration differs now from the gyro calibration.
	gyro calibration: it's still done at each power on. It's also possible manually as before: min throttle+full pitch 
	backward+full yaw left.
	acc calibration: motor disarmed, full throttle up, full pitch backward+full yaw left.

MAIN SOFT: it was in 1.6 but not mentioned. it's possible to arm/disarm motors
	either via min throttle + full yaw stick or full roll stick.

MAIN SOFT: anti yaw jump modification for multi with 4 motors or more

MAIN SOFT: servo range for tricopter 
	#define TRI_YAW_CONSTRAINT_MIN 1020
	#define TRI_YAW_CONSTRAINT_MAX 2000

MAIN SOFT: thanks to Ciskje, integration of L3G4200D gyro (this Gyro is present in PIPO ISU)

MAIN SOFT: HMC5883 compass integration 

MAIN SOFT: compass lock now works
	the option can be activated or deactivated via the button configuration panel AUX1/AUX2
	the lock is activated 1s after the stick release
	the lock is maintained only if the YAW stick in centred +/- 50
	In some case, especially with the 5883, the mag must be calibrated otherwise, the direction is not good.
	The calibration procedure is not yet implemented.

MAIN SOFT: there was a bug on servo tilt (it came back to zero at around 45deg due to a variable overflow)

MAIN SOFT: thanks to Syberian, a bug was corrected to prevent ACC correction just before hovering.
         It could explain  some odd flips when using autolevel at the beginning

MAIN SOFT: thanks to ziss_dm, a bug was corrected about the ITG3200: there was a variable
	overflow which occured only for high PITCH variation.

MAIN SOFT: thanks to mis_b (MIS), integration of failsafe code.
 	Failsafe detect absence of RC pulse on THROTTLE channel (standard PPM receiver)
 	If the pulse is OFF the failsafe procedure is initiated.

 	After configurable FAILSAVE_DELAY time of pulse absence,
 	the level mode is switched to ON (if ACC or nunchuk is available),
 	PITCH, ROLL and YAW is centered and THROTTLE is set to FAILSAVE_THROTTLE value.
 	This value is dependent from your configuration, AUW and some other params.

 	Next, afrer configurable FAILSAVE_OFF_DELAY time,
 	the copter is disarmed, and motors are stopped.
 	If RC pulse coming back before reached FAILSAVE_OFF_DELAY time,
 	after the small quard time the RC control is returned to normal.

	The fail-safe can be deactivated via #define

MAIN SOFT: thanks to ziss_dm, nunchuk alone integration (incompatible with WMP and seen as a standalone I2C ACC)

MAIN SOFT: bug correction the mag indication was reversed

MAIN SOFT: small bug correction in angle calculation (conversion rad->1/10 deg)

MAIN SOFT: added a small delay after ITG3200 init to have a better calibration

MAIN SOFT: thanks to zara,
	vbat code simplification + low pass filter.
	vbat activation via #define.

MAIN SOFT: reduce the PPM sum recognition delay between 2 sequences (5ms->3ms).
	might be the source of frsky PPM sum problem

GUI: 3D copter attitude visualization

GUI: ACC calibration. there is now a calibrate button to calibrate the ACC directly from the GUI
	(it resets the soft trim)

GUI: thanks to Eberhard, better display of serial ports on Mac OS X and Linux

GUI: the memory leak bug GUI is corrected

GUI and LCD: D is now positive (to avoid confusion in explanations)

LCD: all parameters are now customizable via the LCD thanks to the work initiated by Shirka.
	This first one is still P  for both ROLL&PITCH as it is the most used.

LCD: implementation of TextStar LCD tanks to Hamburger & gtrick90 code

OSD: implementation of MIS code thanks to Rurek
         thanks to Rurek and mis_b, optimisation of OSD code Serial write is driven by a switchable interrupt,
         minimising  delay to transmit data

SITE: www.multiwii.com was updated accordingly.

SPECIAL NOTE ABOUT THE PULL-UPS:
- they are now enable by default
- WARNING if you use I2C devices that don't support 5V.

- If you use a WMP alone: enable it in soft
- If you use a WMP + NK : enable it in soft
- If you use a WMP + BMP020 (5V friendly thanks to its LLC): enable it in soft
- If you use a WMP + (LLC + I2C devices): enable it in soft
- If you use a WMP + direct I2C bus connection I2C devices (not 5V friendly): disable it in soft and use external 
pull-ups on 3.3V. note that most breakout boards are built with pullups already available.




1.6 list of differences with the 1.5

  - MIDRC in a #define configuration : allow to choose another stick center position for specific TX

  - Free Flight IMU integrated, designed by Jussi (see specific rcgroups topic). Front orientation = Y arrow
	- Gyro ITG3200 integration : note this version uses a different I2C address of the sparkfun breakout ITG3200 board
		the ITG3200 replaces the WMP once the #define line is uncommented. Can be used as a single sensor if needed.
	- Acc BMP180: thanks to the code of Opie, but I changed the orientation to match FFIMU
		it works fine and is activated with mode selection.
 	- Magnetometer HMC5843: for the moment integrated for visualization purpose only in the GUI. works only for inclination<25deg
	- Baro BMP085: it acts as a celling and is activated with mode selection.
		Not well implemented for the moment, big jump. To deactivate it, it's possible to comment the #define line

  - pullups are now de activated by default, there is a #define INTERNAL_I2C_PULLUPS to activate them.
	the de activation of pullups is mandatory for a FFIMU direct connection with no LLC

  - support of the following ACCs: BMA180, BMA020, ADXL345. Thanks to the contribution of mgros, opie11 and Point65

  - GUI: new buttons to indicate the presence of sensors.

  - bug corrected (thanks to Bo): in some case with a WMP + annex ACC,
    WMP data was interpreted as NK data yaw jump correction modification (less present)

  - remove old way to init motor and calibrate. No more full throttle fear.

  - corrected: PIN5&6 switch bug for HEX6 and Y6

  - Arduino MEGA integration
    thanks to the work initiated by Mariano,
    I completed it to be be fully compatible with Arduino MEGA boards (all configs and options).
    With MEGA boards like seeeduino,
      it's possible to have some config impossible to have with a pro mini: Y6+standard receiver+tilt servos

    it's just a #define to switch
    #define PROMINI or #define MEGA  //Arduino type

    The PIN assignment for RC&motors is compatible with Aeroquad shield mega 2.x

    PIN for MEGA board, not definitive, Jussi is preparing a shield with a different PIN mapping

    PPM_SUM 19 (now separated from RC_THROTTLE assignment)
    RC_THROTTLE 62 (=A8)
    RC_ROLL 63 (=A9)
    RC_PITCH 64 (=A10)
    RC_YAW 65 (=A11)
    RC_MODE 66 (=A12)
    RC_AUX(not used) 67 (=A13)
    RC_7(not used) 68 (=A14)
    RC_8(not used) 69 (=A15)
    I2C SDA 20
    I2C SCL 21
    FRONTMOTORPIN 2 (on 328p was 3) = servo for tricopter
    REARMOTORPIN 3 (on 328p was 9)
    RIGHTMOTORPIN 5 (on 328p was 10)
    LEFTMOTORPIN 6 (on 328p was 11)
    Y6RIGHT(HEXFRONT) 7 (on 328p was 6)
    Y6LEFT(HEXREAR) 8 (on 328p was 5)
    V_BAT_MONITOR A3
    TILT&GIMBAL&WING A0/A1
    POWERPIN 12

  - a bug seen by Mariano in stable mode (sqrt on a negative number) is corrected 

  - TILT ROLL&PITCH is now compatible with TRICOPTER configuration

  - anti gyro glitch : I re introduced a limitation between 2 reads as it seemed to be more stable. Info from Point65.

  - RC rate can be extended to 5. With this option, we should see a more linear response on pitch/roll sticks for very acrobatic setups.

  - on quadris we can notice some “yaw jumps” when the yaw is suddenly stopped.
    There is now a function to smooth the stop.
    If you don't like it just remove the line axisPID[YAW] = constrain(axisPID[YAW],-100-abs(rcCommand[YAW]),+100+abs(rcCommand[YAW]));

  - sketch: I added an  “advanced users settings” part with a description of some more tunning possibilities.

  - If the ACC is present (Nunchuk or other I2C), you won't be able to arm the motors until you do a proper ACC calibration manually.
    If the calibration is not done or if the multi is too much inclinated, the status LED will slowly blink every 1s.




1.5 list of differences with the 1.4

#define MOTOR_STOP
this is an alternative method to stop immediately the motors when the throttle command is in low position
HEX6 added
motor pin :
//REAR_R => PIN 9
//FRONT_R => PIN 10
//REAR_L => PIN 11
//FRONT_L => PIN 3
//FRONT => PIN 6
//REAR => PIN 5

anti gyro glitch : the time we neutralize data after a hard reset is increased. The impact of gyro glitches is greatly reduced. I can even fly safely with a bad WMP copy doing a hard reset every 5s.

suppression of throttle rate pid curve: replaced by only one relevant value. PID can decrease proportionally between [1500-2000] throttle position (helps to prevent wobbling in fast translation).

internal soft simplification: EEPROM, serial communication, motor naming.

stable mode is greatly improved.

support of ADXL345 I2C acc. Benefit: the loop time WMP+ADXL345 is reduced, allowing a better stability, comparable to a WMP only conf. Obviously, ADXL345 must not be connected with a with a NK setup.The integration of BMA020 I2C acc should be easy because the code frame is ready.

when a NK is detected, the LED blink is much longer after the init step => it's a way to visualize the good detection of a nunchuk.

support of BMP085 I2C barometer. But for visualization purpose only. It can't be activated yet for altitude stabilization.

Known issue:the trim in acro mode is different of the trim in stable mode.

Note:
if you use a NK or a ADXL345 acc. You must do a manual calibration to see good results in gui
- stable mode with NK should indicate 0 / 0 / 200 acc values
- stable mode with ADXL345 should indicate 0 / 0 / 250 acc values
- If you have a constant +/- 400 values on the graph, the calibration is not done.
for the WMP+ADXL345 setup: (+/-BMP085 for curious)
- D12 +1 diode is used to poser the WMP
- a 3.3V is used to power the ADXL345 (stabilized alim or multiple LED from a 5V source)
to reset parameters to default: just upload an old version and the new again.
this version is compatible with everything designed before (WMP only conf or WMP+NK)








1.4:
Serial PPM:
	more explanation on //#define SERIAL_SUM_PPM
	only one line to comment/uncomment in order to activate it
	a bug was corrected about the number of channel

integration of Y6
	the code of the working test version is now merged

integration of pitch/roll servo stabilization (compatible only with QUAD+ and QUADX setup)
	SERVO_TILT_PITCH_PIN: A0
	SERVO_TILT_ROLL_PIN:  A1
	- for each servo, it is possible to set up diferent parameters directly in the sketch (no GUI interraction)
	TILT_PITCH_MIN    1020    //servo travel min, don't set it below 1020
	TILT_PITCH_MAX    2000    //servo travel max, max value=2000
	TILT_PITCH_MIDDLE 1500    //servo neutral value
	TILT_PITCH_PROP   10      //servo proportional (tied to angle) ; can be negative to invert movement

integration of a GIMBAL configuration : mix of pitch/roll angle + input stick servo stabilization
	this is the same as previous, but is is a pure gimbal system (no ESC)
	the input RC stick position is mixed with the angle calculation

suppression of AXIS RATE PID curve which was not enough comprehensible . Replaced by 2 more versatile boxes:
	- ROLL/PITCH RATE: to increase the rotation rate for ROLL&PITCH axis
	- YAW RATE: to increase the rotation rate for ROLL&PITCH axis
	0 = default soft rate ; 0.7 = acro rate ; 1 = insane rate (be careful with 1 setting, it's very violent)

longer blinking LED after each calibration

new calibration approach
	at each initialization:
		the gyro calibration is done
		the acc calibration is done only for a pure gimbal setup
		for other setups, the acc is retrieved from the EEPROM
	on demand (via full left yaw stick + full pitch low stick):
		the gyro calibration is done
		the acc calibration is done and store in the EERPOM
	=> the acc calibration must be done at least once on demand.

adding a #define to supress LCD code in order to save memory space

autolevel strength: the last range was [0;10]. The new range is [0;25] with a reduction weight of 2.5 => more precision for tunning.





1.2:
I pushed a little further the optimization of code size, it's now only 14k.
A lot of work to reduce LCD code without affecting the desired result.
There would be now enough room in the Arduino to run 2 TriiWii code.
It's mainly useful for old Arduino cards with only a 168p inside and half memory.(we can still find these cards less priced on ebay)
The range of parameters is extended in the GUI.
- BI copter mode with 2 servos is introduced, but not yet tested on a real model. I tested only the reaction in the GUI. 






1.1:
A lot of code change:
most float operations in the critical parts (PID loop) are replaced by int operations 
protocol between GUI and arduino is simplified 
LCD code rewrote 
EEPROM code rewrote 
There is no new functionalities, it's more an optimization.
But it increases the speed of the code, and it is also much smaller (19k->15k) 





1.0:
This is a new version which first aim is to consolidate what has already be developed in the thread.
I rename it TriWii to MultiWii as the soft is now designed also for QUAD copter
There are some real improvements and changes:
Sketch: support of TRI, QUAD+ and QUADX 
Sketch: support of PPM SUM input signal of digital pin 2 
Arduino: PIN remapping ! (see the previous posts and main site). Think about doing some soldering before an upgrade from the previous TriWii 
GUI: better PITCH/ROLL representation and representation of the model inclination 
GUI: support of TRI, QUAD+ and QUADX, automatically recognized 
GUI: ACC graph enabled by default 
Site: partially updated, but the main part is ok
The stabilization WMP and NK+WMP is not different from the previous version. 