-
Notifications
You must be signed in to change notification settings - Fork 1.3k
displayio won't refresh (certain circumstances) on 3-Color il0373 EPD FeatherWing #2144
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
Comments
Reloading with a with open("/display-ruler.bmp", "rb") as bitmap_file:
g = displayio.Group(max_size=1)
odb = displayio.OnDiskBitmap(bitmap_file)
tg = displayio.TileGrid(odb, pixel_shader=displayio.ColorConverter())
g.append(tg)
try:
time.sleep(display.time_to_refresh + 1)
display.show(g)
display.refresh()
print("Ruler ", display.time_to_refresh)
except RuntimeError as e: # Refresh too soon
print("Ruler ", display.time_to_refresh, e) |
Hi @anecdata, could you retest on 5.0.0-alpha.4? Thanks! |
Appears to have the same quirky behavior on 5.0.0-alpha.4 on 2019-09-15 with CP Lib Bundle 20191029. |
I think this is fixed by adafruit/Adafruit_CircuitPython_SSD1675#16 |
This 3-color issue is with adafruit_il0373. The 2-color adafruit_ssd1675 was for comparison. But maybe the fix is the same? |
Ah, I didn't look close enough. I don't think the IL0373 is little endian. It is worth testing again though. |
Environment:
Adafruit Feather M4 Express with samd51j19
5.0.0-alpha.2 on 2019-09-04
CP Lib Bundle 20190907
The code below attempts to implement the Sprite Sheet example from:
https://learn.adafruit.com/circuitpython-display-support-using-displayio/sprite-sheet
...by adapting it to the timing requirements of EPD displays (e.g., time.sleep(display.time_to_refresh))
This code works on the 2-color EPD FeatherWing (switch the True/False on the board flags below).
Can't completely characterize the failure and recovery modes here, but if your 3-coolor EPD is like mine... if you load this code onto the 3-color EPD (might need t power-cycle too), it will never refresh. Seems related to the
imageload
- some kind of init-deinit issue? The code runs, loops, and prints fine, just no refreshes.You'll see two commented out blocks in the code. One tries to show/refresh to None (terminal). The other uses a solid red bitmap instead of the imageload. The only surefire way I've found to unfreeze the refreshes once it happens is to comment out the imageload, uncomment the red bitmap, and usually power-cycle).
I know this is convoluted. Hopefully it's reproducible by others, and maybe someone has some insights.
Interestingly perhaps, once the refresh is kicked back on, uncommenting the imageload code and commenting out the red bitmap, with a simple save or reload, will then allow the imageload sprites to refresh properly.
You can shorten the iterations from 180 seconds by adding the seconds_per_frame KW arg when you create the display.
This issue was moved from adafruit/Adafruit_CircuitPython_SSD1675#2 (which has been closed).
The text was updated successfully, but these errors were encountered: