train_controller/lib/single_axis_control/SingleAxis.hpp

32 lines
733 B
C++
Raw Permalink Normal View History

/** \File SingleAxis.hpp
* \copyright (c) 2025 len0rd
* \date 2025-01-14
*
* Simple utility class for reading a 'single axis' analog device. ie: a potentiometer
*/
#ifndef __SINGLEAXIS_H__
#define __SINGLEAXIS_H__
#include "Arduino.h"
#include "NvmEeprom.hpp"
class LinearSingleAxis {
public:
LinearSingleAxis(uint8_t analogPin);
uint16_t readRaw();
/// read as a percentage between calbirated min/max
/// Return a value 0-100
uint8_t readPercent();
/// Apply the provided calibration and use on subsequent @ref readPercent calls
void applyCalibration(const LinearAnalogCalibration& cal);
private:
uint8_t m_pin;
LinearAnalogCalibration m_cal;
};
#endif /* __SINGLEAXIS_H__ */