TrekkingPhoenix / Mbed 2 deprecated TrekkingControllerV1-4_WinterChallenge20

Dependencies:   mbed mbed-rtos MotionSensor EthernetInterface

Committer:
drelliak
Date:
Mon Apr 11 05:20:40 2016 +0000
Revision:
0:88faaa1afb83
Child:
8:a1067fcde341
Trekking Controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
drelliak 0:88faaa1afb83 1 /*
drelliak 0:88faaa1afb83 2 Copyright 2016 Erik Perillo <erik.perillo@gmail.com>
drelliak 0:88faaa1afb83 3
drelliak 0:88faaa1afb83 4 This file is part of piranha-ptc.
drelliak 0:88faaa1afb83 5
drelliak 0:88faaa1afb83 6 This is free software: you can redistribute it and/or modify
drelliak 0:88faaa1afb83 7 it under the terms of the GNU General Public License as published by
drelliak 0:88faaa1afb83 8 the Free Software Foundation, either version 3 of the License, or
drelliak 0:88faaa1afb83 9 (at your option) any later version.
drelliak 0:88faaa1afb83 10
drelliak 0:88faaa1afb83 11 This is distributed in the hope that it will be useful,
drelliak 0:88faaa1afb83 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
drelliak 0:88faaa1afb83 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
drelliak 0:88faaa1afb83 14 See the GNU General Public License for more details.
drelliak 0:88faaa1afb83 15
drelliak 0:88faaa1afb83 16 You should have received a copy of the GNU General Public License
drelliak 0:88faaa1afb83 17 along with this. If not, see <http://www.gnu.org/licenses/>.
drelliak 0:88faaa1afb83 18 */
drelliak 0:88faaa1afb83 19
drelliak 0:88faaa1afb83 20
drelliak 0:88faaa1afb83 21 #include "receiver.h"
drelliak 0:88faaa1afb83 22
drelliak 0:88faaa1afb83 23
drelliak 0:88faaa1afb83 24 uint16_t read(Serial& serial)
drelliak 0:88faaa1afb83 25 {
drelliak 0:88faaa1afb83 26 int i;
drelliak 0:88faaa1afb83 27 uint16_t value = 0;
drelliak 0:88faaa1afb83 28 char chr;
drelliak 0:88faaa1afb83 29
drelliak 0:88faaa1afb83 30 for(i=0; i<2; i++)
drelliak 0:88faaa1afb83 31 while(true)
drelliak 0:88faaa1afb83 32 if(serial.readable())
drelliak 0:88faaa1afb83 33 {
drelliak 0:88faaa1afb83 34 chr = serial.getc();
drelliak 0:88faaa1afb83 35 value = value | chr << i*8;
drelliak 0:88faaa1afb83 36 break;
drelliak 0:88faaa1afb83 37 }
drelliak 0:88faaa1afb83 38
drelliak 0:88faaa1afb83 39 return value;
drelliak 0:88faaa1afb83 40 }
drelliak 0:88faaa1afb83 41
drelliak 0:88faaa1afb83 42 float un_scale(uint16_t value, float min, float max)
drelliak 0:88faaa1afb83 43 {
drelliak 0:88faaa1afb83 44 return ((float)value)/((1 << 16) - 1)*(max - min) + min;
drelliak 0:88faaa1afb83 45 }
drelliak 0:88faaa1afb83 46
drelliak 0:88faaa1afb83 47 float get_param(Serial& serial, float min, float max)
drelliak 0:88faaa1afb83 48 {
drelliak 0:88faaa1afb83 49 uint16_t value;
drelliak 0:88faaa1afb83 50
drelliak 0:88faaa1afb83 51 value = read(serial);
drelliak 0:88faaa1afb83 52
drelliak 0:88faaa1afb83 53 return un_scale(value, min, max);
drelliak 0:88faaa1afb83 54 }
drelliak 0:88faaa1afb83 55
drelliak 0:88faaa1afb83 56 void get_pid_params(Serial& serial, float* kp, float* ki, float* kd, float* n)
drelliak 0:88faaa1afb83 57 {
drelliak 0:88faaa1afb83 58 *kp = get_pid_param(serial);
drelliak 0:88faaa1afb83 59 *ki = get_pid_param(serial);
drelliak 0:88faaa1afb83 60 *kd = get_pid_param(serial);
drelliak 0:88faaa1afb83 61 *n = get_pid_param(serial);
drelliak 0:88faaa1afb83 62 }
drelliak 0:88faaa1afb83 63