Guten Morgen und vielen Dank.
Okay so macht das natürlich Sinn.
Erst male ich mal ein Bild in dem ich einfach ein Array mit schwarzen und weissen Pixel erstelle, zum Beispiel mit Streifen:
Ganz bewusst die 'for'-Schleifen untereinander geschrieben. Das war jetzt für mich der Test, dass das klappt.
Ich habe ein Smilie gemalt, weisser Hintergrund und schwarzes Gesicht in einer 20x20px Größe.
Code: Alles auswählen
from machine import Pin, SPI
import st7789
from time import sleep
import framebuf
ARRAY_SIZE = 20 * 20 * 2
SMILIE = [65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 35921, 52857, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 35921, 52857, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 32, 0, 32, 52857, 65535, 65535, 65535, 65535, 65535, 52857, 32, 0, 32, 52857, 65535, 65535, 65535, 65535, 65535, 35921, 0, 0, 0, 35921, 65535, 65535, 65535, 65535, 65535, 35921, 0, 0, 0, 35921, 65535, 65535, 65535, 65535, 65535, 52857, 32, 0, 32, 52857, 65535, 65535, 65535, 65535, 65535, 52857, 32, 0, 32, 52857, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 35921, 52857, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 35921, 52857, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 8452, 0, 8452, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 8452, 0, 8452, 65535, 65535, 65535, 65535, 65535, 8452, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 65535, 4258, 0, 0, 0, 8452, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 4226, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535]
def main():
spi = SPI(1, baudrate=30000000, polarity=0, phase=0)
display = st7789.ST7789(
spi, 135, 240,
reset=Pin(4, Pin.OUT),
cs= Pin(15, Pin.OUT),
dc=Pin(5, Pin.OUT)
)
display.init()
smilie = bytearray(ARRAY_SIZE)
index = 0
for pixel in SMILIE:
smilie[index] = pixel
smilie[index + 1] = pixel
index += 2
frame_buffer = framebuf.FrameBuffer(smilie, 20, 20 , framebuf.RGB565)
display.blit_buffer(frame_buffer, 20, 50, 20, 20)
if __name__ == '__main__':
main()
Jetzt habe ich aber echt auch lange gebraucht, bis ich drauf gekommen bin, das ich dass gleiche Pixel zwei mal hintereinander schreiben muss. Genau den Punkt habe ich auch noch nicht ganz verstanden, wieso reicht es nicht die Pixelfarbe einmal zu setzen? Ihr hattet ja geschrieben pro Pixel zwei Bits, deswegen ja die 20 * 20 * 2. Nur wieso und was da abläuft, das verstehe ich noch nicht ganz. Falls das aber zu tief geht, dann können wir es auch so belassen.