Prep SSD1331 driver

This commit is contained in:
Theo Arends 2021-01-01 16:05:06 +01:00
parent 46d7e9392e
commit ee1648d3e0
33 changed files with 102 additions and 39 deletions

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -775,6 +775,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -772,6 +772,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 - CS" #define D_SENSOR_RA8876_CS "RA8876 - CS"
#define D_SENSOR_ST7789_CS "ST7789 - CS" #define D_SENSOR_ST7789_CS "ST7789 - CS"
#define D_SENSOR_ST7789_DC "ST7789 - DC" #define D_SENSOR_ST7789_DC "ST7789 - DC"
#define D_SENSOR_SSD1331_CS "SSD1331 - CS"
#define D_SENSOR_SSD1331_DC "SSD1331 - DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "А" #define D_UNIT_AMPERE "А"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "А" #define D_UNIT_AMPERE "А"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "安" #define D_UNIT_AMPERE "安"

View File

@ -776,6 +776,8 @@
#define D_SENSOR_RA8876_CS "RA8876 CS" #define D_SENSOR_RA8876_CS "RA8876 CS"
#define D_SENSOR_ST7789_CS "ST7789 CS" #define D_SENSOR_ST7789_CS "ST7789 CS"
#define D_SENSOR_ST7789_DC "ST7789 DC" #define D_SENSOR_ST7789_DC "ST7789 DC"
#define D_SENSOR_SSD1331_CS "SSD1331 CS"
#define D_SENSOR_SSD1331_DC "SSD1331 DC"
// Units // Units
#define D_UNIT_AMPERE "安培" #define D_UNIT_AMPERE "安培"

View File

@ -629,6 +629,7 @@
// #define USE_DISPLAY_SSD1351 // [DisplayModel 9] Enable SSD1351 module // #define USE_DISPLAY_SSD1351 // [DisplayModel 9] Enable SSD1351 module
// #define USE_DISPLAY_RA8876 // [DisplayModel 10] [I2cDriver39] (Touch) // #define USE_DISPLAY_RA8876 // [DisplayModel 10] [I2cDriver39] (Touch)
// #define USE_DISPLAY_ST7789 // [DisplayModel 12] Enable ST7789 module // #define USE_DISPLAY_ST7789 // [DisplayModel 12] Enable ST7789 module
// #define USE_DISPLAY_SSD1331 // [DisplayModel 14] Enable SSD1331 module
// #define USE_RC522 // Add support for MFRC522 13.56Mhz Rfid reader (+6k code) // #define USE_RC522 // Add support for MFRC522 13.56Mhz Rfid reader (+6k code)
// #define USE_RC522_DATA_FUNCTION // Add support for reading data block content (+0k4 code) // #define USE_RC522_DATA_FUNCTION // Add support for reading data block content (+0k4 code)
// #define USE_RC522_TYPE_INFORMATION // Add support for showing card type (+0k4 code) // #define USE_RC522_TYPE_INFORMATION // Add support for showing card type (+0k4 code)

View File

@ -686,8 +686,9 @@ void ResponseAppendFeatures(void)
#if defined(USE_SPI) && defined(USE_DISPLAY) && defined(USE_DISPLAY_ST7789) #if defined(USE_SPI) && defined(USE_DISPLAY) && defined(USE_DISPLAY_ST7789)
feature7 |= 0x00080000; // xdsp_12_ST7789.ino feature7 |= 0x00080000; // xdsp_12_ST7789.ino
#endif #endif
#if defined(USE_SPI) && defined(USE_DISPLAY) && defined(USE_DISPLAY_SSD1331)
// feature7 |= 0x00100000; feature7 |= 0x00100000; // xdsp_14_SSD1331.ino
#endif
// feature7 |= 0x00200000; // feature7 |= 0x00200000;
// feature7 |= 0x00400000; // feature7 |= 0x00400000;
// feature7 |= 0x00800000; // feature7 |= 0x00800000;

View File

