Wenn du das Display-Shield auf den Uno aufsteckst, stimmt das Pin-Mapping nicht so ganz mit den Vorgaben überein (z.B. ist TFT_DC auf 7 statt 9). Nur mal so eine erste Vermutung..
Waveshare hat auch seine eigene Bibliothek für ILI9486 (das ist der Display-Treiber, XPT2046 ist der Touch-Controller) mit Beispiel-Sketch. Vielleicht bringst du es damit zum Laufen?
Mach mal Foto der Rückseite, so das man die Pinbezeichnug lesen kann.
Du hast so wie so ein kleines Problem, 320 x 480 also 3.5" oder 4" Display + Adafruit GFX verbrauch ziemlich viel Programmspeicher so wie RAM, viel übrig für denn rest bleibt nicht.
Vielleicht kann man dem mit ESP32 zum laufen bringen, deshalb will das Foto.
Du solltest besser die Library von Waveshare (Link von @fony) verwenden.
Da wird die SPI.h-Library eingebunden, die ich in deinem Beispiel vermisse. Ohne die geht nix.
Zudem werden in der Library auch alle Pins des Uno richtig angesprochen.
Nur wenn die im Sketch auch richtig bedient werden. Das sehe ich bei dir nicht.
Du musst herausfinden / messen, welche Pins vom Display nicht genutzt werden und kannst diese durch anlöten von Drähten auf dem Uno danach nutzen.
Zumindest ist das die beste und sicherste Möglichkeit.
Edit:
So wie ich das erkennen kann, sind die analogen Pins ungenutzt.
Da ich das Display nicht nutze, ist das eine Vermutung.
Diese Pins kannst du auch als digitale Pins nutzen.
Beachte dabei, A4 und A5 können auch für I2C verwendet werden, falls du den I2C-Bus nutzen möchtest.
@fony
Nutzt du das Teil selbst ?
Ich würde das nicht empfehlen, da das eine recht wackelige Angelegenheit ist. Ein Bekannter von mir nutzt es und nimmt das nur zur Programmierzeit. Im Betrieb ist ihm das zu unsicher, da schon mehrfach ausgefallen. Bei ihm geben die Stifte im Uno keinen richtigen Kontakt.
Und für einen Dauerbetrieb würde ich 3 - 4 Kabel anlöten.
Ich war zuerst skeptisch, ob der ICSP-Anschluss dafür auch verlängert werden müsste, aber auf dem Waveshare Display gibt es DIP-Schalter, die den SPI-Anschluss auf die äußeren Pins 11 bis 13 legen.
Abgeleitet von der Beschriftung des Displays kannst Du folgende Pins nutzen:
2 Wenn ich richtig gezählt habe, ist der frei.
A0 bis A5 als analoge oder digitale IOs, A4 und A5 auch als I²C-Bus, für den es viele Sensoren gibt.
11 bis 13 sind mit dem SPI-Bus für SD-, Display- und Touch-IC belegt, weitere Teilnehmer am SPI-Bus wären möglich. Jeder Sensor benötigt dann einen CS-Pin zusätzlich.
Die Teilnehmer am I²C-Bus werden durch Adressen unterschieden, benötigen daher keine weiteren Pins.
Für I²C und SPI gibt es auch Portexpander, sollten Dir IOs fehlen.
Für Wetterstation empfehle ich dem BME280 den git es auch in 5V Ausführung, es ist ein I2C Sensor was zeigt an Temperatur, Luftdruck, und Relative Feuchtigkeit.
Und noch ein Tipp. Es mag zwar seltsam klingen aber ändere mal Testweise die TextColor auf BLACK. Nicht das nur der Hintergrund weiß ist, von Natur aus