Lumitronix_Iflex_Pro_Workshop
Library to interact with the iFlexPro
LUMITRONIX_iFlexWorkshop_PowerSense.h
Go to the documentation of this file.
1 #ifndef HEADER_LUMITRONIX_IFLEX_WORKSHOP_POWER_SENSE
2 #define HEADER_LUMITRONIX_IFLEX_WORKSHOP_POWER_SENSE
3 
4 
5 #include <Arduino.h>
7 
8 
14 static constexpr auto LUMITRONIX_IFLEX_WORKSHOP_POWER_SENSE_JACK_SENSE_PIN{4};
15 static constexpr auto LUMITRONIX_IFLEX_WORKSHOP_POWER_SENSE_5V_EXT_SENSE_PIN{0};
16 
18 private:
19  uint8_t jackSensePin{LUMITRONIX_IFLEX_WORKSHOP_POWER_SENSE_JACK_SENSE_PIN};
20  uint8_t powerSensePin{LUMITRONIX_IFLEX_WORKSHOP_POWER_SENSE_5V_EXT_SENSE_PIN};
21 
22 public:
24  }
25 
26  void Begin() {
27  ::pinMode(jackSensePin, INPUT_PULLUP);
28  ::pinMode(powerSensePin, INPUT);
29  }
30 
31  [[nodiscard]] bool IsBarrelJackPluggedIn() {
32  return HIGH == ::digitalRead(jackSensePin);
33  }
34 
35  [[nodiscard]] bool Is5VExtPresent() {
36  auto const THRESHOLD_VALUE = static_cast<decltype(::analogRead(powerSensePin))>((2.0 / 5.0) * 1024);
37  return ::analogRead(powerSensePin) > THRESHOLD_VALUE;
38  }
39 };
40 
41 
42 #define LUMITRONIX_CHECK_EXTERNAL_POWER \
43  { \
44  if (!powerSense.IsBarrelJackPluggedIn()) { \
45  display.Set( \
46  "Barrel Jack", \
47  "unplugged" \
48  ); \
49  return; \
50  } \
51  \
52  if (!powerSense.Is5VExtPresent()) { \
53  display.Set( \
54  "Check PSU", \
55  "+5V-EXT missing" \
56  ); \
57  return; \
58  } \
59  }; \
60 
61 
62 #endif
63 
Definition: LUMITRONIX_iFlexWorkshop_PowerSense.h:17
bool IsBarrelJackPluggedIn()
Definition: LUMITRONIX_iFlexWorkshop_PowerSense.h:31
bool Is5VExtPresent()
Definition: LUMITRONIX_iFlexWorkshop_PowerSense.h:35
void Begin()
Definition: LUMITRONIX_iFlexWorkshop_PowerSense.h:26
LUMITRONIX_iFlexWorkshop_PowerSense()
Definition: LUMITRONIX_iFlexWorkshop_PowerSense.h:23