mirror of
https://github.com/esphome/esphome.git
synced 2025-01-03 11:21:43 +01:00
Brightness ssd1306 (#723)
* added brightness for oled display ssd1306 * lint Co-authored-by: waiet <vlado.rusnak23@gmail.com>
This commit is contained in:
parent
81b7653c9c
commit
428684bc1e
4 changed files with 11 additions and 7 deletions
|
@ -2,7 +2,8 @@ import esphome.codegen as cg
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome import pins
|
from esphome import pins
|
||||||
from esphome.components import display
|
from esphome.components import display
|
||||||
from esphome.const import CONF_EXTERNAL_VCC, CONF_LAMBDA, CONF_MODEL, CONF_RESET_PIN
|
from esphome.const import CONF_EXTERNAL_VCC, CONF_LAMBDA, CONF_MODEL, CONF_RESET_PIN, \
|
||||||
|
CONF_BRIGHTNESS
|
||||||
from esphome.core import coroutine
|
from esphome.core import coroutine
|
||||||
|
|
||||||
ssd1306_base_ns = cg.esphome_ns.namespace('ssd1306_base')
|
ssd1306_base_ns = cg.esphome_ns.namespace('ssd1306_base')
|
||||||
|
@ -25,6 +26,7 @@ SSD1306_MODEL = cv.enum(MODELS, upper=True, space="_")
|
||||||
SSD1306_SCHEMA = display.FULL_DISPLAY_SCHEMA.extend({
|
SSD1306_SCHEMA = display.FULL_DISPLAY_SCHEMA.extend({
|
||||||
cv.Required(CONF_MODEL): SSD1306_MODEL,
|
cv.Required(CONF_MODEL): SSD1306_MODEL,
|
||||||
cv.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema,
|
cv.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema,
|
||||||
|
cv.Optional(CONF_BRIGHTNESS, default=1.0): cv.percentage,
|
||||||
cv.Optional(CONF_EXTERNAL_VCC): cv.boolean,
|
cv.Optional(CONF_EXTERNAL_VCC): cv.boolean,
|
||||||
}).extend(cv.polling_component_schema('1s'))
|
}).extend(cv.polling_component_schema('1s'))
|
||||||
|
|
||||||
|
@ -38,6 +40,8 @@ def setup_ssd1036(var, config):
|
||||||
if CONF_RESET_PIN in config:
|
if CONF_RESET_PIN in config:
|
||||||
reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN])
|
reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN])
|
||||||
cg.add(var.set_reset_pin(reset))
|
cg.add(var.set_reset_pin(reset))
|
||||||
|
if CONF_BRIGHTNESS in config:
|
||||||
|
cg.add(var.set_brightness(config[CONF_BRIGHTNESS]))
|
||||||
if CONF_EXTERNAL_VCC in config:
|
if CONF_EXTERNAL_VCC in config:
|
||||||
cg.add(var.set_external_vcc(config[CONF_EXTERNAL_VCC]))
|
cg.add(var.set_external_vcc(config[CONF_EXTERNAL_VCC]))
|
||||||
if CONF_LAMBDA in config:
|
if CONF_LAMBDA in config:
|
||||||
|
|
|
@ -79,10 +79,7 @@ void SSD1306::setup() {
|
||||||
case SH1106_MODEL_128_64:
|
case SH1106_MODEL_128_64:
|
||||||
case SSD1306_MODEL_64_48:
|
case SSD1306_MODEL_64_48:
|
||||||
case SH1106_MODEL_64_48:
|
case SH1106_MODEL_64_48:
|
||||||
if (this->external_vcc_)
|
this->command(int(255 * (this->brightness_)));
|
||||||
this->command(0x9F);
|
|
||||||
else
|
|
||||||
this->command(0xCF);
|
|
||||||
break;
|
break;
|
||||||
case SSD1306_MODEL_96_16:
|
case SSD1306_MODEL_96_16:
|
||||||
case SH1106_MODEL_96_16:
|
case SH1106_MODEL_96_16:
|
||||||
|
@ -100,7 +97,7 @@ void SSD1306::setup() {
|
||||||
this->command(0xF1);
|
this->command(0xF1);
|
||||||
|
|
||||||
this->command(SSD1306_COMMAND_SET_VCOM_DETECT);
|
this->command(SSD1306_COMMAND_SET_VCOM_DETECT);
|
||||||
this->command(0x40);
|
this->command(0x00);
|
||||||
|
|
||||||
this->command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME);
|
this->command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME);
|
||||||
this->command(SSD1306_NORMAL_DISPLAY);
|
this->command(SSD1306_NORMAL_DISPLAY);
|
||||||
|
|
|
@ -29,6 +29,7 @@ class SSD1306 : public PollingComponent, public display::DisplayBuffer {
|
||||||
void set_model(SSD1306Model model) { this->model_ = model; }
|
void set_model(SSD1306Model model) { this->model_ = model; }
|
||||||
void set_reset_pin(GPIOPin *reset_pin) { this->reset_pin_ = reset_pin; }
|
void set_reset_pin(GPIOPin *reset_pin) { this->reset_pin_ = reset_pin; }
|
||||||
void set_external_vcc(bool external_vcc) { this->external_vcc_ = external_vcc; }
|
void set_external_vcc(bool external_vcc) { this->external_vcc_ = external_vcc; }
|
||||||
|
void set_brightness(float brightness) { this->brightness_ = brightness; }
|
||||||
|
|
||||||
float get_setup_priority() const override { return setup_priority::PROCESSOR; }
|
float get_setup_priority() const override { return setup_priority::PROCESSOR; }
|
||||||
void fill(int color) override;
|
void fill(int color) override;
|
||||||
|
@ -50,6 +51,7 @@ class SSD1306 : public PollingComponent, public display::DisplayBuffer {
|
||||||
SSD1306Model model_{SSD1306_MODEL_128_64};
|
SSD1306Model model_{SSD1306_MODEL_128_64};
|
||||||
GPIOPin *reset_pin_{nullptr};
|
GPIOPin *reset_pin_{nullptr};
|
||||||
bool external_vcc_{false};
|
bool external_vcc_{false};
|
||||||
|
float brightness_{1.0};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ssd1306_base
|
} // namespace ssd1306_base
|
||||||
|
|
|
@ -1298,10 +1298,11 @@ display:
|
||||||
it.set_component_value("gauge", 50);
|
it.set_component_value("gauge", 50);
|
||||||
it.set_component_text("textview", "Hello World!");
|
it.set_component_text("textview", "Hello World!");
|
||||||
- platform: ssd1306_i2c
|
- platform: ssd1306_i2c
|
||||||
model: "SSD1306 128x64"
|
model: "SSD1306_128X64"
|
||||||
reset_pin: GPIO23
|
reset_pin: GPIO23
|
||||||
address: 0x3C
|
address: 0x3C
|
||||||
id: display1
|
id: display1
|
||||||
|
brightness: 60%
|
||||||
pages:
|
pages:
|
||||||
- id: page1
|
- id: page1
|
||||||
lambda: |-
|
lambda: |-
|
||||||
|
|
Loading…
Reference in a new issue