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
5#if !defined(SEGLCD_DISABLE_ALL_LCDS) || defined(SEGLCD_ENABLE_VK0192_5DIGSIGBATTPROGRESS)
6#include <SegDriver_VK0192.h>
7
23 public:
24 typedef enum : uint16_t {
25 LABEL_P = 0x0001,
26 LABEL_T = 0x0002,
27 LABEL_PROC = 0x0004,
28 } LabelFlags;
29
30 typedef enum : uint16_t {
31 UNIT_DEGREE_C = 0x0008,
32 UNIT_KPA = 0x0010,
33 UNIT_MPA = 0x0020,
34 UNIT_M = 0x0040,
35 UNIT_A = 0x0080,
36 UNIT_V = 0x0100,
37 } UnitFlags;
38
39 SegLCD_VK0192_5DigSigBattProgress(SegTransport3Wire& transport, uint8_t chipselect);
40 void init() override;
41 void setBatteryLevel(uint8_t value);
42 void setSignalLevel(uint8_t value);
43 void setProgress(uint8_t value);
44 void setUnits(uint16_t units);
45 void clearUnits(uint16_t units);
46 void setDegreeSymbol(bool state, uint8_t index = 0);
47 void setLabels(uint16_t labels);
48 void clearLabels(uint16_t labels);
49 void setCursor(uint8_t row, uint8_t col) override;
50 using SegLCDLib::write;
51 size_t write(uint8_t ch) override;
52
53 private:
54 void _writeDigit7seg(uint8_t row, uint8_t col, char c);
55 void _writeDigit16seg(uint8_t row, uint8_t col, char c);
56 void _setDecimal(uint8_t row, uint8_t col, bool state) override;
57 static constexpr uint8_t RAM_SIZE = 24;
58
59 // Decimal configuration
60 static constexpr uint8_t DECIMAL_POINT_BIT = 0x10;
61 static constexpr int8_t DECIMAL_COL_OFFSET = -1; // Dot belongs to previous digit
62 static constexpr int8_t DECIMAL_ADDR_COL_OFFSET = 1; // Decimal stored in next digit RAM
63 static constexpr uint8_t DECIMAL_TOP_MIN_COL = 0;
64 static constexpr uint8_t DECIMAL_TOP_MAX_COL = 1;
65 static constexpr uint8_t DECIMAL_BOTTOM_MIN_COL = 0;
66 static constexpr uint8_t DECIMAL_BOTTOM_MAX_COL = 3;
67 static constexpr uint8_t DECIMAL_16SEG_BIT = 0x80;
68 static constexpr uint8_t DECIMAL_16SEG_MIN_COL = 0;
69 static constexpr uint8_t DECIMAL_16SEG_MAX_COL = 3;
70 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL0 = 0x12; // nibble 0x24
71 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL1 = 0x08; // nibble 0x10
72 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL2 = 0x0F; // nibble 0x1E
73 static constexpr uint8_t DECIMAL_16SEG_ADDR_COL3 = 0x14; // nibble 0x28
74 static constexpr uint8_t MAX_COL = 4;
75
76 static constexpr uint8_t NUM_7SEG_DIGITS = 10; // 3+2+5 7-seg digits
77
78 static constexpr uint8_t MAX_SIGNAL_LEVEL = 3;
79 static constexpr uint8_t ADDR_SIGNAL_LOW = 0x10;
80 static constexpr uint8_t SIGNAL_MASK_LOW = 0xC0;
81 static constexpr uint8_t ADDR_SIGNAL_HIGH = 0x16;
82 static constexpr uint8_t SIGNAL_MASK_HIGH = 0x80;
83 static constexpr uint8_t SIGNAL_LEVEL_SEG[3] = {0x40, 0x80, 0x80};
84
85 static constexpr uint8_t MAX_BATTERY_LEVEL = 4;
86 static constexpr uint8_t ADDR_BATT = 0x11;
87 static constexpr uint8_t BATTERY_MASK = 0xF0;
88 static constexpr uint8_t BATTERY_LEVEL_SEG[4] = {0x10, 0x80, 0x40, 0x20};
89
90 static constexpr uint8_t MAX_PROGRESS = 150;
91 static constexpr uint8_t ADDR_PROGRESS_P1 = 0x10;
92 static constexpr uint8_t ADDR_PROGRESS_P2 = 0x11;
93 static constexpr uint8_t ADDR_PROGRESS_P3 = 0x12;
94 static constexpr uint8_t ADDR_PROGRESS_P4 = 0x13;
95 static constexpr uint8_t PROGRESS_MASK = 0x0F;
96 static constexpr uint8_t PROGRESS_LEVEL_SEG[16] =
97 { 0x01,
98 0x08, 0x04, 0x02, 0x01,
99 0x01, 0x02, 0x04, 0x08,
100 0x08, 0x04, 0x02,
101 0x08, 0x04, 0x02, 0x01 };
102
103 static constexpr uint8_t ADDR_LABELS_1 = 0x0E;
104 static constexpr uint8_t ADDR_LABELS_2 = 0x0F;
105 static constexpr uint8_t ADDR_LABELS_3 = 0x10;
106
107 uint8_t _mapSegments(uint8_t val);
108 uint16_t _map16Segments(uint16_t val);
109 int8_t _get7SegmentsAddress(uint8_t row, uint8_t col);
110 int8_t _get16SegmentsAddress(uint8_t row, uint8_t col);
111 void _updateUnits(uint16_t units, bool set);
112 void _updateLabels(uint16_t labels, bool set);
113};
114#endif
115
116#endif
VK0192 LCD segment display driver.
Definition SegDriver_VK0192.h:12
virtual size_t write(uint8_t)
Definition SegLCDLib.h:113
5-digit 7-segment LCD with signal/battery/progress (VK0192).
Definition SegLCD_VK0192_5DigSigBattProgress.h:22
uint16_t _map16Segments(uint16_t val)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:406
static constexpr uint8_t DECIMAL_16SEG_BIT
Definition SegLCD_VK0192_5DigSigBattProgress.h:67
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL2
Definition SegLCD_VK0192_5DigSigBattProgress.h:72
static constexpr uint8_t ADDR_LABELS_2
Definition SegLCD_VK0192_5DigSigBattProgress.h:104
static constexpr uint8_t ADDR_SIGNAL_HIGH
Definition SegLCD_VK0192_5DigSigBattProgress.h:81
static constexpr uint8_t MAX_BATTERY_LEVEL
Definition SegLCD_VK0192_5DigSigBattProgress.h:85
static constexpr uint8_t SIGNAL_MASK_LOW
Definition SegLCD_VK0192_5DigSigBattProgress.h:80
uint8_t _mapSegments(uint8_t val)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:396
static constexpr uint8_t ADDR_LABELS_1
Definition SegLCD_VK0192_5DigSigBattProgress.h:103
static constexpr uint8_t ADDR_PROGRESS_P4
Definition SegLCD_VK0192_5DigSigBattProgress.h:94
static constexpr uint8_t BATTERY_MASK
Definition SegLCD_VK0192_5DigSigBattProgress.h:87
void _writeDigit7seg(uint8_t row, uint8_t col, char c)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:247
void _updateLabels(uint16_t labels, bool set)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:478
void setSignalLevel(uint8_t value)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:36
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL0
Definition SegLCD_VK0192_5DigSigBattProgress.h:70
static constexpr uint8_t DECIMAL_16SEG_MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:69
void clearLabels(uint16_t labels)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:141
int8_t _get16SegmentsAddress(uint8_t row, uint8_t col)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:368
static constexpr uint8_t ADDR_SIGNAL_LOW
Definition SegLCD_VK0192_5DigSigBattProgress.h:79
static constexpr int8_t DECIMAL_ADDR_COL_OFFSET
Definition SegLCD_VK0192_5DigSigBattProgress.h:62
void _setDecimal(uint8_t row, uint8_t col, bool state) override
Virtual method for setting decimal point.
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:149
void setLabels(uint16_t labels)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:137
void init() override
Initialize GPIO pins for communication.
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:10
static constexpr uint8_t ADDR_BATT
Definition SegLCD_VK0192_5DigSigBattProgress.h:86
void setCursor(uint8_t row, uint8_t col) override
Set cursor on exact digit.
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:145
static constexpr uint8_t MAX_SIGNAL_LEVEL
Definition SegLCD_VK0192_5DigSigBattProgress.h:78
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_VK0192_5DigSigBattProgress.h:61
static constexpr uint8_t PROGRESS_LEVEL_SEG[16]
Definition SegLCD_VK0192_5DigSigBattProgress.h:96
void clearUnits(uint16_t units)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:123
static constexpr uint8_t ADDR_PROGRESS_P3
Definition SegLCD_VK0192_5DigSigBattProgress.h:93
void setDegreeSymbol(bool state, uint8_t index=0)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:127
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL1
Definition SegLCD_VK0192_5DigSigBattProgress.h:71
static constexpr uint8_t RAM_SIZE
Definition SegLCD_VK0192_5DigSigBattProgress.h:57
void _writeDigit16seg(uint8_t row, uint8_t col, char c)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:296
static constexpr uint8_t DECIMAL_TOP_MIN_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:63
static constexpr uint8_t PROGRESS_MASK
Definition SegLCD_VK0192_5DigSigBattProgress.h:95
static constexpr uint8_t ADDR_LABELS_3
Definition SegLCD_VK0192_5DigSigBattProgress.h:105
static constexpr uint8_t DECIMAL_BOTTOM_MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:66
static constexpr uint8_t SIGNAL_MASK_HIGH
Definition SegLCD_VK0192_5DigSigBattProgress.h:82
static constexpr uint8_t ADDR_PROGRESS_P1
Definition SegLCD_VK0192_5DigSigBattProgress.h:91
void setBatteryLevel(uint8_t value)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:18
static constexpr uint8_t NUM_7SEG_DIGITS
Definition SegLCD_VK0192_5DigSigBattProgress.h:76
void setUnits(uint16_t units)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:119
static constexpr uint8_t DECIMAL_POINT_BIT
Definition SegLCD_VK0192_5DigSigBattProgress.h:60
int8_t _get7SegmentsAddress(uint8_t row, uint8_t col)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:322
static constexpr uint8_t ADDR_PROGRESS_P2
Definition SegLCD_VK0192_5DigSigBattProgress.h:92
UnitFlags
Definition SegLCD_VK0192_5DigSigBattProgress.h:30
@ UNIT_DEGREE_C
Definition SegLCD_VK0192_5DigSigBattProgress.h:31
@ UNIT_V
Definition SegLCD_VK0192_5DigSigBattProgress.h:36
@ UNIT_A
Definition SegLCD_VK0192_5DigSigBattProgress.h:35
@ UNIT_M
Definition SegLCD_VK0192_5DigSigBattProgress.h:34
@ UNIT_MPA
Definition SegLCD_VK0192_5DigSigBattProgress.h:33
@ UNIT_KPA
Definition SegLCD_VK0192_5DigSigBattProgress.h:32
static constexpr uint8_t BATTERY_LEVEL_SEG[4]
Definition SegLCD_VK0192_5DigSigBattProgress.h:88
static constexpr uint8_t MAX_PROGRESS
Definition SegLCD_VK0192_5DigSigBattProgress.h:90
LabelFlags
Definition SegLCD_VK0192_5DigSigBattProgress.h:24
@ LABEL_PROC
Definition SegLCD_VK0192_5DigSigBattProgress.h:27
@ LABEL_T
Definition SegLCD_VK0192_5DigSigBattProgress.h:26
@ LABEL_P
Definition SegLCD_VK0192_5DigSigBattProgress.h:25
static constexpr uint8_t DECIMAL_16SEG_MIN_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:68
size_t write(uint8_t ch) override
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:202
static constexpr uint8_t DECIMAL_16SEG_ADDR_COL3
Definition SegLCD_VK0192_5DigSigBattProgress.h:73
static constexpr uint8_t DECIMAL_BOTTOM_MIN_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:65
static constexpr uint8_t DECIMAL_TOP_MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:64
static constexpr uint8_t MAX_COL
Definition SegLCD_VK0192_5DigSigBattProgress.h:74
void setProgress(uint8_t value)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:54
static constexpr uint8_t SIGNAL_LEVEL_SEG[3]
Definition SegLCD_VK0192_5DigSigBattProgress.h:83
void _updateUnits(uint16_t units, bool set)
Definition SegLCD_VK0192_5DigSigBattProgress.cpp:425
Abstract 3-wire serial transport.
Definition SegTransport.h:23