SegLCDLib
Loading...
Searching...
No Matches
SegLCD_PCF85176_4DR821B.h
Go to the documentation of this file.
1#ifndef SEGLCD_PCF85176_4DR821B_H
2#define SEGLCD_PCF85176_4DR821B_H
3
4
5#if !defined(SEGLCD_DISABLE_ALL_LCDS) || defined(SEGLCD_ENABLE_PCF85176_4DR821B)
7
22 public:
23 typedef enum {
25 SYMBOL_TILDA = 0x80
27
28 SegLCD_PCF85176_4DR821B(SegTransportI2C& transport, uint8_t address = DEFAULT_PCX85_I2C_ADDRESS, uint8_t subaddress = DEFAULT_SUBADDRESS);
29 void init() override;
30 void setSymbol(uint8_t symbol, bool state);
31 void setCursor(uint8_t row, uint8_t col) override;
32 using SegLCDLib::write;
33 size_t write(uint8_t ch) override;
34
35 private:
36 void _setColon(uint8_t row, uint8_t col, bool state) override;
37 void _setDecimal(uint8_t row, uint8_t col, bool state) override;
38 void _setCol0Symbol(uint8_t ch);
39 bool _handleCol0Overlay(uint8_t ch);
40 static constexpr uint8_t RAM_SIZE = 5;
41
42 static constexpr uint8_t FLAG_COLON_DISPLAYED = 0x01;
43 static constexpr uint8_t FLAG_COL0_OVERLAY = 0x02;
44
45 static constexpr uint8_t ADDR_SYMBOLS = 0x00;
46 static constexpr uint8_t ADDR_SEGS = 0x01;
47 static constexpr uint8_t DIGITS = 4;
48 static constexpr uint8_t DECIMAL_POINT_BIT = 0x01;
49 static constexpr uint8_t MIDDLE_COLON_BIT = 0x01;
50 static constexpr uint8_t LEFT_COLON_BIT = 0x20;
51 static constexpr uint8_t MINUS_BIT = 0x40;
52 static constexpr uint8_t DECIMAL_MIN_COL = 0;
53 static constexpr uint8_t DECIMAL_MAX_COL = 2;
54 static constexpr int8_t DECIMAL_COL_OFFSET = -1;
55};
56#endif
57
58#endif
Implementation of the PCF85176 controllers.
Definition SegDriver_PCF85176.h:9
static constexpr uint8_t DEFAULT_PCX85_I2C_ADDRESS
Definition SegDriver_PCx85.h:18
static constexpr uint8_t DEFAULT_SUBADDRESS
Definition SegDriver_PCx85.h:19
virtual size_t write(uint8_t)
Definition SegLCDLib.h:113
Tesla 4DR821B / 4DT821B dashboard cluster LCD (PCF85176).
Definition SegLCD_PCF85176_4DR821B.h:21
static constexpr uint8_t DIGITS
Definition SegLCD_PCF85176_4DR821B.h:47
size_t write(uint8_t ch) override
Definition SegLCD_PCF85176_4DR821B.cpp:98
static constexpr uint8_t DECIMAL_MIN_COL
Definition SegLCD_PCF85176_4DR821B.h:52
static constexpr uint8_t DECIMAL_MAX_COL
Definition SegLCD_PCF85176_4DR821B.h:53
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_PCF85176_4DR821B.h:54
void _setDecimal(uint8_t row, uint8_t col, bool state) override
Virtual method for setting decimal point.
Definition SegLCD_PCF85176_4DR821B.cpp:66
static constexpr uint8_t LEFT_COLON_BIT
Definition SegLCD_PCF85176_4DR821B.h:50
static constexpr uint8_t ADDR_SYMBOLS
Definition SegLCD_PCF85176_4DR821B.h:45
void init() override
Logical display sections that can be targeted by higher-level rendering logic.
Definition SegLCD_PCF85176_4DR821B.cpp:8
static constexpr uint8_t RAM_SIZE
Definition SegLCD_PCF85176_4DR821B.h:40
void _setCol0Symbol(uint8_t ch)
Definition SegLCD_PCF85176_4DR821B.cpp:27
void _setColon(uint8_t row, uint8_t col, bool state) override
Virtual method for setting colon.
Definition SegLCD_PCF85176_4DR821B.cpp:45
SymbolFlags
Definition SegLCD_PCF85176_4DR821B.h:23
@ SYMBOL_TILDA
Definition SegLCD_PCF85176_4DR821B.h:25
@ SYMBOL_ARROW
Definition SegLCD_PCF85176_4DR821B.h:24
static constexpr uint8_t DECIMAL_POINT_BIT
Definition SegLCD_PCF85176_4DR821B.h:48
static constexpr uint8_t ADDR_SEGS
Definition SegLCD_PCF85176_4DR821B.h:46
static constexpr uint8_t FLAG_COLON_DISPLAYED
Definition SegLCD_PCF85176_4DR821B.h:42
static constexpr uint8_t MINUS_BIT
Definition SegLCD_PCF85176_4DR821B.h:51
void setSymbol(uint8_t symbol, bool state)
Definition SegLCD_PCF85176_4DR821B.cpp:13
bool _handleCol0Overlay(uint8_t ch)
Definition SegLCD_PCF85176_4DR821B.cpp:151
void setCursor(uint8_t row, uint8_t col) override
Set cursor on exact digit.
Definition SegLCD_PCF85176_4DR821B.cpp:86
static constexpr uint8_t FLAG_COL0_OVERLAY
Definition SegLCD_PCF85176_4DR821B.h:43
static constexpr uint8_t MIDDLE_COLON_BIT
Definition SegLCD_PCF85176_4DR821B.h:49
Abstract I2C transport.
Definition SegTransport.h:54