BatteryInterface.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "BatteryInterface.h"
  2. #include "lang_var.h"
  3. BatteryInterface::BatteryInterface() {
  4. }
  5. void BatteryInterface::main(uint32_t currentTime) {
  6. if (currentTime != 0) {
  7. if (currentTime - initTime >= 3000) {
  8. //Serial.println("Checking Battery Level");
  9. this->initTime = millis();
  10. int8_t new_level = this->getBatteryLevel();
  11. //this->battery_level = this->getBatteryLevel();
  12. if (this->battery_level != new_level) {
  13. Serial.println(text00 + (String)new_level);
  14. this->battery_level = new_level;
  15. }
  16. }
  17. }
  18. }
  19. void BatteryInterface::RunSetup() {
  20. Wire.begin(I2C_SDA, I2C_SCL);
  21. this->initTime = millis();
  22. }
  23. int8_t BatteryInterface::getBatteryLevel() {
  24. Wire.beginTransmission(IP5306_ADDR);
  25. Wire.write(0x78);
  26. if (Wire.endTransmission(false) == 0 &&
  27. Wire.requestFrom(0x75, 1)) {
  28. this->i2c_supported = true;
  29. switch (Wire.read() & 0xF0) {
  30. case 0xE0: return 25;
  31. case 0xC0: return 50;
  32. case 0x80: return 75;
  33. case 0x00: return 100;
  34. default: return 0;
  35. }
  36. }
  37. this->i2c_supported = false;
  38. return -1;
  39. }