#ill try that and get back to you
1 messages · Page 1 of 1 (latest)
a quick summary is:
import board, displayio
import adafruit_imageload
display = board.DISPLAY # or any `display` object
maingroup = displayio.Group() # everything goes in maingroup
display.root_group = maingroup # set the root group to display
# load PNG, or BMP w/ "my_image.bmp", must be palettized image
bitmap, palette = adafruit_imageload.load("my_image.png")
image = displayio.TileGrid(img, pixel_shader=palette) # oops had an extra ')'
maingroup.append(image) # shows the image
from https://github.com/todbot/circuitpython-tricks?tab=readme-ov-file#display-an-image
thanks, ill take a look
using that with what i presume is to define my display, i put it after all that, and got this
im getting an image with this example https://learn.adafruit.com/circuitpython-display-support-using-displayio/display-a-bitmap
though id like to see if i could implement the image slideshow part in this
the method on the github i couldnt get to work, but i can get it to display with OnDiskBitmap
oops I have a typo in my example. too many parens on line 116. Remove the last ')'
Displaying BMP images is tricky, as there are several formats. What do you mean exactly by "couldn't get it to work"
getting this after pluggin in the code
the image slideshow portion specifically
ahh
display was already put in there above. now its working, switching between the two, but very jittery
doing full screen updates is generally very slow. you may also be getting partial updates? so you may want to turn off auto_refresh on the display and do an explicit display.refresh() once the image has loaded
this?
it doesnt need to be super fast to update, just want it to not be jarring to look at
Yes. I've not used FramebufferDisplay before but it looks like it has the same API as other displayio displays
ok, so how do i tell it to refresh with display.refresh() between images?
it was this one instead i think
i think i figured it out, though its still jittery
im not sure to be honest 😅
that's equivalent. it's so you can choose to turn it on or off without recreating the display
call display.refresh() after you put the new image to the display (after screen[0] = ... in the code above)
ah that makes sense. still jittery after that though as well
maybe reducing the file size would help?
theyre 200-400kb between the two images
wow and that's working on a Pico with adafruit_imageload?
its a qualia ESP32-S3
ah okay so you have some RAM to spare
You are correct: usually reducing file size is one of the best routes to getting images to load better. Without seeing a video of what you mean by "jittery" I'm not sure what the issue could be
i can share one if it would be helpful
Yeah. I'd like to see what you're using, it sounds like a cool setup
the display is really nice, but i didnt know how over my head iw as when i got them lol. i appreciate your help so far
you can hopefully see that there is some tearing or something near the bottom of the image. pictures arent related to the project
Wow that looks awesome. The top-down redraw is standard CircuitPython full-screen redraw. The left-right glitchy tearing looks like a flaky connection, maybe a power problem, a small protocol problem in the lower levels of displayio, or maybe because of WiFI interrupting display output. Do you have WiFi turned on? (or have the CIRCUITPY_WIFI_* variables set in your settings.toml?)
no wifi stuff configured, nothing in the toml at the moment
But my best bet would be that the TFT timing values you have set are just a little off from what they need to be
ahh i see. any advice on how to adjust that? besides trial and error i guess
My small amount of playing with the Qualia board showed that to be the case (so I guess I have played with the framebuffer)
no clue, unfortunately. display setup is kinda black magic and I've mostly relied on existing configs
there is a mention about an issue that sounds similar to what you're experiencing here; https://learn.adafruit.com/adafruit-qualia-esp32-s3-for-rgb666-displays/circuitpython-display-setup#dot-clocks-3155195
in your TFT_TIMINGS, what do you have for "frequency" ?
16000000
Try changing that. I'd try 8_000_000 and 12_000_000
8000000 shows no jittering but flickering instead. 12000000 looks perfect actually
yay some success then!
theoretically, you could make a series of images into like a simple animation i imagine, though im not sure how to make it switch between them fast
but yes, finally progress......
thanks a lot, ill be back in a bit
I dont have anything further that i cant figure out for what i've been presented with for now. I have another screen for the board i will tackle in the future but i think this works for now