Display_Lib_RPI 2.4.0
A C++ Library to connect electronic displays to Linux single board computers.
Loading...
Searching...
No Matches
HT16K33plus_Model1_RDL.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include <stdint.h>
14#include <stdbool.h>
15#include <algorithm> // Required for std::fill
16#include <cstring>
17
18#include <lgpio.h>
19#include "common_data_RDL.hpp"
21
25{
26 public:
27 // enums:
29 enum TextAlignment_e : uint8_t
30 {
34 };
39 enum BlinkFreq_e : uint8_t
40 {
41 BLINKOFF = 0x81,
42 BLINKON2HZ = 0x83,
43 BLINKON1HZ = 0x85,
44 BLINKON0_5HZ = 0x87
45 };
47 enum DecimalPoint_e : uint8_t
48 {
50 DecPointOn = 1
51 };
53 enum DisplayType_e : uint8_t
54 {
57 SegType14 = 14,
58 SegType16 = 16
59 };
60 // constructor
61 HT16K33plus_Model1(int I2Cdevice, int I2Caddress, int I2Cflags);
62 // methods I2C related
65 int DisplayCheckConnection(void);
66 int DisplayI2CErrorGet(void) const;
67 uint16_t DisplayI2CErrorTimeoutGet(void) const;
68 void DisplayI2CErrorTimeoutSet(uint16_t);
69 uint8_t DisplayI2CErrorRetryNumGet(void) const;
70 void DisplayI2CErrorRetryNumSet(uint8_t);
71
72 // Device related
73 void DisplayInit(uint8_t brightLevel, BlinkFreq_e blink,
74 uint8_t numOfDigits, DisplayType_e dtype);
75 void DisplayOn(void);
76 void DisplayOff(void);
77 void DisplaySleep(void);
78 void DisplayNormal(void);
79 void DisplayResetDefault(void);
80 void setBrightness(uint8_t value);
81 uint8_t getBrightness() const;
82 void setBlink(BlinkFreq_e value);
83 BlinkFreq_e getBlink() const;
85
86 // Display data related
87 void ClearDigits(void);
88 //raw data segments
89 void displayRawData(uint8_t digitPos, uint16_t value);
90 // Display data
91 rdlib::Return_Codes_e displayChar(uint8_t digitPos, char c, DecimalPoint_e dp);
92 rdlib::Return_Codes_e displayText(const char *text, TextAlignment_e TextAlignment);
93 rdlib::Return_Codes_e displayText(const char *text);
94 rdlib::Return_Codes_e displayHexChar(uint8_t digitPos, char hex);
95 rdlib::Return_Codes_e displayIntNum(int32_t number, TextAlignment_e TextAlignment);
96 rdlib::Return_Codes_e displayFloatNum(float number, TextAlignment_e TextAlignment, uint8_t fractionDigits);
97 protected:
98
99 private:
100 rdlib::Return_Codes_e displayMultiSegNum(uint8_t digitPos, char c, DecimalPoint_e dp);
101
102 // methods I2C related
103 void SendCmd(uint8_t cmd);
104 void SendData(const unsigned char* data, size_t length);
105
106 // Members I2C related
107 int _I2CAddress = 0x70 ;
108 int _I2CDevice = 1;
109 int _I2CFlags = 0;
110 int _I2CHandle = 0;
111 uint16_t _I2C_ErrorDelay = 100;
112 uint8_t _I2C_ErrorRetryNum = 3;
115 // members device related
116 // Register Command List
117 static constexpr uint8_t HT16K33_DDAPTR = 0x00;
118 static constexpr uint8_t HT16K33_NORMAL = 0x21;
119 static constexpr uint8_t HT16K33_STANDBY = 0x20;
120 static constexpr uint8_t HT16K33_DISPLAYON = 0x81;
121 static constexpr uint8_t HT16K33_DISPLAYOFF = 0x80;
122 static constexpr uint8_t HT16K33_BRIGHTNESS = 0xE0;
126 uint8_t _brightness = 7;
127 uint8_t _numOfDigits = 4;
129 // Display Offsets and Masks for ASCII Font
130 static constexpr uint8_t _HT_ASCIIOffset = 0x20;
131 static constexpr uint8_t _HT_HEXoffset = 0x10;
132 static constexpr uint8_t _HT_ASCIIEnd = 0x7B;
134 static constexpr uint8_t _HT_DEC_POINT_7_MASK = 0x80;
135 static constexpr uint16_t _HT_DEC_POINT_9_MASK = 0x0200;
136 static constexpr uint16_t _HT_DEC_POINT_14_MASK = 0x4000;
138};
139
FourteenSegmentFont Class that provides access to a fourteen-segment font data table.
Definition led_segment_font_data_RDL.hpp:36
class to control Ht16K33 , supports 7 9 14 and 16 segment displays
Definition HT16K33plus_Model1_RDL.hpp:25
static constexpr uint16_t _HT_DEC_POINT_14_MASK
Definition HT16K33plus_Model1_RDL.hpp:136
BlinkFreq_e _blinkSetting
Definition HT16K33plus_Model1_RDL.hpp:124
void DisplayI2CErrorRetryNumSet(uint8_t)
Sets the I2C error retry attempts used in the event of an I2C write error.
Definition HT16K33plus_Model1_RDL.cpp:155
int _I2CDevice
Definition HT16K33plus_Model1_RDL.hpp:108
rdlib::Return_Codes_e displayIntNum(int32_t number, TextAlignment_e TextAlignment)
Display an integer and leading zeros optional.
Definition HT16K33plus_Model1_RDL.cpp:523
TextAlignment_e
Definition HT16K33plus_Model1_RDL.hpp:30
@ AlignLeft
Definition HT16K33plus_Model1_RDL.hpp:31
@ AlignRightZeros
Definition HT16K33plus_Model1_RDL.hpp:33
@ AlignRight
Definition HT16K33plus_Model1_RDL.hpp:32
uint8_t getBrightness() const
Gets the current brightness level.
Definition HT16K33plus_Model1_RDL.cpp:289
static constexpr uint8_t HT16K33_DDAPTR
Definition HT16K33plus_Model1_RDL.hpp:117
void setBrightness(uint8_t value)
Sets the display brightness level.
Definition HT16K33plus_Model1_RDL.cpp:273
void DisplayI2CErrorTimeoutSet(uint16_t)
Sets the I2C timeout, in the event of an I2C write error.
Definition HT16K33plus_Model1_RDL.cpp:131
void DisplayNormal(void)
Restores the display to normal operation mode. Turn on System oscillator.
Definition HT16K33plus_Model1_RDL.cpp:228
int _I2CFlags
Definition HT16K33plus_Model1_RDL.hpp:109
static constexpr uint8_t HT16K33_NORMAL
Definition HT16K33plus_Model1_RDL.hpp:118
static constexpr uint8_t _HT_DEC_POINT_7_MASK
Definition HT16K33plus_Model1_RDL.hpp:134
static constexpr uint8_t _HT_HEXoffset
Definition HT16K33plus_Model1_RDL.hpp:131
static constexpr uint8_t _HT_ASCIIOffset
Definition HT16K33plus_Model1_RDL.hpp:130
void displayRawData(uint8_t digitPos, uint16_t value)
Sends raw segment data to a specific digit position.
Definition HT16K33plus_Model1_RDL.cpp:380
static constexpr uint8_t HT16K33_STANDBY
Definition HT16K33plus_Model1_RDL.hpp:119
uint8_t _I2C_ErrorRetryNum
Definition HT16K33plus_Model1_RDL.hpp:112
DisplayType_e _displayType
Definition HT16K33plus_Model1_RDL.hpp:125
int DisplayCheckConnection(void)
checks if Display on I2C bus
Definition HT16K33plus_Model1_RDL.cpp:166
rdlib::Return_Codes_e displayHexChar(uint8_t digitPos, char hex)
Send Hexadecimal value to seven segment.
Definition HT16K33plus_Model1_RDL.cpp:491
rdlib::Return_Codes_e displayFloatNum(float number, TextAlignment_e TextAlignment, uint8_t fractionDigits)
Displays a floating-point number on the display.
Definition HT16K33plus_Model1_RDL.cpp:561
void DisplayOff(void)
Turns off the display.
Definition HT16K33plus_Model1_RDL.cpp:214
uint8_t DisplayI2CErrorRetryNumGet(void) const
Gets the I2C error retry attempts, used in the event of an I2C write error.
Definition HT16K33plus_Model1_RDL.cpp:148
uint16_t _I2C_ErrorDelay
Definition HT16K33plus_Model1_RDL.hpp:111
int DisplayI2CErrorGet(void) const
get I2C error Flag
Definition HT16K33plus_Model1_RDL.cpp:124
static constexpr uint8_t HT16K33_DISPLAYOFF
Definition HT16K33plus_Model1_RDL.hpp:121
static constexpr uint8_t HT16K33_DISPLAYON
Definition HT16K33plus_Model1_RDL.hpp:120
rdlib::Return_Codes_e displayChar(uint8_t digitPos, char c, DecimalPoint_e dp)
Displays a single character at the specified digit position.
Definition HT16K33plus_Model1_RDL.cpp:304
void ClearDigits(void)
Clears all digits on the display.
Definition HT16K33plus_Model1_RDL.cpp:395
rdlib::Return_Codes_e Display_I2C_ON(void)
Switch on the I2C.
Definition HT16K33plus_Model1_RDL.cpp:84
uint8_t _numOfDigits
Definition HT16K33plus_Model1_RDL.hpp:127
int _I2CAddress
Definition HT16K33plus_Model1_RDL.hpp:107
DisplayType_e getDisplayType() const
Gets the display type.
Definition HT16K33plus_Model1_RDL.cpp:265
rdlib::Return_Codes_e Display_I2C_OFF(void)
End I2C operations.
Definition HT16K33plus_Model1_RDL.cpp:106
void setBlink(BlinkFreq_e value)
Sets the display blink frequency.
Definition HT16K33plus_Model1_RDL.cpp:248
int _I2C_ErrorFlag
Definition HT16K33plus_Model1_RDL.hpp:113
static constexpr uint8_t _HT_ASCIIEnd
Definition HT16K33plus_Model1_RDL.hpp:132
BlinkFreq_e
Definition HT16K33plus_Model1_RDL.hpp:40
@ BLINKON1HZ
Definition HT16K33plus_Model1_RDL.hpp:43
@ BLINKON0_5HZ
Definition HT16K33plus_Model1_RDL.hpp:44
@ BLINKOFF
Definition HT16K33plus_Model1_RDL.hpp:41
@ BLINKON2HZ
Definition HT16K33plus_Model1_RDL.hpp:42
rdlib::Return_Codes_e displayMultiSegNum(uint8_t digitPos, char c, DecimalPoint_e dp)
Displays a character on multi-segment displays (9, 14, or 16 segments).
Definition HT16K33plus_Model1_RDL.cpp:337
BlinkFreq_e getBlink() const
Gets the current blink frequency setting.
Definition HT16K33plus_Model1_RDL.cpp:257
uint8_t _brightness
Definition HT16K33plus_Model1_RDL.hpp:126
rdlib::Return_Codes_e displayText(const char *text, TextAlignment_e TextAlignment)
Displays a text string on display.
Definition HT16K33plus_Model1_RDL.cpp:412
int _I2CHandle
Definition HT16K33plus_Model1_RDL.hpp:110
uint16_t DisplayI2CErrorTimeoutGet(void) const
Gets the I2C timeout, used in the event of an I2C write error.
Definition HT16K33plus_Model1_RDL.cpp:141
static constexpr uint8_t HT16K33_BRIGHTNESS
Definition HT16K33plus_Model1_RDL.hpp:122
void DisplayOn(void)
Turns on the display with the previously set blink setting.
Definition HT16K33plus_Model1_RDL.cpp:207
void SendData(const unsigned char *data, size_t length)
Send data buffer to via I2C.
Definition HT16K33plus_Model1_RDL.cpp:29
DecimalPoint_e
Definition HT16K33plus_Model1_RDL.hpp:48
@ DecPointOff
Definition HT16K33plus_Model1_RDL.hpp:49
@ DecPointOn
Definition HT16K33plus_Model1_RDL.hpp:50
void SendCmd(uint8_t cmd)
Send command byte to display.
Definition HT16K33plus_Model1_RDL.cpp:54
static constexpr uint16_t _HT_DEC_POINT_9_MASK
Definition HT16K33plus_Model1_RDL.hpp:135
void DisplaySleep(void)
Puts the display into standby mode. Turn off System oscillator.
Definition HT16K33plus_Model1_RDL.cpp:221
DisplayType_e
Definition HT16K33plus_Model1_RDL.hpp:54
@ SegType7
Definition HT16K33plus_Model1_RDL.hpp:55
@ SegType14
Definition HT16K33plus_Model1_RDL.hpp:57
@ SegType16
Definition HT16K33plus_Model1_RDL.hpp:58
@ SegType9
Definition HT16K33plus_Model1_RDL.hpp:56
void DisplayInit(uint8_t brightLevel, BlinkFreq_e blink, uint8_t numOfDigits, DisplayType_e dtype)
Initializes the HT16K33 display with specified settings.
Definition HT16K33plus_Model1_RDL.cpp:188
void DisplayResetDefault(void)
Resets the display to default settings.
Definition HT16K33plus_Model1_RDL.cpp:237
NineSegmentFont Class that provides access to a nine-segment font data table.
Definition led_segment_font_data_RDL.hpp:25
SevenSegmentFont Class that provides access to a seven-segment font data table.
Definition led_segment_font_data_RDL.hpp:15
SixteenSegmentFont Class that provides access to a sixteen-segment font data table.
Definition led_segment_font_data_RDL.hpp:46
file to hold common data and functions used by many Displays Project Name: Display_Lib_RPI
LED segment font data file for ht16k33 tm1638, tm1637 & max7219 modules.
Return_Codes_e
Definition common_data_RDL.hpp:22