For coursework of group 3 in SOFT564Z

Dependencies:   Motordriver ros_lib_kinetic

Committer:
Jonathan738
Date:
Sat Nov 30 10:59:09 2019 +0000
Revision:
4:8afc50a3e4ac
Parent:
3:7da9888ac8dc
Child:
11:0b9098ec11c7
Added Debug code, re-factored existing code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jonathan738 3:7da9888ac8dc 1 #include "mbed.h"
Jonathan738 4:8afc50a3e4ac 2 #include "General.hpp"
Jonathan738 4:8afc50a3e4ac 3 #include "Pins.h"
Jonathan738 4:8afc50a3e4ac 4
Jonathan738 4:8afc50a3e4ac 5 #define Minimum_VBatt 3.6f
Jonathan738 4:8afc50a3e4ac 6 #define Maximum_VBatt 5.0f
Jonathan738 4:8afc50a3e4ac 7 #define PWM_Freq 200.0f
Jonathan738 4:8afc50a3e4ac 8
Jonathan738 4:8afc50a3e4ac 9 #ifndef Define_ONCE_Battery_Monitoring
Jonathan738 4:8afc50a3e4ac 10 #define Define_ONCE_Battery_Monitoring
Jonathan738 3:7da9888ac8dc 11
Jonathan738 4:8afc50a3e4ac 12 class Battery_Monitor
Jonathan738 4:8afc50a3e4ac 13 {
Jonathan738 4:8afc50a3e4ac 14 public:
Jonathan738 4:8afc50a3e4ac 15 Battery_Monitor(PinName Batt_PIN, int sample_Freq, PinName RED_Channel, PinName GREEN_Channel, PinName BLUE_Channel): V_Batt(Batt_PIN), Sample_Freq(sample_Freq), Channel_1(RED_Channel), Channel_2(GREEN_Channel), Channel_3(BLUE_Channel)
Jonathan738 4:8afc50a3e4ac 16 {
Jonathan738 4:8afc50a3e4ac 17 this->Channel_1.write(0.0f);
Jonathan738 4:8afc50a3e4ac 18 this->Channel_1.period(1.0f/PWM_Freq);
Jonathan738 4:8afc50a3e4ac 19 this->Channel_2.write(0.0f);
Jonathan738 4:8afc50a3e4ac 20 this->Channel_2.period(1.0f/PWM_Freq);
Jonathan738 4:8afc50a3e4ac 21 this->Channel_3.write(0.0f);
Jonathan738 4:8afc50a3e4ac 22 this->Channel_3.period(1.0f/PWM_Freq);
Jonathan738 4:8afc50a3e4ac 23
Jonathan738 4:8afc50a3e4ac 24 this->BattCheck.attach(this, &Battery_Monitor::battCheck, 1/Sample_Freq);
Jonathan738 4:8afc50a3e4ac 25 };
Jonathan738 4:8afc50a3e4ac 26
Jonathan738 4:8afc50a3e4ac 27 float GetBatteryLevel(void)
Jonathan738 4:8afc50a3e4ac 28 {
Jonathan738 4:8afc50a3e4ac 29 return Battery_Level;
Jonathan738 4:8afc50a3e4ac 30 }
Jonathan738 4:8afc50a3e4ac 31
Jonathan738 4:8afc50a3e4ac 32 private:
Jonathan738 4:8afc50a3e4ac 33 void battCheck(void);
Jonathan738 4:8afc50a3e4ac 34 int Sample_Freq;
Jonathan738 4:8afc50a3e4ac 35
Jonathan738 4:8afc50a3e4ac 36 float Battery_Level;
Jonathan738 4:8afc50a3e4ac 37
Jonathan738 4:8afc50a3e4ac 38 Ticker BattCheck;
Jonathan738 4:8afc50a3e4ac 39 AnalogIn V_Batt;
Jonathan738 4:8afc50a3e4ac 40
Jonathan738 4:8afc50a3e4ac 41 PwmOut Channel_1;
Jonathan738 4:8afc50a3e4ac 42 PwmOut Channel_2;
Jonathan738 4:8afc50a3e4ac 43 PwmOut Channel_3;
Jonathan738 4:8afc50a3e4ac 44 };
Jonathan738 3:7da9888ac8dc 45
Jonathan738 3:7da9888ac8dc 46 #endif