Требуется переработать текст. От помощи не откажусь :)
Arduino библиотека контроля напряжения.
Класс является шаблонным и применяет 1 параметр: uint8_t _id = 0.
Первый не обязательный параметр прозрачно передаёт uint8_t значение в вызываемые колбеки, что позволяет идентифицировать класс при использовании нескольких экземпляров класса на один колбек. Например пин чтение АЦП:
VoltageControl<A1> Volt1;
VoltageControl<A2> Volt2;
//...
Volt1.SetRequest(OnRequestVoltage);
Volt2.SetRequest(OnRequestVoltage);
//...
int32_t OnRequestVoltage(uint8_t id)
{
return analogRead(id);
}Для удобства, класс имеет два конструктора.
`VoltageControl()`Конструктор класса без параметров. При использовании требуется передать настройки через Set методы.
VoltageControl(request_t callback_req, uint16_t interval_req, response_t callback_res, bool once, uint32_t coefficient, int32_t vmin, int32_t vmax)Конструктор класса с указанием всех настроек.
SetResponse(), Коэффициент перевода значения АЦП, Минимально допустимое напряжение, Максимально допустимое напряжение.int32_t OnRequestVoltage(uint8_t id)Когда классу будет необходимо прочитать значение АЦП будет вызвана эта колбэк-функция. Вы можете выполнить или встроенный метод чтения АЦП ( analogRead() ), напрямую работать с регистрами или читать внешний АЦП по любой доступной шине.
void OnResponseVoltage(uint8_t id, int32_t value, int8_t state)Когда нужно уведомить основную программу о изменениях, будет выхвана эта колбэк-функция. Вы можете принять решение о ветвлении кода и выполнить все необходимое здесь.
GetValid().void SetRequest(request_t callback, uint16_t interval)Метод указывает на колбэк-функцию чтения АЦП.
void SetResponse(response_t callback, bool once = false)Метод указывает на колбэк-функцию результата измерения напряжения. Если once = true, то вызов колбэк-функции будет происходить только при смене состояния ( пониженное, повышенное, нормальное напряжение ), в противном случае вызов будет происходить при каждом измерении АЦП.
void SetCoefficient(uint32_t coefficient)Метод определяет коэффициент перевода значения АЦП в микровольты.
void SetMin(uint32_t vmin)Метод определяет минимально допустимое напряжение.
void SetMax(uint32_t vmax)Метод определяет максимально допустимое напряжение.
void SetStart()Метод устанавливает флаг запуска работы класса.
void SetStop()Метод устанавливает флаг остановки работы класса.
int8_t GetValid()Метод проверяет напряжение и возвращает результат в виде числа.
-1 - Меньше допустимого, 0 - В рамках допустимо, 1 - Больше допустимого.int32_t GetVoltage()Метод возвращает текущее напряжение.
void Processing(uint32_t currentTime = millis())Метод обработки числа. В случае, если в Вашей loop функции есть определение текущего времени, то целесообразнее передать это время в качестве параметра.
static inline uint32_t GetCoefficient(float vref, float r1 = 0, float r2 = 1, float quantization = 1024)Утилита, которая помогает рассчитать коэффициент для метода SetCoefficient(). Если делитель не используется, то указывается только vref.