Skip to content

Fix partial RAM updates #16

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

Merged
merged 2 commits into from
May 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions adafruit_ssd1675.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,5 @@ def __init__(self, bus: displayio.FourWire, **kwargs) -> None:
write_black_ram_command=0x24,
refresh_display_command=0x20,
refresh_time=2.2,
address_little_endian=True
)
84 changes: 84 additions & 0 deletions examples/ssd1675_four_corners.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
# SPDX-FileCopyrightText: Copyright (c) 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense

"""Test partial updates by moving a simple label around each of the four corners."""

# The top left is 0 or 4, top right is 1 or 5, bottom left is 2 or 6 and bottom
# right is 3 or 7. (It does % 8 for the label and % 4 for position.)
# pylint: disable=no-member

import time
import board
import busio
import displayio
import terminalio
import adafruit_ssd1675

displayio.release_displays()

# This pinout works on a Feather RP2040 EPD and may need to be altered for other
# boards. The older SSD1675 version with HINK on the ribbon cable 2.13" dual color
# is connected directly via the ribbon cable.
spi = busio.SPI(board.EPD_SCK, board.EPD_MOSI) # Uses SCK and MOSI
epd_cs = board.EPD_CS
epd_dc = board.EPD_DC
epd_reset = board.EPD_RESET
epd_busy = board.EPD_BUSY

display_bus = displayio.FourWire(
spi, command=epd_dc, chip_select=epd_cs, reset=epd_reset, baudrate=1000000
)
display = adafruit_ssd1675.SSD1675(
display_bus,
width=250,
height=122,
busy_pin=epd_busy,
rotation=270,
seconds_per_frame=10,
)

# Make the display context
main_group = displayio.Group()
display.show(main_group)

palette = displayio.Palette(2)
palette[0] = 0x000000
palette[1] = 0xFFFFFF

zero_glyph = terminalio.FONT.get_glyph(ord("0"))

padding = max(zero_glyph.height, zero_glyph.width) + 1
label = displayio.TileGrid(
terminalio.FONT.bitmap,
pixel_shader=palette,
tile_width=zero_glyph.width,
tile_height=zero_glyph.height,
)
main_group.append(label)

# Number each of the 4 corners
i = 0
while True:
if i % 2 == 0:
label.x = padding
else:
label.x = display.width - padding - zero_glyph.width
if (i % 4) // 2 == 0:
label.y = padding
else:
label.y = display.height - padding - zero_glyph.height

label[0] = zero_glyph.tile_index + i

# update text property to change the text showing on the display
sleep_time = display.time_to_refresh
print(f"Sleeping {sleep_time} seconds")
time.sleep(sleep_time)

print(f"{i % 8} @ ({label.x}, {label.y})")
display.refresh()

i += 1
i %= 8