ThinknodeM5Board.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "ThinknodeM5Board.h"
  2. PCA9557 expander (0x18, &Wire1);
  3. void ThinknodeM5Board::begin() {
  4. // Start expander and configure pins
  5. Wire1.begin(48, 47);
  6. expander.pinMode(EXP_PIN_POWER, OUTPUT); // eink
  7. expander.pinMode(EXP_PIN_BACKLIGHT, OUTPUT); // peripherals
  8. expander.pinMode(EXP_PIN_LED, OUTPUT); // peripherals
  9. expander.digitalWrite(EXP_PIN_POWER, HIGH);
  10. expander.digitalWrite(EXP_PIN_BACKLIGHT, LOW);
  11. expander.digitalWrite(EXP_PIN_LED, LOW);
  12. #ifdef PIN_GPS_SWITCH
  13. pinMode(PIN_GPS_SWITCH, INPUT);
  14. #endif
  15. ESP32Board::begin();
  16. }
  17. void ThinknodeM5Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) {
  18. esp_deep_sleep_start();
  19. }
  20. void ThinknodeM5Board::powerOff() {
  21. enterDeepSleep(0);
  22. }
  23. uint16_t ThinknodeM5Board::getBattMilliVolts() {
  24. analogReadResolution(12);
  25. analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db);
  26. uint32_t mv = 0;
  27. for (int i = 0; i < 8; ++i) {
  28. mv += analogReadMilliVolts(PIN_VBAT_READ);
  29. delayMicroseconds(200);
  30. }
  31. mv /= 8;
  32. analogReadResolution(10);
  33. return static_cast<uint16_t>(mv * ADC_MULTIPLIER );
  34. }
  35. const char* ThinknodeM5Board::getManufacturerName() const {
  36. return "Elecrow ThinkNode M5";
  37. }