Guten Morgen und vielen Dank.
Okay mit folgendem Code setze ich ein Rechteck mit der Größe von 100 x 170 Pixel in die Mitte des Displays. Und weil jedes Pixel eine Größe von 2 Bytes hat, wird das Bytearray dementsprechend mit zwei multipliziert:
Code: Alles auswählen
from machine import Pin, SPI
import st7789
from time import sleep
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()
display.fill(st7789.WHITE)
display.blit_buffer(bytearray(100 * 170 * 2), 17, 35, 100, 170)
while True:
sleep(1)
if __name__ == '__main__':
main()
Das müsste ich so weit begriffen haben. Diese Größe ist auch ungefähr die Grenze, bevor der ESP mit Speicherproblemen aussteigt.
Was it Pixeln und Koordinaten aufmalen?
Dennis89 hat geschrieben: ↑Dienstag 6. September 2022, 21:12
P.S. wir hatten ja vor längerer Zeit schon mal ein ähnliches Problem, da haben wir 'uarray' genutzt. Aber da hatte ich eine Bibliothek die Texte auf ein Display schreiben konnte, da ging es nur um das buffern, damit eine reibungslose Anzeige möglich war. Ich glaube dass ist hier nicht die Lösung.
Ich hatte mir den Code natürlich schon angesehen bevor ich hier mit fragen begonnen habe. Ich konnte daraus aber für das jetzige Problem keine Lösung ableiten. Wir haben dort eine Art Tacho aufgemalt. Erst ein Array mit der Größe des Tachos erstellt, jedes Pixel schwarz gesetzt und dann die einzelnen Pixel wieder farbig, bis wir einen Tacho hatten.
*Dieser Post entstand schon um 6.45Uhr und dann hat es klick gemacht und zwar so laut, das sollte man bis zu dir gehört haben*
Ich erstelle ein Quadrat und lasse es Pixel für Pixel wieder verschwinden:
Code: Alles auswählen
from machine import Pin, SPI
import st7789
from time import sleep
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()
display.fill(st7789.WHITE)
byte_array = bytearray(8 * 8 * 2)
display.blit_buffer(byte_array, 37, 80, 8, 8)
sleep(1)
for byte in range(128):
byte_array[byte] = st7789.WHITE
display.blit_buffer(byte_array, 37, 80, 8, 8)
sleep(0.1)
if __name__ == '__main__':
main()
Das müsste doch jetzt ein kleines Erfolgserlebnis für mein Ziel sein?
Grüße
Dennis