Bonjour a tous,
J’ai rencontré un problème d’affichage d’une image sur un écran avec mon pico.
J’ai un écran 320x170 et je souhaite afficher une image. Tout d’abord, j’ai eu une erreur car Pico n’a pas suffisamment de mémoire flash pour afficher toute l’images d’un coup.
Je découpe donc mon image en 2 images, et souhaite les afficher l’une après l’autre. Mais je suis confronté au même problème.
Je pensais que le garbage collector nettoierait la mémoire après la première image mais non…
Comment dois-je proceder ?
import microcontroller
import board
import time
import terminalio
import displayio
import busio
import adafruit_imageload
from adafruit_display_text import label
import adafruit_st7789
import gc
gc.collect()
displayio.release_displays()
tft_cs = board.GP11
tft_dc = board.GP12
tft_res = board.GP13
spi_mosi = board.GP15
spi_clk = board.GP14
width = 320
height = 205
spi = busio.SPI(spi_clk,MOSI=spi_mosi)
display_bus = displayio.FourWire(
spi, baudrate=48000000,command=tft_dc, chip_select=tft_cs, reset= tft_res
)
display= adafruit_st7789.ST7789(display_bus,
width=width, height= height,
rowstart=0, colstart=0,rotation=270)
while True:
import adafruit_imageload
image, palette = adafruit_imageload.load(
"images/interface1.bmp")
tile_grid = displayio.TileGrid(image, pixel_shader=palette,x = 0, y = 35)
group = displayio.Group()
group.append(tile_grid)
display.root_group = group
gc.collect
image, palette = adafruit_imageload.load(
"images/interface2.bmp")
tile_grid2 = displayio.TileGrid(image, pixel_shader=palette,x = 0, y = 35)
group2 = displayio.Group()
group2.append(tile_grid2)
display.root_group = group2
# splash.append(bg_sprite)
# text_group = displayio.Group(scale=2, x=50, y=120)
# text = "Hello World!"
# text_area = label.Label(terminalio.FONT, text=text, color=0xFFFF00)
# text_group.append(text_area) # Subgroup for text scaling
# splash.append(text_group)
time.sleep(25000)
L’erreur :
Traceback (appels les plus récents en dernier) :
Fichier « », ligne 47, dans
Fichier « adafruit_imageload/init.py », ligne 74, dans load
Fichier « adafruit_imageload/bmp/init.py », ligne 81, dans load
Fichier « adafruit_imageload/bmp/truecolor.py », ligne 98, dans load
MemoryError: l’allocation de mémoire a échoué en allouant 55384 octets