From 8b720619f8f7c478f430b08dead8050490be23ce Mon Sep 17 00:00:00 2001 From: foamyguy Date: Tue, 18 Feb 2025 16:00:00 -0600 Subject: [PATCH] adding HSTX example for Metro RP2350 --- .../CircuitPython_HSTX_Display/code.py | 32 ++++++++++++++++++ .../display-ruler-rgb-720p.bmp | Bin 0 -> 921926 bytes 2 files changed, 32 insertions(+) create mode 100644 Metro_RP2350_Examples/CircuitPython_HSTX_Display/code.py create mode 100644 Metro_RP2350_Examples/CircuitPython_HSTX_Display/display-ruler-rgb-720p.bmp diff --git a/Metro_RP2350_Examples/CircuitPython_HSTX_Display/code.py b/Metro_RP2350_Examples/CircuitPython_HSTX_Display/code.py new file mode 100644 index 000000000..7893647ff --- /dev/null +++ b/Metro_RP2350_Examples/CircuitPython_HSTX_Display/code.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: 2024 Scott Shawcroft for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import board +import picodvi +import framebufferio +import displayio + +displayio.release_displays() + +fb = picodvi.Framebuffer(320, 240, clk_dp=board.CKP, clk_dn=board.CKN, + red_dp=board.D0P, red_dn=board.D0N, + green_dp=board.D1P, green_dn=board.D1N, + blue_dp=board.D2P, blue_dn=board.D2N, + color_depth=16) +display = framebufferio.FramebufferDisplay(fb) + +# Initialize the display in the display variable +ruler = displayio.OnDiskBitmap("/display-ruler-rgb-720p.bmp") + +t = displayio.TileGrid(ruler, pixel_shader=ruler.pixel_shader) + +g = displayio.Group() +g.append(t) + +display.root_group = g + +display.refresh() + +while True: + pass diff --git a/Metro_RP2350_Examples/CircuitPython_HSTX_Display/display-ruler-rgb-720p.bmp b/Metro_RP2350_Examples/CircuitPython_HSTX_Display/display-ruler-rgb-720p.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f73b1c3c26e5530aa8af9eabb4411826e6d78615 GIT binary patch literal 921926 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