ThinknodeM2Board.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "ThinknodeM2Board.h"
  2. void ThinknodeM2Board::begin() {
  3. pinMode(PIN_VEXT_EN, OUTPUT);
  4. digitalWrite(PIN_VEXT_EN, !PIN_VEXT_EN_ACTIVE); // force power cycle
  5. delay(20); // allow power rail to discharge
  6. digitalWrite(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE); // turn backlight back on
  7. delay(120); // give display time to bias on cold boot
  8. ESP32Board::begin();
  9. pinMode(PIN_STATUS_LED, OUTPUT); // init power led
  10. }
  11. void ThinknodeM2Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) {
  12. esp_deep_sleep_start();
  13. }
  14. void ThinknodeM2Board::powerOff() {
  15. enterDeepSleep(0);
  16. }
  17. uint16_t ThinknodeM2Board::getBattMilliVolts() {
  18. analogReadResolution(12);
  19. analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db);
  20. uint32_t mv = 0;
  21. for (int i = 0; i < 8; ++i) {
  22. mv += analogReadMilliVolts(PIN_VBAT_READ);
  23. delayMicroseconds(200);
  24. }
  25. mv /= 8;
  26. analogReadResolution(10);
  27. return static_cast<uint16_t>(mv * ADC_MULTIPLIER );
  28. }
  29. const char* ThinknodeM2Board::getManufacturerName() const {
  30. return "Elecrow ThinkNode M2";
  31. }