SegLCDLib
Loading...
Searching...
No Matches
SegLCD_VK0192_5DigSigBattProgress.h
Go to the documentation of this file.
1#ifndef SEGLCD_VT0192_5DigSigBattProgress_H
2#define SEGLCD_VT0192_5DigSigBattProgress_H
3
4#include <SegDriver_VK0192.h>
5
21 public:
22 typedef enum {
23 LABEL_P = 0x0001,
24 LABEL_T = 0x0002,
25 LABEL_PROC = 0x0004,
27 LABEL_KPA = 0x0010,
28 LABEL_MPA = 0x0020,
29 LABEL_M = 0x0040,
30 LABEL_A = 0x0080,
31 LABEL_V = 0x0100,
32 } LabelFlags;
33
34 SegLCD_VK0192_5DigSigBattProgress(uint8_t chipselect, uint8_t data, uint8_t write, uint8_t read = -1);
35 void init() override;
36 void setBatteryLevel(uint8_t value);
37 void setSignalLevel(uint8_t value);
38 void setProgress(uint8_t value);
39 void setDegreeSymbol(bool state, uint8_t index = 0);
40 void setLabels(uint16_t labels);
41 void clearLabels(uint16_t labels);
42 void setCursor(uint8_t row, uint8_t col) override;
43 size_t write(uint8_t ch) override;
44
45 private:
46 void _writeDigit7seg(uint8_t row, uint8_t col, char c);
47 void _writeDigit16seg(uint8_t row, uint8_t col, char c);
48 void _setDecimal(uint8_t row, uint8_t col, bool state) override;
49 static constexpr uint8_t RAM_SIZE = 24;
50
51 // Decimal configuration
52 static constexpr uint8_t DECIMAL_POINT_BIT = 0x10;
53 static constexpr int8_t DECIMAL_COL_OFFSET = -1; // Dot belongs to previous digit
54 static constexpr int8_t DECIMAL_ADDR_COL_OFFSET = 1; // Decimal stored in next digit RAM
55 static constexpr uint8_t DECIMAL_TOP_MIN_COL = 0;
56 static constexpr uint8_t DECIMAL_TOP_MAX_COL = 1;
57 static constexpr uint8_t DECIMAL_BOTTOM_MIN_COL = 0;
58 static constexpr uint8_t DECIMAL_BOTTOM_MAX_COL = 3;
59 static constexpr uint8_t DECIMAL_16SEG_BIT = 0x80;
60 static constexpr uint8_t DECIMAL_16SEG_MIN_COL = 0;
61 static constexpr uint8_t DECIMAL_16SEG_MAX_COL = 3;
62 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL0 = 0x12; // nibble 0x24
63 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL1 = 0x08; // nibble 0x10
64 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL2 = 0x0F; // nibble 0x1E
65 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL3 = 0x14; // nibble 0x28
66 static constexpr uint8_t MAX_COL = 4;
67
68 static constexpr uint8_t NUM_7SEG_DIGITS = 10; // 3+2+5 7-seg digits
69
70 static constexpr uint8_t MAX_SIGNAL_LEVEL = 3;
71 static constexpr uint8_t ADDR_SIGNAL_LOW = 0x10;
72 static constexpr uint8_t SIGNAL_MASK_LOW = 0xC0;
73 static constexpr uint8_t ADDR_SIGNAL_HIGH = 0x16;
74 static constexpr uint8_t SIGNAL_MASK_HIGH = 0x80;
75 static constexpr uint8_t SIGNAL_LEVEL_SEG[3] = {0x40, 0x80, 0x80};
76
77 static constexpr uint8_t MAX_BATTERY_LEVEL = 4;
78 static constexpr uint8_t ADDR_BATT = 0x11;
79 static constexpr uint8_t BATTERY_MASK = 0xF0;
80 static constexpr uint8_t BATTERY_LEVEL_SEG[4] = {0x10, 0x80, 0x40, 0x20};
81
82 static constexpr uint8_t MAX_PROGRESS = 150;
83 static constexpr uint8_t ADDR_PROGRESS_P1 = 0x10;
84 static constexpr uint8_t ADDR_PROGRESS_P2 = 0x11;
85 static constexpr uint8_t ADDR_PROGRESS_P3 = 0x12;
86 static constexpr uint8_t ADDR_PROGRESS_P4 = 0x13;
87 static constexpr uint8_t PROGRESS_MASK = 0x0F;
88 static constexpr uint8_t PROGRESS_LEVEL_SEG[16] =
89 { 0x01,
90 0x08, 0x04, 0x02, 0x01,
91 0x01, 0x02, 0x04, 0x08,
92 0x08, 0x04, 0x02,
93 0x08, 0x04, 0x02, 0x01 };
94
95 static constexpr uint8_t ADDR_LABELS_1 = 0x0E;
96 static constexpr uint8_t ADDR_LABELS_2 = 0x0F;
97 static constexpr uint8_t ADDR_LABELS_3 = 0x10;
98
99 uint8_t _mapSegments(uint8_t val);
100 uint16_t _map16Segments(uint16_t val);
101 int8_t _get7SegmentsAddress(uint8_t row, uint8_t col);
102 int8_t _get16SegmentsAddress(uint8_t row, uint8_t col);
103 void _updateLabels(uint16_t labels, bool set);
104};
105#endif
VK0192 LCD segment display driver.
Definition SegDriver_VK0192.h:12
5-digit 7-segment LCD with signal/battery/progress (VK0192).
Definition SegLCD_VK0192_5DigSigBattProgress.h:20
uint16_t _map16Segments(uint16_t val)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:391
static constexpr uint8_t DECIMAL_16SEG_BIT
Definition SegLCD_VK0192_5DigSigBattProgress.h:59
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL2
Definition SegLCD_VK0192_5DigSigBattProgress.h:64
static constexpr uint8_t ADDR_LABELS_2
Definition SegLCD_VK0192_5DigSigBattProgress.h:96
static constexpr uint8_t ADDR_SIGNAL_HIGH
Definition SegLCD_VK0192_5DigSigBattProgress.h:73
static constexpr uint8_t MAX_BATTERY_LEVEL
Definition SegLCD_VK0192_5DigSigBattProgress.h:77
static constexpr uint8_t SIGNAL_MASK_LOW
Definition SegLCD_VK0192_5DigSigBattProgress.h:72
uint8_t _mapSegments(uint8_t val)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:381
static constexpr uint8_t ADDR_LABELS_1
Definition SegLCD_VK0192_5DigSigBattProgress.h:95
static constexpr uint8_t ADDR_PROGRESS_P4
Definition SegLCD_VK0192_5DigSigBattProgress.h:86
static constexpr uint8_t BATTERY_MASK
Definition SegLCD_VK0192_5DigSigBattProgress.h:79
void _writeDigit7seg(uint8_t row, uint8_t col, char c)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:232
void _updateLabels(uint16_t labels, bool set)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:410
void setSignalLevel(uint8_t value)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:34
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL0
Definition SegLCD_VK0192_5DigSigBattProgress.h:62
static constexpr uint8_t DECIMAL_16SEG_MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:61
void clearLabels(uint16_t labels)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:121
int8_t _get16SegmentsAddress(uint8_t row, uint8_t col)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:353
static constexpr uint8_t ADDR_SIGNAL_LOW
Definition SegLCD_VK0192_5DigSigBattProgress.h:71
static constexpr int8_t DECIMAL_ADDR_COL_OFFSET
Definition SegLCD_VK0192_5DigSigBattProgress.h:54
void _setDecimal(uint8_t row, uint8_t col, bool state) override
Virtual method for setting decimal point.
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:134
void setLabels(uint16_t labels)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:117
void init() override
Initialize GPIO pins for communication.
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:8
static constexpr uint8_t ADDR_BATT
Definition SegLCD_VK0192_5DigSigBattProgress.h:78
void setCursor(uint8_t row, uint8_t col) override
Set cursor on exact digit.
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:130
static constexpr uint8_t MAX_SIGNAL_LEVEL
Definition SegLCD_VK0192_5DigSigBattProgress.h:70
LabelFlags
Definition SegLCD_VK0192_5DigSigBattProgress.h:22
@ LABEL_M
Definition SegLCD_VK0192_5DigSigBattProgress.h:29
@ LABEL_MPA
Definition SegLCD_VK0192_5DigSigBattProgress.h:28
@ LABEL_V
Definition SegLCD_VK0192_5DigSigBattProgress.h:31
@ LABEL_PROC
Definition SegLCD_VK0192_5DigSigBattProgress.h:25
@ LABEL_T
Definition SegLCD_VK0192_5DigSigBattProgress.h:24
@ LABEL_KPA
Definition SegLCD_VK0192_5DigSigBattProgress.h:27
@ LABEL_A
Definition SegLCD_VK0192_5DigSigBattProgress.h:30
@ LABEL_P
Definition SegLCD_VK0192_5DigSigBattProgress.h:23
@ LABEL_DEGREE_C
Definition SegLCD_VK0192_5DigSigBattProgress.h:26
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_VK0192_5DigSigBattProgress.h:53
static constexpr uint8_t PROGRESS_LEVEL_SEG[16]
Definition SegLCD_VK0192_5DigSigBattProgress.h:88
static constexpr uint8_t ADDR_PROGRESS_P3
Definition SegLCD_VK0192_5DigSigBattProgress.h:85
void setDegreeSymbol(bool state, uint8_t index=0)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:125
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL1
Definition SegLCD_VK0192_5DigSigBattProgress.h:63
static constexpr uint8_t RAM_SIZE
Definition SegLCD_VK0192_5DigSigBattProgress.h:49
void _writeDigit16seg(uint8_t row, uint8_t col, char c)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:281
static constexpr uint8_t DECIMAL_TOP_MIN_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:55
static constexpr uint8_t PROGRESS_MASK
Definition SegLCD_VK0192_5DigSigBattProgress.h:87
static constexpr uint8_t ADDR_LABELS_3
Definition SegLCD_VK0192_5DigSigBattProgress.h:97
static constexpr uint8_t DECIMAL_BOTTOM_MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:58
static constexpr uint8_t SIGNAL_MASK_HIGH
Definition SegLCD_VK0192_5DigSigBattProgress.h:74
static constexpr uint8_t ADDR_PROGRESS_P1
Definition SegLCD_VK0192_5DigSigBattProgress.h:83
void setBatteryLevel(uint8_t value)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:16
static constexpr uint8_t NUM_7SEG_DIGITS
Definition SegLCD_VK0192_5DigSigBattProgress.h:68
static constexpr uint8_t DECIMAL_POINT_BIT
Definition SegLCD_VK0192_5DigSigBattProgress.h:52
int8_t _get7SegmentsAddress(uint8_t row, uint8_t col)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:307
static constexpr uint8_t ADDR_PROGRESS_P2
Definition SegLCD_VK0192_5DigSigBattProgress.h:84
static constexpr uint8_t BATTERY_LEVEL_SEG[4]
Definition SegLCD_VK0192_5DigSigBattProgress.h:80
static constexpr uint8_t MAX_PROGRESS
Definition SegLCD_VK0192_5DigSigBattProgress.h:82
static constexpr uint8_t DECIMAL_16SEG_MIN_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:60
size_t write(uint8_t ch) override
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:187
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL3
Definition SegLCD_VK0192_5DigSigBattProgress.h:65
static constexpr uint8_t DECIMAL_BOTTOM_MIN_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:57
static constexpr uint8_t DECIMAL_TOP_MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:56
static constexpr uint8_t MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:66
void setProgress(uint8_t value)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:52
static constexpr uint8_t SIGNAL_LEVEL_SEG[3]
Definition SegLCD_VK0192_5DigSigBattProgress.h:75