1#ifndef SEGLCD_HT1621_LCM0844_H
2#define SEGLCD_HT1621_LCM0844_H
5#if !defined(SEGLCD_DISABLE_ALL_LCDS) || defined(SEGLCD_ENABLE_HT1621_LCM0844)
20 typedef enum : uint32_t {
56 typedef enum : uint32_t {
77 typedef enum : uint32_t {
112 void init()
override;
126 size_t write(uint8_t ch)
override;
285 count =
sizeof(map) /
sizeof(map[0]);
317 count =
sizeof(map) /
sizeof(map[0]);
328 {0x1A, {{
SYMBOL_ARROW_JUNCTION_TO_ACDC,
SYMBOL_BIT_ARROW_JUNCTION_TO_ACDC}, {
SYMBOL_ARROW_ACDC_TO_JUNCTION,
SYMBOL_BIT_ARROW_ACDC_TO_JUNCTION}, {
SYMBOL_ARROW_ACDC_TO_BATT,
SYMBOL_BIT_ARROW_ACDC_TO_BATT}, {
SYMBOL_ARROW_BATT_TO_ACDC,
SYMBOL_BIT_ARROW_BATT_TO_ACDC}, {
SYMBOL_AC_DC_CONVERT,
SYMBOL_BIT_AC_DC_CONVERT}}},
330 {0x1E, {{
SYMBOL_AC_LINE,
SYMBOL_BIT_AC_LINE}, {
SYMBOL_AC_SYMBOL,
SYMBOL_BIT_AC_SYMBOL}, {
SYMBOL_PV2_SYMBOL,
SYMBOL_BIT_PV2_SYMBOL}, {
SYMBOL_PV1_SYMBOL,
SYMBOL_BIT_PV1_SYMBOL}, {
SYMBOL_LINE_DCDC_TO_BATT,
SYMBOL_BIT_LINE_DCDC_TO_BATT}, {
SYMBOL_LINE_PV2_TO_DCDC,
SYMBOL_BIT_LINE_PV2_TO_DCDC}, {
SYMBOL_LINE_PV1_TO_DCDC,
SYMBOL_BIT_LINE_PV1_TO_DCDC}}},
332 count =
sizeof(map) /
sizeof(map[0]);
336 void _setDecimal(uint8_t row, uint8_t col,
bool state)
override;
HT1621 LCD segment display driver.
Definition SegDriver_HT1621.h:12
virtual size_t write(uint8_t)
Definition SegLCDLib.h:113
LCM0844 LCD (HT1621).
Definition SegLCD_HT1621_LCM0844.h:18
static const AddressMapping * _getSymbolMap(size_t &count)
Definition SegLCD_HT1621_LCM0844.h:321
void init() override
Initialize GPIO pins for communication.
Definition SegLCD_HT1621_LCM0844.cpp:10
static constexpr uint8_t UNIT_BIT_LEFT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:132
static constexpr uint8_t UNIT_BIT_RIGHT_WATT
Definition SegLCD_HT1621_LCM0844.h:153
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_HT1621_LCM0844.h:217
static constexpr uint8_t LABEL_BIT_PV1
Definition SegLCD_HT1621_LCM0844.h:166
static constexpr uint8_t UNIT_BIT_LEFT_WATT
Definition SegLCD_HT1621_LCM0844.h:138
static constexpr uint8_t SYMBOL_BIT_ARROW_JUNCTION_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:197
void clearSymbols(uint32_t symbols)
Definition SegLCD_HT1621_LCM0844.cpp:125
static constexpr uint8_t LABEL_BIT_PV2
Definition SegLCD_HT1621_LCM0844.h:167
void setMuteSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:144
size_t write(uint8_t ch) override
Definition SegLCD_HT1621_LCM0844.cpp:177
static constexpr uint8_t LABEL_BIT_OVERLOAD
Definition SegLCD_HT1621_LCM0844.h:178
static constexpr uint8_t UNIT_BIT_LEFT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:142
static constexpr uint8_t LABEL_BIT_ERROR
Definition SegLCD_HT1621_LCM0844.h:175
static constexpr uint8_t SYMBOL_BIT_LEFT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:186
SymbolFlags
Definition SegLCD_HT1621_LCM0844.h:77
@ SYMBOL_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:90
@ SYMBOL_LINE_DCDC_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:100
@ SYMBOL_WARNING_TRIANGLE
Definition SegLCD_HT1621_LCM0844.h:80
@ SYMBOL_ARROW_JUNCTION_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:93
@ SYMBOL_LINE_JUNCTION_TO_LOAD
Definition SegLCD_HT1621_LCM0844.h:91
@ SYMBOL_ARROW_ACDC_TO_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:94
@ SYMBOL_RIGHT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:83
@ SYMBOL_LINE_PV2_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:107
@ SYMBOL_DC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:99
@ SYMBOL_UNDERLINES
Definition SegLCD_HT1621_LCM0844.h:84
@ SYMBOL_BULB
Definition SegLCD_HT1621_LCM0844.h:89
@ SYMBOL_PV1_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:105
@ SYMBOL_ARROW_ACDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:95
@ SYMBOL_AC_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:103
@ SYMBOL_LEFT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:82
@ SYMBOL_CENTER_FRAME
Definition SegLCD_HT1621_LCM0844.h:87
@ SYMBOL_AC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:97
@ SYMBOL_PV2_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:104
@ SYMBOL_AC_LINE
Definition SegLCD_HT1621_LCM0844.h:102
@ SYMBOL_MAINTENANCE
Definition SegLCD_HT1621_LCM0844.h:79
@ SYMBOL_ARROW_BATT_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:96
@ SYMBOL_LINE_DCDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:106
@ SYMBOL_MUTE
Definition SegLCD_HT1621_LCM0844.h:85
@ SYMBOL_LINE_PV1_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:108
@ SYMBOL_CLOCK
Definition SegLCD_HT1621_LCM0844.h:78
static constexpr uint8_t LOAD_MASK
Definition SegLCD_HT1621_LCM0844.h:226
void setLabels(uint32_t labels)
Definition SegLCD_HT1621_LCM0844.cpp:113
static constexpr uint8_t LABEL_BIT_BATT_FLD
Definition SegLCD_HT1621_LCM0844.h:182
static constexpr uint8_t LABEL_BIT_LEFT_BATT
Definition SegLCD_HT1621_LCM0844.h:169
static constexpr uint8_t SYMBOL_BIT_LINE_DCDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:208
static constexpr uint8_t UNIT_BIT_LEFT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:131
UnitFlags
Definition SegLCD_HT1621_LCM0844.h:20
@ UNIT_LEFT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:23
@ UNIT_RIGHT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:47
@ UNIT_LEFT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:30
@ UNIT_RIGHT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:53
@ UNIT_CENTER_MINUTE
Definition SegLCD_HT1621_LCM0844.h:35
@ UNIT_RIGHT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:50
@ UNIT_RIGHT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:45
@ UNIT_LEFT_HZ
Definition SegLCD_HT1621_LCM0844.h:26
@ UNIT_LEFT_VOLT
Definition SegLCD_HT1621_LCM0844.h:31
@ UNIT_RIGHT_WATT
Definition SegLCD_HT1621_LCM0844.h:44
@ UNIT_LEFT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:32
@ UNIT_CENTER_HOUR
Definition SegLCD_HT1621_LCM0844.h:34
@ UNIT_LEFT_WATT
Definition SegLCD_HT1621_LCM0844.h:29
@ UNIT_RIGHT_HZ
Definition SegLCD_HT1621_LCM0844.h:41
@ UNIT_RIGHT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:38
@ UNIT_RIGHT_VOLT
Definition SegLCD_HT1621_LCM0844.h:46
@ UNIT_LEFT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:22
@ UNIT_LEFT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:33
static constexpr uint8_t SYMBOL_BIT_AC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:201
static constexpr uint8_t DECIMAL_DIGITS[4]
Definition SegLCD_HT1621_LCM0844.h:215
static constexpr uint8_t SYMBOL_BIT_CENTER_FRAME
Definition SegLCD_HT1621_LCM0844.h:187
static constexpr uint8_t UNIT_BIT_RIGHT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:154
static constexpr uint8_t LABEL_BIT_BATT_USER
Definition SegLCD_HT1621_LCM0844.h:183
static constexpr uint8_t UNIT_BIT_RIGHT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:156
static constexpr uint8_t UNIT_BIT_LEFT_HZ
Definition SegLCD_HT1621_LCM0844.h:135
void clearLabels(uint32_t labels)
Definition SegLCD_HT1621_LCM0844.cpp:117
static constexpr uint8_t DECIMAL_POINT_BIT
Definition SegLCD_HT1621_LCM0844.h:216
void setBatteryLevel(uint8_t level)
Definition SegLCD_HT1621_LCM0844.cpp:20
static constexpr uint8_t SYMBOL_BIT_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:195
static constexpr uint8_t LOAD_LEVEL_ADR
Definition SegLCD_HT1621_LCM0844.h:227
static constexpr uint8_t MAX_LOAD_LEVEL
Definition SegLCD_HT1621_LCM0844.h:225
static constexpr uint8_t SYMBOL_BIT_PV1_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:207
static constexpr uint8_t SYMBOL_BIT_LINE_PV2_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:209
static constexpr uint8_t BATTERY_LEVEL_ADR
Definition SegLCD_HT1621_LCM0844.h:222
static constexpr uint8_t SYMBOL_BIT_MUTE
Definition SegLCD_HT1621_LCM0844.h:193
static constexpr uint8_t SYMBOL_BIT_MAINTENANCE
Definition SegLCD_HT1621_LCM0844.h:189
static constexpr uint8_t LABEL_BIT_BATT_AGM
Definition SegLCD_HT1621_LCM0844.h:181
static constexpr uint8_t SYMBOL_BIT_DC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:202
LabelFlags
Definition SegLCD_HT1621_LCM0844.h:56
@ LABEL_INPUT
Definition SegLCD_HT1621_LCM0844.h:61
@ LABEL_ERROR
Definition SegLCD_HT1621_LCM0844.h:68
@ LABEL_LOAD
Definition SegLCD_HT1621_LCM0844.h:67
@ LABEL_BATT_FLD
Definition SegLCD_HT1621_LCM0844.h:73
@ LABEL_PV1
Definition SegLCD_HT1621_LCM0844.h:59
@ LABEL_AC
Definition SegLCD_HT1621_LCM0844.h:58
@ LABEL_OVERLOAD
Definition SegLCD_HT1621_LCM0844.h:69
@ LABEL_BATT_USER
Definition SegLCD_HT1621_LCM0844.h:74
@ LABEL_RIGHT_BATT
Definition SegLCD_HT1621_LCM0844.h:66
@ LABEL_LEFT_BATT
Definition SegLCD_HT1621_LCM0844.h:62
@ LABEL_BATT_AGM
Definition SegLCD_HT1621_LCM0844.h:72
@ LABEL_OUTPUT
Definition SegLCD_HT1621_LCM0844.h:65
@ LABEL_PV2
Definition SegLCD_HT1621_LCM0844.h:60
static const AddressMapping * _getUnitMap(size_t &count)
Definition SegLCD_HT1621_LCM0844.h:240
static constexpr uint8_t RAM_SIZE
Definition SegLCD_HT1621_LCM0844.h:212
static constexpr uint8_t DIGITS
Definition SegLCD_HT1621_LCM0844.h:213
static constexpr uint8_t SYMBOL_BIT_LINE_PV1_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:210
void _setDecimal(uint8_t row, uint8_t col, bool state) override
Virtual method for setting decimal point.
Definition SegLCD_HT1621_LCM0844.cpp:149
static constexpr uint8_t SYMBOL_BIT_LINE_JUNCTION_TO_LOAD
Definition SegLCD_HT1621_LCM0844.h:196
static constexpr uint8_t UNIT_BIT_RIGHT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:147
static const AddressMapping * _getLabelMap(size_t &count)
Definition SegLCD_HT1621_LCM0844.h:289
static constexpr uint8_t UNIT_BIT_RIGHT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:162
static constexpr uint8_t UNIT_BIT_LEFT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:139
void setLoadLevel(uint8_t level)
Definition SegLCD_HT1621_LCM0844.cpp:37
static constexpr uint8_t SYMBOL_BIT_WARNING_TRIANGLE
Definition SegLCD_HT1621_LCM0844.h:190
static constexpr uint8_t UNIT_BIT_CENTER_HOUR
Definition SegLCD_HT1621_LCM0844.h:143
void setSymbols(uint32_t symbols)
Definition SegLCD_HT1621_LCM0844.cpp:121
void _updateUnits(uint32_t units, bool set)
Definition SegLCD_HT1621_LCM0844.cpp:54
static constexpr uint8_t SYMBOL_BIT_RIGHT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:191
static constexpr uint8_t LABEL_BIT_AC
Definition SegLCD_HT1621_LCM0844.h:165
void setMaintenanceSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:134
static constexpr uint8_t MAX_BATTERY_LEVEL
Definition SegLCD_HT1621_LCM0844.h:220
uint8_t _mapSegments(uint8_t val)
Definition SegLCD_HT1621_LCM0844.cpp:207
static constexpr uint8_t SYMBOL_BIT_LINE_DCDC_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:203
static constexpr uint8_t SYMBOL_BIT_BULB
Definition SegLCD_HT1621_LCM0844.h:194
static constexpr uint8_t SYMBOL_BIT_ARROW_ACDC_TO_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:198
void setWarningSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:139
static constexpr uint8_t UNIT_BIT_LEFT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:141
static constexpr uint8_t LABEL_BIT_OUTPUT
Definition SegLCD_HT1621_LCM0844.h:172
static constexpr uint8_t SYMBOL_BIT_CLOCK
Definition SegLCD_HT1621_LCM0844.h:188
static constexpr uint8_t UNIT_BIT_LEFT_VOLT
Definition SegLCD_HT1621_LCM0844.h:140
static constexpr uint8_t UNIT_BIT_RIGHT_VOLT
Definition SegLCD_HT1621_LCM0844.h:155
static constexpr uint8_t SYMBOL_BIT_AC_LINE
Definition SegLCD_HT1621_LCM0844.h:204
static constexpr uint8_t UNIT_BIT_CENTER_MINUTE
Definition SegLCD_HT1621_LCM0844.h:144
void setClockSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:129
static constexpr uint8_t UNIT_BIT_RIGHT_HZ
Definition SegLCD_HT1621_LCM0844.h:150
void _updateLabels(uint32_t labels, bool set)
Definition SegLCD_HT1621_LCM0844.cpp:71
static constexpr uint8_t LABEL_BIT_RIGHT_BATT
Definition SegLCD_HT1621_LCM0844.h:173
static constexpr uint8_t LABEL_BIT_INPUT
Definition SegLCD_HT1621_LCM0844.h:168
static constexpr uint8_t SYMBOL_BIT_AC_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:205
static constexpr uint8_t BATTERY_MASK
Definition SegLCD_HT1621_LCM0844.h:221
static constexpr uint8_t SYMBOL_BIT_PV2_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:206
static constexpr uint8_t UNIT_BIT_RIGHT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:159
void _updateSymbols(uint32_t symbols, bool set)
Definition SegLCD_HT1621_LCM0844.cpp:88
void setUnits(uint32_t units)
Definition SegLCD_HT1621_LCM0844.cpp:105
static constexpr uint8_t LABEL_BIT_LOAD
Definition SegLCD_HT1621_LCM0844.h:174
void clearUnits(uint32_t units)
Definition SegLCD_HT1621_LCM0844.cpp:109
static constexpr uint8_t SYMBOL_BIT_ARROW_ACDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:199
static constexpr uint8_t SYMBOL_BIT_ARROW_BATT_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:200
static constexpr uint8_t SYMBOL_BIT_UNDERLINES
Definition SegLCD_HT1621_LCM0844.h:192
Abstract 3-wire serial transport.
Definition SegTransport.h:23
Definition SegLCD_HT1621_LCM0844.h:235
uint8_t address
Definition SegLCD_HT1621_LCM0844.h:236
FlagBit bits[8]
Definition SegLCD_HT1621_LCM0844.h:237
Definition SegLCD_HT1621_LCM0844.h:230
uint8_t bit
Definition SegLCD_HT1621_LCM0844.h:232
uint32_t flag
Definition SegLCD_HT1621_LCM0844.h:231