#pragma once #include "Arduino.h" #include "Wire.h" #define REGISTER_READ_VIN 0x88 #define REGISTER_READ_VSHUNT 0xD1 #define REGISTER_CONFIGURATION 0xD0 enum AveragingMode { averages_1 = B000, averages_4 = B001, averages_16 = B010, averages_64 = B011, averages_128 = B100, averages_256 = B101, averages_512 = B110, averages_1024 = B111 }; enum ConversionTime { conversion_time_140uS = B000, conversion_time_204uS = B001, conversion_time_332us = B010, conversion_time_588uS = B011, conversion_time_1100uS = B100, conversion_time_2116uS = B101, conversion_time_4156uS = B110, conversion_time_8244uS = B111 }; class INA233{ public: INA233(uint8_t addr, TwoWire *wire = &Wire); bool begin(const uint8_t sda, const uint8_t scl); float getBusVoltage(void); float getShuntVoltage_mV(void); float getShuntVoltage(void); void setAveragingMode(AveragingMode); void setBusVoltageConversionTime(ConversionTime); void setShuntVoltageConversionTime(ConversionTime); uint16_t getConfigRegister(); bool isConnected(void); private: float _current_LSB; float _shunt; float _maxCurrent; uint8_t _address; TwoWire * _wire; };