Display Fehler mit arduino UNO

Hallo ich will etwas auf meinem TFT LCD Display 160x128 anzeigen lassen aber es sind immer überall weisse streifen was kann ich tun

Wenn ich den Reset am arduino halte dann ist der Bildschirm normal

Code:


#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS 7
#define TFT_RST 6
#define TFT_DC 5


Adafruit_ST7735 tft = Adafruit(TFT_CS, TFT_DC, TFT_RST);

void setup(){
tft.intiR(INTIR_GREENTAB);

tft.fillscreen(ST77X_BLACK);

tft.setRotation(3);
tft.setCursor(0, 0);
tft.setTextSize(2);
tft.setTextColor(ST77XX_WHITE);
tft.print(„Display Test“);
}
void loop() {
}

Ich habe die Code-Tags in deinem Beitrag korrigiert.

Du hast ''' verwendet, es hätte aber ``` heißen müssen.

Check' mal das Datenblatt vom Display, vermutlich will das 3.3V max, der Uno liefert aber 5V. Beim RESET gehen alle Pins auf HighZ --> keine 5V am Display.

Ich hatte erst geschrieben, dass der 3,3V Ausgang des Uno auf das Breadboard gelegt wurde. Aber man darf nicht vergessen, dass die Signalpins trotzdem 5V Spannung haben.

Das hatte ich kurzzeitig verdrängt. Ergo, einen Logic Level Converter verwenden. Zur Not geht auch ein Spannungsteiler aus Widerständen.

Produktbeispiel:
https://eckstein-shop.de/SparkFunLogicLevelConverter-33Vto5VBi-Directional?ws_oss_lieferland=CH&gad_source=1&gad_campaignid=22872305505&gbraid=0AAAAADm3Hmnpwzu0TWB3xxEZH430iR0Le&gclid=EAIaIQobChMIh-anuu6hlQMVH0JBAh1KcQG1EAQYAyABEgJxVvD_BwE

Mach mall Foto der Rückseite.

Falscher Link? Gezeigter LS ist normalerweise für I2C

Es ist ein bidirektionaler Levelconverter… also wo ist das Problem?

Bei SPI ist die Frequenz gerne das zigfache als die 100kHz, wofür die Module erfunden wurden.

Das zeigt sich dann am Oszi und in der mangelnden Zuverlässigkeit.

Bidirektional, das tut SPI nicht.
SPI ist unidirektional

Das Argument mit der Geschwindigkeit ist nachvollziehbar. Da der Converter nur aus MOSFets und Widerständen besteht, hängt es also von der möglichen Schaltgeschwindigkeit der FETs ab, wie sauber das Signal noch rüber kommt.

Bidirektional bezieht sich ja nur darauf, dass man von 5V auf 3,3V und umgekehrt gehen kann.
Es steht jedenfalls nichts davon in der Produktbeschreibung, dass das Teil nur für I2C taugt. Dafür werden andere Levelconverter angeboten.

Wo möglich machen machmall gerade die Probleme es sind PullUp.
Vermutung war falsch

Habe ich auch gedacht deswegen habe ich den 3.3V Ausgang vom UNO genommen aber geht immernoch nicht

Nochmal: Es reicht nicht, nur die Stromversorgung des Displays auf 3,3V zu bringen. Die Signalleitungen (MOSI, SCK, CS usw.) müssen von 5V auf 3,3V gebracht werden. Der Uno liefert generell 5V Signale.

Es ist nicht der Code wo mit du das auf dem Display angezeigt hast.


tft.fillscreen(ST77X_BLACK);
tft.print(„Display Test“);

ist falsch.

Es gibt doch reichlich Informationen wie ein TFT am Uno angeschlossen wird, damit das richtig funktioniert. Z.B. geht es mit Spannungsteilern in den SPI-Leitungen. Nicht optimal, aber funktioniert. Besser mit einen Treiber CD4050 für die Leitungen.
Das funktioniert sicher und stabil.

habe extra mein Schlepptop angemacht
das

#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define TFT_CS 7
#define TFT_RST 6
#define TFT_DC 5
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.initR(INITR_GREENTAB);
  tft.fillScreen(ST77XX_BLACK);

  tft.setRotation(3);
  tft.setCursor(0, 0);
  tft.setTextSize(2);
  tft.setTextColor(ST77XX_WHITE);
  tft.print("Display Test");
}
void loop() {
}

kompiliert.
Egal ach wie hast bei dir Fehler womit das ganze konnte nicht funktionieren.
Weiß nicht was du hast vor, wurde jedoch ein anderes Board holen zB. ESP866 ist ein 3.3V System dazu viel mehr speicher. du bist jetzt schon bei

Globale Variablen verwenden 432 Bytes (21%) des dynamischen Speichers, 1616 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

und noch nichts in der Loop.
Vorschlag

Das sollte tft.fillScreen(ST77XX_BLACK); lauten.

Mit 2 mal X -> XX

und das sollte vermutlich auch anders lauten:

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST

Gruß Bepo

Und

tft.fillscreen(ST77X_BLACK);
dazu noch den

tft.print(„Display Test“);
hast übersehen, macht nix, nur man sollte genau schauen was gepostet wird.

Habe mich mal mit den Adafrüchtchen unterhalten, warum die da immer den Copy Konstruktor nutzen, obwohl das dann doch dann jeder unbedarfte genauso naiv nach macht.
Habe keine klare Antwort erhalten.
Scheint eher was religiöses zu sein.

Baue ein Funktionsgenerator mit Frequenzausgabe einstellbar über einen Poti und einen NE555 und will die Frequenz messen und auf einen bildschirm ausgeben. Bisher habe ich halt ein kleines oled display, wollte es aber auf ein größeren bildschirm ausgeben. Ich habe nicht so viel code erfahrung deswegen habe ich das Forum geöffnet

Funktioniert es so weit mit dem kleinen OLED?
Standard NE555 wird mit 5 bis 16V gesteuert ein Arduino UNO R3 kann nur Signale bis 5 V bearbeiten also darf der NE555 nicht mit mehr als 5V befeuert werden sonst ist der Eingangspin schnell oder sofort defekt.