1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-13 22:28:14 +00:00

added brightness for oled display ssd1306

This commit is contained in:
waiet 2019-08-03 10:36:46 +02:00
parent 11e88019c2
commit aeec3eb1d3
4 changed files with 13 additions and 8 deletions

View File

@ -2,7 +2,7 @@ import esphome.codegen as cg
import esphome.config_validation as cv
from esphome import pins
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
ssd1306_base_ns = cg.esphome_ns.namespace('ssd1306_base')
@ -25,6 +25,7 @@ SSD1306_MODEL = cv.enum(MODELS, upper=True, space="_")
SSD1306_SCHEMA = display.FULL_DISPLAY_SCHEMA.extend({
cv.Required(CONF_MODEL): SSD1306_MODEL,
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,
}).extend(cv.polling_component_schema('1s'))
@ -38,6 +39,8 @@ def setup_ssd1036(var, config):
if CONF_RESET_PIN in config:
reset = yield cg.gpio_pin_expression(config[CONF_RESET_PIN])
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:
cg.add(var.set_external_vcc(config[CONF_EXTERNAL_VCC]))
if CONF_LAMBDA in config:

View File

@ -79,11 +79,8 @@ void SSD1306::setup() {
case SH1106_MODEL_128_64:
case SSD1306_MODEL_64_48:
case SH1106_MODEL_64_48:
if (this->external_vcc_)
this->command(0x9F);
else
this->command(0xCF);
break;
this->command(int(255 * (this->brightness_)));
break;
case SSD1306_MODEL_96_16:
case SH1106_MODEL_96_16:
if (this->external_vcc_)
@ -100,7 +97,7 @@ void SSD1306::setup() {
this->command(0xF1);
this->command(SSD1306_COMMAND_SET_VCOM_DETECT);
this->command(0x40);
this->command(0x00);
this->command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME);
this->command(SSD1306_NORMAL_DISPLAY);

View File

@ -29,6 +29,8 @@ class SSD1306 : public PollingComponent, public display::DisplayBuffer {
void set_model(SSD1306Model model) { this->model_ = model; }
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_brightness_(float brightness) { this->brightness_ = brightness; }
// void set_brightness_(optional<float> brightness) { this->brightness_ = brightness; }
float get_setup_priority() const override { return setup_priority::PROCESSOR; }
void fill(int color) override;
@ -50,6 +52,8 @@ class SSD1306 : public PollingComponent, public display::DisplayBuffer {
SSD1306Model model_{SSD1306_MODEL_128_64};
GPIOPin *reset_pin_{nullptr};
bool external_vcc_{false};
float brightness_{1.0};
};
} // namespace ssd1306_base

View File

@ -1215,10 +1215,11 @@ display:
it.set_component_value("gauge", 50);
it.set_component_text("textview", "Hello World!");
- platform: ssd1306_i2c
model: "SSD1306 128x64"
model: "SSD1306_128X64"
reset_pin: GPIO23
address: 0x3C
id: display1
brightness: 60%
pages:
- id: page1
lambda: |-