HT-CT62Board.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include <MeshCore.h>
  3. #include <Arduino.h>
  4. #if defined(ESP_PLATFORM)
  5. #include <helpers/ESP32Board.h>
  6. class Heltec_CT62_Board : public ESP32Board {
  7. uint32_t gpio_state = 0;
  8. public:
  9. void begin() {
  10. ESP32Board::begin();
  11. #if defined(PIN_BOARD_RELAY_CH1) && defined(PIN_BOARD_RELAY_CH2)
  12. pinMode(PIN_BOARD_RELAY_CH1, OUTPUT);
  13. pinMode(PIN_BOARD_RELAY_CH2, OUTPUT);
  14. #endif
  15. #if defined(PIN_BOARD_DIGITAL_IN)
  16. pinMode(PIN_BOARD_DIGITAL_IN, INPUT);
  17. #endif
  18. }
  19. uint32_t getGpio() override {
  20. #if defined(PIN_BOARD_DIGITAL_IN)
  21. return gpio_state | (digitalRead(PIN_BOARD_DIGITAL_IN) ? 1 : 0);
  22. #else
  23. return 0;
  24. #endif
  25. }
  26. void setGpio(uint32_t values) override {
  27. #if defined(PIN_BOARD_RELAY_CH1) && defined(PIN_BOARD_RELAY_CH2)
  28. gpio_state = values;
  29. digitalWrite(PIN_BOARD_RELAY_CH1, values & 2);
  30. digitalWrite(PIN_BOARD_RELAY_CH2, values & 4);
  31. #endif
  32. }
  33. uint16_t getBattMilliVolts() override {
  34. #ifdef PIN_VBAT_READ
  35. analogReadResolution(12); // ESP32-C3 ADC is 12-bit - 3.3/4096 (ref voltage/max counts)
  36. uint32_t raw = 0;
  37. for (int i = 0; i < 8; i++) {
  38. raw += analogRead(PIN_VBAT_READ);
  39. }
  40. raw = raw / 8;
  41. return ((6.52 * raw) / 1024.0) * 1000;
  42. #else
  43. return 0; // not supported
  44. #endif
  45. }
  46. const char* getManufacturerName() const override {
  47. return "Heltec CT62";
  48. }
  49. };
  50. #endif