Skip to content

Incremental screen updates with Luma and SH1106? #386

Open
@zapta

Description

@zapta

Expected behaviour

If only a small area of the screen got changed, write only that area rather than the entire screen. E.g. find a writeable bounding box of the modified pixels and update just that portion onthe screen.

Actual behaviour

I wrote a small program that updates a numeric field on a SH1106 OLED and it works well (thanks). I did observed though that even ifI change only a small area of the screen, the entire screen is written on each update.

My question is, does Luma support incremental updates? And if not, please add it to your feature request list.

My drawing code:

i = 0
while True:
    with canvas(oled) as draw:
        print(f"Drawing {i}", flush=True)
        # draw.rectangle(oled.bounding_box, outline="white", fill="black")
        # draw.text((19, 15), f"Hello  I2C Adapter", fill="white")
        draw.text((47, 42), f"{i:05d}", fill="white")
    i += 1
    time.sleep(1.0)

Full program at https://github.com/zapta/i2c_adapter/blob/main/examples/oled_demo.py

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions