Skocz do zawartości

Problem z GPIO z wyświetlaczem tft 2.4" ST7789 z raspberry pi 5


Adamoss

Pomocna odpowiedź

Hej. Mam problem z moim raspberry pi 5 i wyświetlaczem tft 2.4 ST7789. Napisałem program w python, który robi server api z obrazem ekranu mojego pc i raspberry pi odbiera i wyświetla go na wyświetlaczu. (Na rpi zero działa). Przy próbie włączenia kodu mam błąd: 
 

(venv) adamoss@raspberrypi:~/Documents/ScreenCapDP $ python3 test2.py
Traceback (most recent call last):
  File "/home/adamoss/Documents/ScreenCapDP/test2.py", line 14, in <module>
    display_bus = displayio.FourWire(
                  ^^^^^^^^^^^^^^^^^^^
  File "/home/adamoss/Documents/ScreenCapDP/venv/lib/python3.11/site-packages/fourwire/__init__.py", line 62, in __init__
    self._dc = digitalio.DigitalInOut(command)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/adamoss/Documents/ScreenCapDP/venv/lib/python3.11/site-packages/digitalio.py", line 197, in __init__
    self.direction = Direction.INPUT
    ^^^^^^^^^^^^^^
  File "/home/adamoss/Documents/ScreenCapDP/venv/lib/python3.11/site-packages/digitalio.py", line 227, in direction
    self._pin.init(mode=Pin.IN)
  File "/home/adamoss/Documents/ScreenCapDP/venv/lib/python3.11/site-packages/adafruit_blinka/microcontroller/bcm283x/pin.py", line 40, in init
    GPIO.setup(self.id, GPIO.IN)
RuntimeError: Cannot determine SOC peripheral base address

 

Niby to jest coś z GPIO i nowym standardem gpioid.


cały kod:

 

import time
import requests
import board
import busio
import displayio
from adafruit_st7789 import ST7789
import io

displayio.release_displays()
spi = busio.SPI(clock=board.SCLK, MOSI=board.MOSI, MISO=board.MISO)
tft_cs = board.CE0
tft_dc = board.D24
tft_res = board.D25
display_bus = displayio.FourWire(
    spi, command=tft_dc, chip_select=tft_cs, reset=tft_res, baudrate=31250000
)
display = ST7789(display_bus, rotation=90, width=320, height=240)
splash = displayio.Group()

FRAME_TIME = 1 / 10
FLASK_API_URL = "http://192.168.1.108:5000/stream"

def fetch_image():
    try:
        response = requests.get(FLASK_API_URL, stream=True, timeout=5)
        if response.status_code == 200:
            return io.BytesIO(response.content)
        else:
            print(f"Failed to retrieve image: {response.status_code}")
            return None
    except requests.RequestException as e:
        print(f"Request error: {e}")
        return None

last_frame_time = time.time()
while True:
    current_time = time.time()
    if current_time - last_frame_time >= FRAME_TIME:
        byte_stream = fetch_image()
        if byte_stream:
            image = displayio.OnDiskBitmap(byte_stream)
            image_tilegrid = displayio.TileGrid(image, pixel_shader=image.pixel_shader)
            splash.append(image_tilegrid)
            display.root_group = splash
        last_frame_time = current_time

 

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.