Six crescent shaped legs

Dependencies:   mbed

Committer:
sim642
Date:
Tue Jun 21 14:43:44 2016 +0000
Revision:
47:4f418a4b0051
Parent:
13:dc5f5f19e4e8
Byte based communication

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sim642 2:cf0147952fb9 1 #include "PIDController.hpp"
sim642 2:cf0147952fb9 2
sim642 13:dc5f5f19e4e8 3 PIDController::PIDController(PIDData nData) :
sim642 13:dc5f5f19e4e8 4 data(nData)
sim642 2:cf0147952fb9 5 {
sim642 2:cf0147952fb9 6 reset();
sim642 2:cf0147952fb9 7 }
sim642 2:cf0147952fb9 8
sim642 2:cf0147952fb9 9 PIDController::~PIDController()
sim642 2:cf0147952fb9 10 {
sim642 2:cf0147952fb9 11
sim642 2:cf0147952fb9 12 }
sim642 2:cf0147952fb9 13
sim642 2:cf0147952fb9 14 void PIDController::reset()
sim642 2:cf0147952fb9 15 {
sim642 2:cf0147952fb9 16 timer.reset();
sim642 2:cf0147952fb9 17 timer.start();
sim642 2:cf0147952fb9 18 prev_error = 0;
sim642 2:cf0147952fb9 19 integral = 0;
sim642 2:cf0147952fb9 20 }
sim642 2:cf0147952fb9 21
sim642 2:cf0147952fb9 22 float PIDController::step(float error)
sim642 2:cf0147952fb9 23 {
sim642 2:cf0147952fb9 24 float dt = timer.read();
sim642 2:cf0147952fb9 25 timer.reset(); // timer keeps running
sim642 2:cf0147952fb9 26
sim642 2:cf0147952fb9 27 integral += error * dt;
sim642 2:cf0147952fb9 28 float derivative = (error - prev_error) / dt;
sim642 13:dc5f5f19e4e8 29 float out = data.Kp * error + data.Ki * integral + data.Kd * derivative;
sim642 2:cf0147952fb9 30
sim642 2:cf0147952fb9 31 prev_error = error;
sim642 2:cf0147952fb9 32
sim642 2:cf0147952fb9 33 return out;
sim642 2:cf0147952fb9 34 }
sim642 2:cf0147952fb9 35
sim642 13:dc5f5f19e4e8 36 void PIDController::set(PIDData nData)
sim642 2:cf0147952fb9 37 {
sim642 13:dc5f5f19e4e8 38 data = nData;
sim642 2:cf0147952fb9 39 }