From 7598c02f5153d6fa1b6333d0b2c5853ea89efbff Mon Sep 17 00:00:00 2001 From: "james.goppert" Date: Thu, 25 Nov 2010 23:26:44 +0000 Subject: [PATCH] Added load/save gain overloads for float arrays to PID, supports mavlink style gain get/set now git-svn-id: https://arducopter.googlecode.com/svn/trunk@928 f9c3cf11-9bcb-44bc-f272-b75c42450872 --- libraries/PID/PID.cpp | 18 ++++++++++++++++++ libraries/PID/PID.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/libraries/PID/PID.cpp b/libraries/PID/PID.cpp index 948d978bd8..955fab10e6 100644 --- a/libraries/PID/PID.cpp +++ b/libraries/PID/PID.cpp @@ -132,6 +132,24 @@ PID::save_gains(int address) eeprom_write_word((uint16_t *) (address + 6), (int)_imax/100); } +void +PID::load_gains(float * gain_array) +{ + _kp = gain_array[0]/ 1000.0; + _ki = gain_array[1]/ 1000.0; + _kd = gain_array[2]/ 1000.0; + _imax = gain_array[3]/ 1000.0; +} + +void +PID::save_gains(float * gain_array) +{ + gain_array[0] = _kp * 1000; + gain_array[1] = _ki * 1000; + gain_array[2] = _kd * 1000; + gain_array[3] = _imax * 1000; +} + /* float read_EE_compressed_float(int address, byte places) diff --git a/libraries/PID/PID.h b/libraries/PID/PID.h index f45be8cb74..9b694b6af4 100644 --- a/libraries/PID/PID.h +++ b/libraries/PID/PID.h @@ -13,6 +13,8 @@ public: void reset_I(); void load_gains(int address); void save_gains(int address); + void load_gains(float * gain_array); + void save_gains(float * gain_array); void set_P(float p); void set_I(float i); void set_D(float d);