Display - PicoBoy Color


technische Daten wie beim RPi Pico
MC RP2040 - 1,69 Zoll Farbdisplay mit 240 x 280 Pixeln

Projekte und Anleitung in CircuitPython 9.x.x



Bildbox 1 (klick hier)

Als Erstes nehme ich das Display im Querformat (d.h. Breite 280, Höhe 240 Pixel) in Betrieb.

Los gehts

Display:
Das 1,69 Zoll Farbdisplay mit 240 x 280 Pixeln bei einer Farbtiefe von 16 Bit arbeitet mit einem ST7789 Treiber. Folgende GPIO's werden genutzt:

DC - GPIO 8
Reset - GPIO 9
CS - GPIO 10
SCK - GPIO 18
MOSI - GPIO 19
Backlight - GPIO 26

In CircuitPython kann dann das Display so initialisiert werden:

Zunächst installieren Sie die aktuelle Firmware von 'CircuitPython' auf dem PicoBoy. Für Anfänger gibt es hier eine Anleitung dazu (ab Los gehts).

Außerdem downloaden Sie das adafruit-libraries-bundle (passend zur Firmware-Version! z.Z. 9.x.x) und entpacken es auf Ihrem Rechner. Aus dem Ordner 'lib' kopieren Sie 'adafruit_display_text ' und den Treiber 'adafruit_st7789_mpy' (ziemlich weit unten) in den 'lib-Ordner' auf dem PicoBoy Board.

Das müssen Sie nur beim ersten Mal tun und später ggf. nur neu hinzukommende Treiber ergänzen. Im Programm unten sehen Sie, dass die Bibliotheken in den Zeilen 5 und 6 importiert werden. Sie können den Quellcode aus dem unteren Kasten jetzt in die Thonny IDE kopieren, speichern und starten. Wenn alles passt, 'sagt' das Display "it works".

  
  

1  import board
2  import busio
3  import displayio
4  import terminalio
5  from adafruit_st7789 import ST7789
6  from adafruit_display_text import label
7
8  # 1,69 Zoll 240x280 Pixel ST7789 Display
9  dc=board.GP8
10 reset=board.GP9
11 cs=board.GP10
12 sck=board.GP18
13 mosi=board.GP19
14 bl=board.GP26
15 # Release any resources currently in use for the displays
16 displayio.release_displays()
17 spi = busio.SPI(sck, mosi)
18 display_bus = displayio.FourWire(spi, command=dc, chip_select=cs, reset=reset)
19 display = ST7789(display_bus, rotation=270, width=280, height=240, backlight_pin=bl, rowstart=20, colstart=0)
20 display.brightness = 1
21 # set the Group class root
22 root = displayio.Group()
23
24 ## Draw a label
25 updating_label1 = label.Label(font=terminalio.FONT, scale=3, color=0xffff00, line_spacing=1)
26 updating_label1.anchor_point = (0, 0)
27 updating_label1.anchored_position = (45, 100)
28 updating_label1.text ="it works"
29 # append the label to the Group class
30 root.append(updating_label1)
31
32 # Switches to displaying the given group of layers
33 display.root_group = root
  

Sie sehen in Zeile 19 im Beispiel, dass 'rotation= 270, width=280, height=240' steht, wobei rotation = xx für die Drehung sorgt. Es ist immer in 90-Grad Schritten wirksam. Bei Hochformat wäre z.B. 'rotation=0, width=240, height=280' einzutragen.
Zeile 20 steuert mit display.brightness = 1 die Helligkeit der Hintergrundbeleuchtung. Hier können die Werte zwischen 0 und 1 liegen. Das kann z.B. für Tag- und Nachtbeleuchtung oder zum 'Stromsparen' genutzt werden.

Viel Spass und Erfolg beim Ausprobieren.