Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Zeichnen einfache geometrische Figuren auf dem TFT-Display mit Pi Pico W

Posted on 5. September 202229. April 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie du geometrische Figuren am Raspberry Pi Pico W auf einem TFT-Display zeichnen bzw. programmieren kannst.

Zeichnen einfache geometrische Figuren auf dem TFT-Display mit Pi Pico W
Zeichnen einfache geometrische Figuren auf dem TFT-Display mit Pi Pico W

In meinem letzten Beitrag Raspberry Pi Pico W mit TFT Display habe ich dir bereits gezeigt, wie du dieses TFT-Display an den Pi Pico anschließen und einen Text ausgeben kannst. Hier soll es nun darum gehen wie du Kreise, Rechtecke usw. zeichnen kannst.

  • Rückblick
    • Anschluss des TFT-Displays per SPI an den Raspberry Pi Pico W
  • Zeichnen von geometrischen Figuren
    • Linie
    • Kreise
    • gefüllter Kreis
    • Rechteck
    • Quadrate

Rückblick

Für diesen Beitrag verwende ich das Modul ILI9431 vom Git Hub Repository https://github.com/jeffmer/micropython-ili9341 dieses habe ich um einige Funktionen erweitert und als Fork, ebenso auf GitHub unter https://github.com/StefanDraeger/micropython-ili9341 veröffentlicht. Du kannst dir dieses recht einfach als ZIP-Datei herunterladen und auf dem Computer entpacken.

Label auf dem GitHub Repository
Label auf dem GitHub Repository

Wie du dieses Modul auf dem Pi Pico W einrichtest und Text anzeigen kannst, habe ich dir im YouTube Video Raspberry Pi Pico W – TFT-Display via SPI anschließen und programmieren gezeigt.

Anschluss des TFT-Displays per SPI an den Raspberry Pi Pico W

Das Display wird wie folgt am Pi Pico / Pi Pico W angeschlossen:

TFT-DisplayRaspberry Pi Pico / Pico W
GNDGND
VCCVBUS
SCKGP6
SDAGP7
RESGP14
RSGP15
CSGP16
LED_A3v3(OUT)
Anschluss eines TFT-Displays per SPI an den Raspberry Pi Pico / Pico W
Anschluss eines TFT Displays via SPI an den Raspberry Pi Pico
Anschluss eines TFT Displays via SPI an den Raspberry Pi Pico
Schaltung - RP2040 mit TFT Display
Schaltung – RP2040 mit TFT Display

Zeichnen von geometrischen Figuren

Mit dem hier verwendeten Modul können von Hause aus nicht direkt einfache geometrische Figuren gezeichnet werden. Das Modul bietet lediglich die Funktion zum Zeichnen eines Punktes, gefülltes Rechteck sowie eines Textes. Mit der Funktion zum Zeichnen eines Punktes / Pixels können wir uns jedoch die Funktionen für Kreise, Rechtecke etc. selber programmieren, was wir hier nun machen wollen.

Wenn du die erweiterte Version von meinem GitHub Repository verwendest, dann hast du die nachfolgenden Funktionen bereits enthalten!

Zeichnen von einfachen geometrischen Figuren am Raspberry Pi Pico W auf einem TFT-Display
Dieses Video auf YouTube ansehen.

Natürlich könnten wir auch ein Modul von Adafruit verwenden und hätten somit diese Funktionen onboard, aber das wäre ja zu einfach 🙂

Linie

Die Logik zum Zeichnen einer Linie habe ich mir aus dem Wiki Artikel Line drawing algorithm entnommen.

def draw_line(self, x0, y0, x1, y1, color):
        dx = x1 - x0
        dy = y1 - y0
        for x in range(x0, x1):
            y = y1 + dy * (x - x1) / dx
            self.pixel(int(x), int(y), color)

Kreise

Die Funktion, wie man einen Kreis zeichnet, habe ich mir vom Blog „Hello Raspberry Pi“ kopiert.

    def draw_circle(xpos0, ypos0, rad, color):
        x = rad - 1
        y = 0
        dx = 1
        dy = 1
        err = dx - (rad << 1)
        while x >= y:
            display.pixel(xpos0 + x, ypos0 + y, color)
            display.pixel(xpos0 + y, ypos0 + x, color)
            display.pixel(xpos0 - y, ypos0 + x, color)
            display.pixel(xpos0 - x, ypos0 + y, color)
            display.pixel(xpos0 - x, ypos0 - y, color)
            display.pixel(xpos0 - y, ypos0 - x, color)
            display.pixel(xpos0 + y, ypos0 - x, color)
            display.pixel(xpos0 + x, ypos0 - y, color)
            if err <= 0:
                y += 1
                err += dy
                dy += 2
            if err > 0:
                x -= 1
                dx += 2
                err += dx - (rad << 1)

gefüllter Kreis

Für den gefüllten Kreis verwende ich die Funktion zum Zeichnen eines Kreises, jedoch wird dieser Kreis immer kleiner.

def draw_filled_circle(x, y, rad, color):
        for r in range(rad,0,-1):
            self.draw_circle(x, y, r, color)

Rechteck

Ein Rechteck hat eine unterschiedliche Höhe und Breite, daher müssen wir zwei Schleifen erzeugen, welche die Linien für die Höhe und die Breite zeichnen.

def draw_rectangle(x, y, width, height, color):
        for w in range(0, width):
            self.pixel(x+w, y, color)
            self.pixel(x+w, y+height, color)
        for h in range(0,height):
            self.pixel(x, y+h, color)
            self.pixel(x+width, y+h, color)

Quadrate

Ein Quadrat hat denselben Wert für Höhe & Breite, somit können wir mit der Funktion pixel aus dem Modul ili9341 an der Position X & Y in einer Farbe ein Pixel zeichnen.

		def draw_square(x, y, width, color):
			for w in range(0,width):
				display.pixel(x+w,y,color)
				display.pixel(x,y+w,color)
				display.pixel(x+width,y+w,color)
				display.pixel(x+w,y+width,color)

Zuvor habe ich dir die Funktion gezeigt, wie du ein Rechteck zeichnest, ich hätte auch einfach einen Funktionsaufruf auf die Funktion „draw_rectangle“ erzeugen und dann denselben Wert für Höhe & Breite übergeben können, jedoch würde dieses bedeuten, dass zwei Schleifen ausgeführt werden, und somit ist man minimal performanter beim Zeichnen.

def draw_rectangle(x, y, width, height, color):
    for w in range(0, width):
        display.pixel(x+w, y, color)
        display.pixel(x+w, y+height, color)
    for h in range(0,height):
        display.pixel(x, y+h, color)
        display.pixel(x+width, y+h, color)

def draw_square(x, y,width, color):
	draw_rectangle(x, y, width, width, color)

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}