From 8f7e5036e72725b92915af09a367f808120f2ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andis=20Z=C4=ABle?= Date: Wed, 10 Apr 2024 15:46:17 +0300 Subject: [PATCH] Started coil driver class --- firmware/src/hw/cc_driver.cpp | 38 +++++++++++++++++++++++++++++++++++ firmware/src/hw/cc_driver.h | 33 ++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 firmware/src/hw/cc_driver.cpp create mode 100644 firmware/src/hw/cc_driver.h diff --git a/firmware/src/hw/cc_driver.cpp b/firmware/src/hw/cc_driver.cpp new file mode 100644 index 0000000..0c88a36 --- /dev/null +++ b/firmware/src/hw/cc_driver.cpp @@ -0,0 +1,38 @@ +/**** Includes ****/ +#include "../utils/utils.h" +#include "../utils/interpolate.h" +#include "potentiometer.h" + +using namespace hw; + +/**** Private definitions ****/ +/**** Private constants ****/ +/**** Private variables ****/ +/**** Private function declarations ****/ + +/**** Public function definitions ****/ +hw::Potentiometer::Potentiometer(board::AnalogIn* ain_ch, uint16_t low_deadzone, uint16_t high_deadzone) +{ + this->ain_ch = ain_ch; + this->low_deadzone = low_deadzone; + this->high_deadzone = high_deadzone; + this->percent = 0; +} + +hw::Potentiometer::~Potentiometer(void) +{ + return; +} + +uint8_t hw::Potentiometer::read(void) +{ + // Update input + this->ain_ch->read(); + + // Calculate percent + this->percent = util::interpolate(this->ain_ch->last_read, this->low_deadzone, this->high_deadzone, 0, 100); + + return this->percent; +} + +/**** Private function definitions ****/ diff --git a/firmware/src/hw/cc_driver.h b/firmware/src/hw/cc_driver.h new file mode 100644 index 0000000..834c8c2 --- /dev/null +++ b/firmware/src/hw/cc_driver.h @@ -0,0 +1,33 @@ +#ifndef CONST_CURRENT_DRIVER_H_ +#define CONST_CURRENT_DRIVER_H_ + +/**** Includes ****/ +#include +#include "../board/ain.h" +#include "../board/halfbridge.h" + +namespace hw { + +/**** Public definitions ****/ + +class CCdriver +{ + protected: + board::AnalogIn* sup_voltage; + board::AnalogIn* sup_current; + board::AnalogIn* ain_ch; + board::AnalogIn* ain_ch; + + public: + CCdriver(board::AnalogIn* ain_ch); + ~CCdriver(void); +}; + +/**** Public function declarations ****/ + +#ifdef TESTING +#endif + +} //namespace + +#endif /* CONST_CURRENT_DRIVER_H_ */ \ No newline at end of file