@ -1614,12 +1614,14 @@ void GpioInit(void)
ValidSpiPinUsed(GPIO_SSD1351_CS) || ValidSpiPinUsed(GPIO_SSD1351_CS) ||
ValidSpiPinUsed(GPIO_RA8876_CS) || ValidSpiPinUsed(GPIO_RA8876_CS) ||
ValidSpiPinUsed(GPIO_ST7789_DC) || // ST7789 CS may be omitted so chk DC too ValidSpiPinUsed(GPIO_ST7789_DC) || // ST7789 CS may be omitted so chk DC too
ValidSpiPinUsed(GPIO_ST7789_CS) ValidSpiPinUsed(GPIO_ST7789_CS) ||
ValidSpiPinUsed(GPIO_SSD1331_CS)
); );
bool valid_dc = (ValidSpiPinUsed(GPIO_SPI_DC) || bool valid_dc = (ValidSpiPinUsed(GPIO_SPI_DC) ||
ValidSpiPinUsed(GPIO_NRF24_DC) || ValidSpiPinUsed(GPIO_NRF24_DC) ||
ValidSpiPinUsed(GPIO_ILI9341_DC) || ValidSpiPinUsed(GPIO_ILI9341_DC) ||
ValidSpiPinUsed(GPIO_ST7789_DC) ValidSpiPinUsed(GPIO_ST7789_DC) ||
ValidSpiPinUsed(GPIO_SSD1331_DC)
); );
// If SPI_CS and/or SPI_DC is used they must be valid // If SPI_CS and/or SPI_DC is used they must be valid
TasmotaGlobal.spi_enabled = (valid_cs && valid_dc) ? SPI_MOSI_MISO : SPI_NONE; TasmotaGlobal.spi_enabled = (valid_cs && valid_dc) ? SPI_MOSI_MISO : SPI_NONE;
@ -1644,7 +1646,8 @@ void GpioInit(void)
PinUsed(GPIO_SSD1351_CS) || PinUsed(GPIO_SSD1351_CS) ||
PinUsed(GPIO_RA8876_CS) || PinUsed(GPIO_RA8876_CS) ||
PinUsed(GPIO_ST7789_DC) || // ST7789 CS may be omitted so chk DC too PinUsed(GPIO_ST7789_DC) || // ST7789 CS may be omitted so chk DC too
PinUsed(GPIO_ST7789_CS) PinUsed(GPIO_ST7789_CS) ||
PinUsed(GPIO_SSD1331_CS)
) { ) {
uint32_t spi_mosi = (PinUsed(GPIO_SPI_CLK) && PinUsed(GPIO_SPI_MOSI)) ? SPI_MOSI : SPI_NONE; uint32_t spi_mosi = (PinUsed(GPIO_SPI_CLK) && PinUsed(GPIO_SPI_MOSI)) ? SPI_MOSI : SPI_NONE;
uint32_t spi_miso = (PinUsed(GPIO_SPI_CLK) && PinUsed(GPIO_SPI_MISO)) ? SPI_MISO : SPI_NONE; uint32_t spi_miso = (PinUsed(GPIO_SPI_CLK) && PinUsed(GPIO_SPI_MISO)) ? SPI_MISO : SPI_NONE;

View File

@ -310,6 +310,7 @@
#define USE_DISPLAY_SSD1351 // [DisplayModel 9] #define USE_DISPLAY_SSD1351 // [DisplayModel 9]
#define USE_DISPLAY_RA8876 // [DisplayModel 10] #define USE_DISPLAY_RA8876 // [DisplayModel 10]
#define USE_DISPLAY_ST7789 // [DisplayModel 12] Enable ST7789 module #define USE_DISPLAY_ST7789 // [DisplayModel 12] Enable ST7789 module
// #define USE_DISPLAY_SSD1331 // [DisplayModel 14] Enable SSD1331 module
#undef DEBUG_THEO // Disable debug code #undef DEBUG_THEO // Disable debug code
#undef USE_DEBUG_DRIVER // Disable debug code #undef USE_DEBUG_DRIVER // Disable debug code

View File

@ -141,6 +141,7 @@ enum UserSelectablePins {
GPIO_SSD1351_CS, GPIO_SSD1351_CS,
GPIO_RA8876_CS, GPIO_RA8876_CS,
GPIO_ST7789_CS, GPIO_ST7789_DC, GPIO_ST7789_CS, GPIO_ST7789_DC,
GPIO_SSD1331_CS, GPIO_SSD1331_DC,
GPIO_SENSOR_END }; GPIO_SENSOR_END };
enum ProgramSelectablePins { enum ProgramSelectablePins {
@ -302,6 +303,7 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_SSD1351_CS "|" D_SENSOR_SSD1351_CS "|"
D_SENSOR_RA8876_CS "|" D_SENSOR_RA8876_CS "|"
D_SENSOR_ST7789_CS "|" D_SENSOR_ST7789_DC "|" D_SENSOR_ST7789_CS "|" D_SENSOR_ST7789_DC "|"
D_SENSOR_SSD1331_CS "|" D_SENSOR_SSD1331_DC "|"
; ;
const char kSensorNamesFixed[] PROGMEM = const char kSensorNamesFixed[] PROGMEM =
@ -403,7 +405,11 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#ifdef USE_DISPLAY_ST7789 #ifdef USE_DISPLAY_ST7789
AGPIO(GPIO_ST7789_CS), AGPIO(GPIO_ST7789_CS),
AGPIO(GPIO_ST7789_DC), AGPIO(GPIO_ST7789_DC),
#endif //f USE_DISPLAY_ST7789 #endif // USE_DISPLAY_ST7789
#ifdef USE_DISPLAY_SSD1331
AGPIO(GPIO_SSD1331_CS),
AGPIO(GPIO_SSD1331_DC),
#endif // USE_DISPLAY_SSD1331
AGPIO(GPIO_BACKLIGHT), // Display backlight control AGPIO(GPIO_BACKLIGHT), // Display backlight control
AGPIO(GPIO_OLED_RESET), // OLED Display Reset AGPIO(GPIO_OLED_RESET), // OLED Display Reset
#endif #endif

View File

@ -90,8 +90,7 @@ void SSD1351_InitDriver() {
#ifdef USE_DISPLAY_MODES1TO5 #ifdef USE_DISPLAY_MODES1TO5
void SSD1351PrintLog(void) void SSD1351PrintLog(void) {
{
disp_refresh--; disp_refresh--;
if (!disp_refresh) { if (!disp_refresh) {
disp_refresh = Settings.display_refresh; disp_refresh = Settings.display_refresh;
@ -119,8 +118,7 @@ void SSD1351PrintLog(void)
} }
} }
void SSD1351Time(void) void SSD1351Time(void) {
{
char line[12]; char line[12];
renderer->clearDisplay(); renderer->clearDisplay();
@ -133,8 +131,7 @@ void SSD1351Time(void)
renderer->Updateframe(); renderer->Updateframe();
} }
void SSD1351Refresh(void) // Every second void SSD1351Refresh(void) { // Every second
{
if (Settings.display_mode) { // Mode 0 is User text if (Settings.display_mode) { // Mode 0 is User text
switch (Settings.display_mode) { switch (Settings.display_mode) {
case 1: // Time case 1: // Time
@ -151,12 +148,12 @@ void SSD1351Refresh(void) // Every second
} }
#endif // USE_DISPLAY_MODES1TO5 #endif // USE_DISPLAY_MODES1TO5
/*********************************************************************************************/
/*********************************************************************************************\ /*********************************************************************************************\
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
bool Xdsp09(uint8_t function)
{ bool Xdsp09(uint8_t function) {
bool result = false; bool result = false;
if (FUNC_DISPLAY_INIT_DRIVER == function) { if (FUNC_DISPLAY_INIT_DRIVER == function) {

View File

@ -1,7 +1,7 @@
/* /*
xdsp_14_SSD1331.ino - Display SSD1331 support for Tasmota xdsp_14_SSD1331.ino - Display SSD1331 support for Tasmota
Copyright (C) 2020 Jeroen Vermeulen, Gerhard Mutz and Theo Arends Copyright (C) 2021 Jeroen Vermeulen, Gerhard Mutz and Theo Arends
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -35,6 +35,7 @@
#include <Adafruit_SSD1331.h> #include <Adafruit_SSD1331.h>
#include <SPI.h> #include <SPI.h>
bool ssd1331_init_done = false;
extern uint8_t *buffer; extern uint8_t *buffer;
extern uint8_t color_type; extern uint8_t color_type;
Adafruit_SSD1331 *ssd1331; Adafruit_SSD1331 *ssd1331;
@ -42,11 +43,10 @@ Adafruit_SSD1331 *ssd1331;
/*********************************************************************************************/ /*********************************************************************************************/
void SSD1331_InitDriver() { void SSD1331_InitDriver() {
if (!Settings.display_model) { if (PinUsed(GPIO_SSD1331_CS) && PinUsed(GPIO_SSD1331_DC) &&
Settings.display_model = XDSP_14; ((TasmotaGlobal.soft_spi_enabled & SPI_MOSI) || (TasmotaGlobal.spi_enabled & SPI_MOSI))) {
}
if (XDSP_14 == Settings.display_model) { Settings.display_model = XDSP_14;
if (Settings.display_width != Adafruit_SSD1331::TFTWIDTH) { if (Settings.display_width != Adafruit_SSD1331::TFTWIDTH) {
Settings.display_width = Adafruit_SSD1331::TFTWIDTH; Settings.display_width = Adafruit_SSD1331::TFTWIDTH;
@ -61,13 +61,17 @@ void SSD1331_InitDriver() {
fg_color = SSD1331_WHITE; fg_color = SSD1331_WHITE;
bg_color = SSD1331_BLACK; bg_color = SSD1331_BLACK;
int8_t reset = -1;
if (PinUsed(GPIO_OLED_RESET)) {
reset = Pin(GPIO_OLED_RESET);
}
// init renderer // init renderer
if (PinUsed(GPIO_SSPI_CS) && PinUsed(GPIO_SSPI_DC) && PinUsed(GPIO_SSPI_MOSI) && PinUsed(GPIO_SSPI_SCLK) && PinUsed(GPIO_OLED_RESET)) { if (TasmotaGlobal.soft_spi_enabled) {
ssd1331 = new Adafruit_SSD1331(Pin(GPIO_SSPI_CS),Pin(GPIO_SSPI_DC),Pin(GPIO_SSPI_MOSI),Pin(GPIO_SSPI_SCLK),Pin(GPIO_OLED_RESET)); ssd1331 = new Adafruit_SSD1331(Pin(GPIO_SSD1331_CS), Pin(GPIO_SSD1331_DC), Pin(GPIO_SSPI_MOSI), Pin(GPIO_SSPI_SCLK), reset);
} else if (PinUsed(GPIO_SPI_CS) && PinUsed(GPIO_SPI_DC)) { }
ssd1331 = new Adafruit_SSD1331(&SPI,Pin(GPIO_SPI_CS),Pin(GPIO_SPI_DC),Pin(GPIO_OLED_RESET)); else if (TasmotaGlobal.spi_enabled) {
} else { ssd1331 = new Adafruit_SSD1331(&SPI, Pin(GPIO_SSD1331_CS), Pin(GPIO_SSD1331_DC), reset);
return;
} }
delay(100); delay(100);
@ -86,13 +90,15 @@ void SSD1331_InitDriver() {
#endif #endif
color_type = COLOR_COLOR; color_type = COLOR_COLOR;
ssd1331_init_done = true;
AddLog_P(LOG_LEVEL_INFO, PSTR("DSP: SSD1331"));
} }
} }
#ifdef USE_DISPLAY_MODES1TO5 #ifdef USE_DISPLAY_MODES1TO5
void SSD1331PrintLog(bool withDateTime) void SSD1331PrintLog(bool withDateTime) {
{
disp_refresh--; disp_refresh--;
if (!disp_refresh) { if (!disp_refresh) {
disp_refresh = Settings.display_refresh; disp_refresh = Settings.display_refresh;
@ -129,8 +135,7 @@ void SSD1331PrintLog(bool withDateTime)
} }
} }
void SSD1331Time(void) void SSD1331Time(void) {
{
char line[12]; char line[12];
renderer->clearDisplay(); renderer->clearDisplay();
@ -142,8 +147,7 @@ void SSD1331Time(void)
renderer->Updateframe(); renderer->Updateframe();
} }
void SSD1331Refresh(void) // Every second void SSD1331Refresh(void) { // Every second
{
if (Settings.display_mode) { // Mode 0 is User text if (Settings.display_mode) { // Mode 0 is User text
switch (Settings.display_mode) { switch (Settings.display_mode) {
case 1: // Time case 1: // Time
@ -162,18 +166,18 @@ void SSD1331Refresh(void) // Every second
} }
#endif // USE_DISPLAY_MODES1TO5 #endif // USE_DISPLAY_MODES1TO5
/*********************************************************************************************/
/*********************************************************************************************\ /*********************************************************************************************\
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
bool Xdsp14(uint8_t function)
{ bool Xdsp14(uint8_t function) {
bool result = false; bool result = false;
if (FUNC_DISPLAY_INIT_DRIVER == function) { if (FUNC_DISPLAY_INIT_DRIVER == function) {
SSD1331_InitDriver(); SSD1331_InitDriver();
} }
else if (XDSP_14 == Settings.display_model) { else if (ssd1331_init_done && (XDSP_14 == Settings.display_model)) {
switch (function) { switch (function) {
case FUNC_DISPLAY_MODEL: case FUNC_DISPLAY_MODEL:
result = true; result = true;

View File

@ -241,7 +241,7 @@ a_features = [[
"USE_EZODO","USE_EZORGB","USE_EZOPMP","USE_AS608", "USE_EZODO","USE_EZORGB","USE_EZOPMP","USE_AS608",
"USE_SHELLY_DIMMER","USE_RC522","USE_FTC532","USE_DISPLAY_EPAPER_42", "USE_SHELLY_DIMMER","USE_RC522","USE_FTC532","USE_DISPLAY_EPAPER_42",
"USE_DISPLAY_ILI9488","USE_DISPLAY_SSD1351","USE_DISPLAY_RA8876","USE_DISPLAY_ST7789", "USE_DISPLAY_ILI9488","USE_DISPLAY_SSD1351","USE_DISPLAY_RA8876","USE_DISPLAY_ST7789",
"","","","", "USE_DISPLAY_SSD1331","","","",
"","","","", "","","","",
"","","","" "","","",""
]] ]]