Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incremental screen updates with Luma and SH1106? #386

Open
zapta opened this issue Dec 30, 2023 · 1 comment
Open

Incremental screen updates with Luma and SH1106? #386

zapta opened this issue Dec 30, 2023 · 1 comment
Labels

Comments

@zapta
Copy link

zapta commented Dec 30, 2023

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

@zapta zapta changed the title Incremental screen updates on SH1106? Incremental screen updates with Luma and SH1106? Dec 30, 2023
@zapta
Copy link
Author

zapta commented Dec 30, 2023

... I found the discussion below but it deals with the rendering side rather than the screen update (i2c in that case). From my experience, the I2C communication is the bottleneck of the screen refresh process with SH1106 in I2C mode.

https://stackoverflow.com/questions/64189757/add-element-to-oled-display-via-pil-python-without-erasing-rest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants