1.8” TFT SPI Display (ST7735)
Farbiges 128x160-Pixel-TFT-Display mit ST7735-Treiberchip, angesteuert per SPI (5 Signalleitungen: SCK, SDA/MOSI, A0/DC, RESET, CS).
Stand (16.09.2026): Treiber st7735.py ist eine eigene Portierung
(siehe unten) - noch nicht auf echter Hardware getestet. Vor dem Einsatz
mit farbflaechen pruefen, ob Bild/Farben stimmen.
Anschluesse am Modul
| Pin (Beschriftung auf dem Modul) | Bedeutung |
|---|---|
SCK (auch SCL) |
SPI-Takt |
SDA (auch MOSI, DIN) |
Daten zum Display |
A0 (auch DC, RS) |
Data/Command-Umschaltung |
RESET (auch RST) |
Reset, aktiv Low |
CS |
Chip-Select, aktiv Low |
LED (auch BL, BLK) |
Backlight - bei den meisten Modulen reicht dauerhaft an 3V |
VCC |
Plus - am eigenen Modul pruefen, manche billigen Module wollen 5V |
GND |
Masse |
Wie beim TM1637: Beschriftung auf dem Modul massgeblich, nicht die Position der Pins.
Anschluss an den micro:bit
micro:bit ST7735-Modul
+---------+ +------------+
| 13 |--------| SCK | Hardware-SPI-Takt (fix)
| 15 |--------| SDA / MOSI | Hardware-SPI-Daten (fix)
| 12 |--------| A0 / DC |
| 16 |--------| RESET |
| 8 |--------| CS |
| 3V |--------| LED |
| 3V |--------| VCC |
| GND |--------| GND |
+---------+ +------------+
P13/P15sind die festen Hardware-SPI-Pins des micro:bit (microbit.spi) - hier nicht frei waehlbar wie bei den bit-gebangten Protokollen (TM1637, WS2812B).MISO(P14) bleibt unbenutzt, die meisten Module liefern sowieso keine Daten zurueck.A0/DC,RESET,CSsind frei waehlbar; P8/P12/P16 sind nur ein Vorschlag, inmain.pyanpassbar.- Faellt das Bild aus/bleibt weiss: zuerst
RESETundCSpruefen, danachA0/DC(vertauschtes Data/Command fuehrt zu Datenmuell auf dem Screen).
Was SPI von einem bit-gebangten Protokoll wie TM1637 unterscheidet (einfach erklaert): Theorie: SPI.
Bibliothek: eigene Portierung st7735.py
Fuer den ST7735 gibt es keine fertige micro:bit-native Bibliothek wie
mcauser/microbit-tm1637 fuers TM1637 - alle verbreiteten MicroPython-Treiber
sind auf machine.SPI/machine.Pin zugeschnitten, die es auf dem micro:bit
nicht gibt. st7735.py ist deshalb eine eigene, schlanke Portierung der
Init-Sequenz und Pixel-Logik aus
adafruit/micropython-adafruit-rgb-display
(MIT-Lizenz, Radomir Dopieralski) auf microbit.spi + write_digital().
Bewusst kein Framebuffer: ein volles 128x160-Bild waere 40 KB (2 Byte je
Pixel) - zu viel RAM fuer den micro:bit. Stattdessen schreibt fill_rect()
die Pixel blockweise direkt per SPI, ohne den Bildschirminhalt im RAM zu
halten.
from microbit import pin8, pin12, pin16
from st7735 import ST7735, color565, BLACK, WHITE, RED, GREEN, BLUE
display = ST7735(cs=pin8, dc=pin12, rst=pin16) # Standard: 128x160, 4 MHz SPI
display.fill(RED) # ganzer Bildschirm - fuer haeufige Updates zu langsam
display.fill_rect(10, 10, 40, 40, GREEN) # nur ein Rechteck - das eigentliche Werkzeug
display.pixel(5, 5, WHITE)
farbe = color565(255, 140, 0) # eigene Farbe aus R/G/B (0-255) bauen
Performance: nicht bei jedem Update alles neu zeichnen
display.fill() beschreibt alle 20480 Pixel - fuer einen einmaligen
Bildschirmwechsel ok, aber spuerbar traege, wenn es in einer Schleife bei
jedem Update passiert (z. B. ein Zaehler, eine Uhr, ein Messwert). Die
Faustregel:
- Nur das Rechteck neu zeichnen, das sich tatsaechlich veraendert hat
(
fill_rect()auf die genaue Stelle, nichtfill()auf alles). - Bei mehreren unabhaengigen Elementen (z. B. 4 Ziffern) pruefen, welche sich seit dem letzten Mal veraendert haben, und nur die neu zeichnen - siehe zahlen-zaehler.
- Hardware-SPI ist bereits deutlich schneller als das bit-gebangte TM1637-Protokoll - der Flaschenhals ist fast immer die Pixel-Menge, nicht die Uebertragungsgeschwindigkeit selbst.
Samples (Lernreihenfolge)
- farbflaechen/ - Grundfunktion: Bildschirm einfaerben, Rechtecke zeichnen
- zahlen-zaehler/ - Knopf A/B zaehlen 0..9999 mit eigener Blockschrift, nur die veraenderten Ziffern werden neu gezeichnet
Masse fuers CAD: ../../../hardware/output/st7735-tft-1-8-spi/