mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-29 05:36:39 +00:00
Update libraries and fix SSD1306 power control
Update libraries and fix SSD1306 power control
This commit is contained in:
parent
42c8ac61e8
commit
5f6a87c7c0
0
lib/Adafruit_SH1106/Adafruit_SH1106.cpp → lib/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.cpp
Executable file → Normal file
0
lib/Adafruit_SH1106/Adafruit_SH1106.cpp → lib/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.cpp
Executable file → Normal file
0
lib/Adafruit_SH1106/Adafruit_SH1106.h → lib/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.h
Executable file → Normal file
0
lib/Adafruit_SH1106/Adafruit_SH1106.h → lib/Adafruit_SH1106-gemu-1.0/Adafruit_SH1106.h
Executable file → Normal file
0
lib/Adafruit_SH1106/LICENSE.txt → lib/Adafruit_SH1106-gemu-1.0/LICENSE.txt
Executable file → Normal file
0
lib/Adafruit_SH1106/LICENSE.txt → lib/Adafruit_SH1106-gemu-1.0/LICENSE.txt
Executable file → Normal file
0
lib/Adafruit_SH1106/README.md → lib/Adafruit_SH1106-gemu-1.0/README.md
Executable file → Normal file
0
lib/Adafruit_SH1106/README.md → lib/Adafruit_SH1106-gemu-1.0/README.md
Executable file → Normal file
@ -1108,6 +1108,16 @@ void Adafruit_SSD1306::dim(boolean dim) {
|
|||||||
TRANSACTION_END
|
TRANSACTION_END
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Adafruit_SSD1306::DisplayOnff(int8_t on) {
|
||||||
|
TRANSACTION_START
|
||||||
|
if(on) {
|
||||||
|
ssd1306_command1(SSD1306_DISPLAYON);
|
||||||
|
} else {
|
||||||
|
ssd1306_command1(SSD1306_DISPLAYOFF);
|
||||||
|
}
|
||||||
|
TRANSACTION_END
|
||||||
|
}
|
||||||
|
|
||||||
void Adafruit_SSD1306::Updateframe(void) {
|
void Adafruit_SSD1306::Updateframe(void) {
|
||||||
display();
|
display();
|
||||||
}
|
}
|
@ -140,6 +140,7 @@ public:
|
|||||||
void display(void);
|
void display(void);
|
||||||
void invertDisplay(boolean i);
|
void invertDisplay(boolean i);
|
||||||
void dim(boolean dim);
|
void dim(boolean dim);
|
||||||
|
void DisplayOnff(int8_t on);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
void clearDisplay(void);
|
void clearDisplay(void);
|
@ -1,5 +1,7 @@
|
|||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* 6.6.0.6 20190819
|
* 6.6.0.6 20190819
|
||||||
|
* Add I2C display driver for SH1106 oled by Gerhard Mutz
|
||||||
|
* Add SPI display drivers for epaper 4.2 inch, ILI9488 TFT, SSD1351 Color oled and RA8876 TFT by Gerhard Mutz
|
||||||
*
|
*
|
||||||
* 6.6.0.5 20190816
|
* 6.6.0.5 20190816
|
||||||
* Add command WebSensor<sensor number> 0/1 to control display of sensor data in web GUI (#6085)
|
* Add command WebSensor<sensor number> 0/1 to control display of sensor data in web GUI (#6085)
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#if defined(USE_I2C) || defined(USE_SPI)
|
#if defined(USE_I2C) || defined(USE_SPI)
|
||||||
#ifdef USE_DISPLAY
|
#ifdef USE_DISPLAY
|
||||||
|
|
||||||
@ -28,7 +27,7 @@
|
|||||||
|
|
||||||
Renderer *renderer;
|
Renderer *renderer;
|
||||||
|
|
||||||
enum ColorType { COLOR_BW,COLOR_COLOR};
|
enum ColorType { COLOR_BW, COLOR_COLOR };
|
||||||
|
|
||||||
#ifndef MAXBUTTONS
|
#ifndef MAXBUTTONS
|
||||||
#define MAXBUTTONS 16
|
#define MAXBUTTONS 16
|
||||||
@ -45,7 +44,6 @@ uint16_t bg_color = 0;
|
|||||||
uint8_t color_type = COLOR_BW;
|
uint8_t color_type = COLOR_BW;
|
||||||
uint8_t auto_draw=1;
|
uint8_t auto_draw=1;
|
||||||
|
|
||||||
|
|
||||||
const uint8_t DISPLAY_MAX_DRIVERS = 16; // Max number of display drivers/models supported by xdsp_interface.ino
|
const uint8_t DISPLAY_MAX_DRIVERS = 16; // Max number of display drivers/models supported by xdsp_interface.ino
|
||||||
const uint8_t DISPLAY_MAX_COLS = 44; // Max number of columns allowed with command DisplayCols
|
const uint8_t DISPLAY_MAX_COLS = 44; // Max number of columns allowed with command DisplayCols
|
||||||
const uint8_t DISPLAY_MAX_ROWS = 32; // Max number of lines allowed with command DisplayRows
|
const uint8_t DISPLAY_MAX_ROWS = 32; // Max number of lines allowed with command DisplayRows
|
||||||
@ -87,7 +85,6 @@ void (* const DisplayCommand[])(void) PROGMEM = {
|
|||||||
&CmndDisplayDimmer, &CmndDisplayColumns, &CmndDisplayRows, &CmndDisplaySize, &CmndDisplayFont,
|
&CmndDisplayDimmer, &CmndDisplayColumns, &CmndDisplayRows, &CmndDisplaySize, &CmndDisplayFont,
|
||||||
&CmndDisplayRotate, &CmndDisplayText, &CmndDisplayAddress };
|
&CmndDisplayRotate, &CmndDisplayText, &CmndDisplayAddress };
|
||||||
|
|
||||||
|
|
||||||
char *dsp_str;
|
char *dsp_str;
|
||||||
|
|
||||||
uint16_t dsp_x;
|
uint16_t dsp_x;
|
||||||
@ -433,12 +430,18 @@ void DisplayText(void)
|
|||||||
DisplayInit(DISPLAY_INIT_FULL);
|
DisplayInit(DISPLAY_INIT_FULL);
|
||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
if (!renderer) DisplayOnOff(0);
|
if (!renderer) {
|
||||||
else renderer->DisplayOnff(0);
|
DisplayOnOff(0);
|
||||||
|
} else {
|
||||||
|
renderer->DisplayOnff(0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
if (!renderer) DisplayOnOff(1);
|
if (!renderer) {
|
||||||
else renderer->DisplayOnff(1);
|
DisplayOnOff(1);
|
||||||
|
} else {
|
||||||
|
renderer->DisplayOnff(1);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
// set disp_xpos
|
// set disp_xpos
|
||||||
@ -1261,9 +1264,15 @@ void DisplayInitDriver(void)
|
|||||||
void DisplaySetPower(void)
|
void DisplaySetPower(void)
|
||||||
{
|
{
|
||||||
disp_power = bitRead(XdrvMailbox.index, disp_device -1);
|
disp_power = bitRead(XdrvMailbox.index, disp_device -1);
|
||||||
|
|
||||||
|
AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DSP: Power %d"), disp_power);
|
||||||
|
|
||||||
if (Settings.display_model) {
|
if (Settings.display_model) {
|
||||||
if (!renderer) XdspCall(FUNC_DISPLAY_POWER);
|
if (!renderer) {
|
||||||
else renderer->DisplayOnff(disp_power);
|
XdspCall(FUNC_DISPLAY_POWER);
|
||||||
|
} else {
|
||||||
|
renderer->DisplayOnff(disp_power);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1466,12 +1475,10 @@ void CmndDisplayRows(void)
|
|||||||
ResponseCmndNumber(Settings.display_rows);
|
ResponseCmndNumber(Settings.display_rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* optional drivers
|
* optional drivers
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#if defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT)
|
#if defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT)
|
||||||
void Draw_RGB_Bitmap(char *file,uint16_t xp, uint16_t yp) {
|
void Draw_RGB_Bitmap(char *file,uint16_t xp, uint16_t yp) {
|
||||||
if (!renderer) return;
|
if (!renderer) return;
|
||||||
@ -1957,7 +1964,6 @@ bool Xdrv13(uint8_t function)
|
|||||||
case FUNC_SET_POWER:
|
case FUNC_SET_POWER:
|
||||||
DisplaySetPower();
|
DisplaySetPower();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FUNC_EVERY_SECOND:
|
case FUNC_EVERY_SECOND:
|
||||||
#ifdef USE_GRAPH
|
#ifdef USE_GRAPH
|
||||||
DisplayCheckGraph();
|
DisplayCheckGraph();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
xdsp_02_SSD1306.ino - Display Oled SSD1306 support for Sonoff-Tasmota
|
xdsp_02_ssd1306.ino - Display Oled SSD1306 support for Sonoff-Tasmota
|
||||||
|
|
||||||
Copyright (C) 2019 Theo Arends and Adafruit
|
Copyright (C) 2019 Theo Arends and Adafruit
|
||||||
|
|
||||||
@ -21,14 +21,12 @@
|
|||||||
#ifdef USE_DISPLAY
|
#ifdef USE_DISPLAY
|
||||||
#ifdef USE_DISPLAY_SSD1306
|
#ifdef USE_DISPLAY_SSD1306
|
||||||
|
|
||||||
|
#define XDSP_02 2
|
||||||
|
|
||||||
#define OLED_RESET 4
|
#define OLED_RESET 4
|
||||||
|
|
||||||
#define SPRINT(A) char str[32];sprintf(str,"val: %d ",A);Serial.println((char*)str);
|
#define SPRINT(A) char str[32];sprintf(str,"val: %d ",A);Serial.println((char*)str);
|
||||||
|
|
||||||
extern uint8_t *buffer;
|
|
||||||
|
|
||||||
#define XDSP_02 2
|
|
||||||
|
|
||||||
#define OLED_ADDRESS1 0x3C // Oled 128x32 I2C address
|
#define OLED_ADDRESS1 0x3C // Oled 128x32 I2C address
|
||||||
#define OLED_ADDRESS2 0x3D // Oled 128x64 I2C address
|
#define OLED_ADDRESS2 0x3D // Oled 128x64 I2C address
|
||||||
|
|
||||||
@ -44,8 +42,9 @@ extern uint8_t *buffer;
|
|||||||
|
|
||||||
Adafruit_SSD1306 *oled1306;
|
Adafruit_SSD1306 *oled1306;
|
||||||
|
|
||||||
/*********************************************************************************************/
|
extern uint8_t *buffer;
|
||||||
|
|
||||||
|
/*********************************************************************************************/
|
||||||
|
|
||||||
void SSD1306InitDriver()
|
void SSD1306InitDriver()
|
||||||
{
|
{
|
||||||
@ -75,16 +74,16 @@ void SSD1306InitDriver()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// allocate screen buffer
|
// allocate screen buffer
|
||||||
if (buffer) free(buffer);
|
if (buffer) { free(buffer); }
|
||||||
buffer=(unsigned char*)calloc((Settings.display_width * Settings.display_height) / 8,1);
|
buffer = (unsigned char*)calloc((Settings.display_width * Settings.display_height) / 8,1);
|
||||||
if (!buffer) return;
|
if (!buffer) { return; }
|
||||||
|
|
||||||
// init renderer
|
// init renderer
|
||||||
//oled1306 = new Adafruit_SSD1306(SSD1306_LCDWIDTH,SSD1306_LCDHEIGHT);
|
// oled1306 = new Adafruit_SSD1306(SSD1306_LCDWIDTH,SSD1306_LCDHEIGHT);
|
||||||
oled1306 = new Adafruit_SSD1306(Settings.display_width, Settings.display_height, &Wire, reset_pin);
|
oled1306 = new Adafruit_SSD1306(Settings.display_width, Settings.display_height, &Wire, reset_pin);
|
||||||
oled1306->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0],0);
|
oled1306->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0], 0);
|
||||||
renderer=oled1306;
|
renderer = oled1306;
|
||||||
renderer->DisplayInit(DISPLAY_INIT_MODE,Settings.display_size,Settings.display_rotate,Settings.display_font);
|
renderer->DisplayInit(DISPLAY_INIT_MODE, Settings.display_size, Settings.display_rotate, Settings.display_font);
|
||||||
|
|
||||||
renderer->setTextColor(1,0);
|
renderer->setTextColor(1,0);
|
||||||
|
|
||||||
@ -100,7 +99,6 @@ void SSD1306InitDriver()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************************************/
|
/*********************************************************************************************/
|
||||||
#ifdef USE_DISPLAY_MODES1TO5
|
#ifdef USE_DISPLAY_MODES1TO5
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user