Sainsmart Serial 128X160 SPI TFT LCD Modul Display OHNE SainSmart Sensor Shield?

Hallo ,
ich habe folgendes TFT LCD sehr Günstig bei Ebay erworben:

nun habe ich in der Anleitung gelesen dass ich ein : SainSmart Sensor Shield V4 Module benötige : http://ecx.images-amazon.com/images/I/51Byhlvol8L._SL500_AA300_.jpg

meine Frage : Kann ich das Display auch ohne dieses Module benutzen ?Wenn Ja,wie schließe ich es an?

Vielen Dank,Michael !

Kann ich das Display auch ohne dieses Module benutzen ?

Ja, das Sensor Shield hat keine aktiven Komponenten, nur die verschiedenen Pins anwenderfreundlich auf Stecker raus geführt.

Wenn Ja,wie schließe ich es an?

Wenn Du die Beschreibung postest, wie es an das Sensor Shield angeschlossen wird, sage ich Dir, wie Du es ohne anschliessen kannst. Ich kenne das Display nicht und nur vom Foto ist das schwierig zu beurteilen.

Hallo,

gerne doch!

Hier noch paar Daten zum TFT :

Features:
* Display Mode: 1.8" TFT SPI Interface, Transmissive, Normally white;
* Display Color: 262K colors;
* Backlight Type: LED
* Resolution: 128W * 160H Dots
* Board Size: 5.00 x 3.4cm
* View Area: 28.03W * 35.04H mm
* Dot Size: 0.06W * 3 * 0.18H mm
* Dot Pitch: 0.18W * 0.18H mm
* Viewing Angle: 6 o'clock
* SPI Bus interface
* IC Driver: ST7735R
* 5V/3.3V TTL logic Compatible, can be used in 5V/3.3V IO Arduino system directly

Signal Definition:
GND : Power Ground
VCC : 5V power input

CS : Chipselect for LCD,
SDA : LCD Data for SPI
SCL : SCLK for TFT Clock
RS/DC : Command/Data Selection
RESET : LCD controller reset, active low

CS (SD-CS) : Chipselect for TF Card,
CLK (SD-Clock): SPI Clock
MOSI (SD-DI) : SPI Master out Slave in
MISO (SD-DO) : SPI Master in Slave out

Hier ist die Anleitung,direkt von SainSmart : 1.8" TFT SPI LCD Screen with MicroSD Socket for Arduino – SainSmart.com mit 2 Pdf Dateinen.

Vielen Dank für deine Mühe!
LG Michael

Das Display wird mit SPI angesteuert. Im Beispiel wird dafür nicht der Hardware-SPI-Port genommen, sondern einfach beliebige GPIO-Pins (Pin 4-8). Du kannst nach dem Beispiel einfach Pin 4 bis 8 nehmen und das Beispiel-Programm unverändert übernehmen oder Du schliesst das Display an den Hardware-SPI an (was deutlich schneller ist) und nimmst das Beispiel "graphicstest_hispeed". In diesem Fall (graphicstest_hispeed) müsstest Du folgende Verbindungen machen:

Arduino Display
10 CS
9 DC
8 RES
11 SDA
13 SCL
5V VCC
GND GND

Die ersten 3 kannst Du auch auf beliebige andere Pins legen, Du musst dann einfach die #define am Sketch-Anfang ändern. Die letzten 4 sind fix.

Juhuu,
vielen Dank ! Werde es gleich heute Abend Testen.

Weist du auch evtl. wie ich den SD-Karten Slot mit anschließe ?

Da kann ich nur Vermutungen aufgrund der Bilder anstellen. Ich würde folgende (zusätzliche) Verbindungen machen:

Arduino Display
11 MOSI
12 MISO
13 SCLK
4 CS (the one below MOSI)

Wenn Du das so verdrahtest, kannst Du alle Beispiele für den SD-Karten-Zugriff verwenden (beim Ethernet Shield ist der CS für die SD-Karte auch auf Pin 4).

Hallo,

auch ich habe mir das TFT-Modul gekauft.
Jedoch bekome ich schon beim Versuch den Code "graphicstest.pde" zu kompilieren eine unmenge an Fehlern:

--
no matching function for call to 'ST7735::ST7735(int,int,int,int)'

In file included from graphicstest.cpp:18:
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:57: error: expected )' before 'CS' C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:59: error: expected )' before 'CS'
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:64: error: 'uint16_t' has not been declared
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:65: error: 'uint8_t' has not been declared
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:65: error: 'uint8_t' has not been declared
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:65: error: 'uint16_t' has not been declared
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:66: error: 'int16_t' has not been declared
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:66: error: 'int16_t' has not been declared
C:\Programme\arduino-1.0.1\libraries\ST7735R/ST7735.h:66: error: 'int16_t' has not been declared
...
...
... usw, usw.

Die Libraries "ST7735.h", "ST7735.cpp" und "glcdfont.c" habe in in \arduino-1.0.1\libraries\ST7735R kopiert und Arduino neu gestartet.

Hat von Euch einer eine Idee, weshalb diese Fehler kommen und wie ich sie beseitigen kann?

Ich glaube, Du setzt eine veraltete Version der Bibliothek ein. Da Du aber keinen Link darauf mitgepostet hast, habe ich keine Ahnung, welche Bibliothek Du überhaupt einsetzen willst. Bei derjenigen, die ich kenne, heisst das Include-File "Adafruit_ST7735.h" und die sollte auch mit aktuellen IDEs klarkommen.

Zunächst mal Danke an pylon. Dein Tip hat mir weitergeholfen.

Mein Sainsmart-Display habe ich auch über Ebay ersteigert. Bei dem Angebot war ein Link zum Download der Beispiele und Bibliothek

So schön hübsch sieht das Display aus:

Die oben genannte Bibliothek verursachte bei mir beim Kompilieren die besagten Probleme, obwohl Display und Software von Sainsmart kommt.

Dank Deinem Tip habe ich die Beispiele und Bibliothek von Adafruit Downloads | 1.8" TFT Display Breakout and Shield | Adafruit Learning System geladen. Übrigends wird auf der Seite sehr schön auf die Verwendung des Displays eingegangen. Beachten muss man nur, dass die Pinbelegung des Adafruit-Displays von der Pinbelegung das Sainsmart-Displays abweicht.
Auf der Adafruit-Seite steht noch die wichtige Info, dass man die Adafruit_GFX Library ebenfalls benötigt.

Und siehe da, alles läuft =)

Echt gut alles dargestellt! Habe mir ebenfalls auf Ebay das Display von sainsmart gekauft.
Die Beispiele funktionieren auch, jedoch habe ich Probleme mit der Anzeige von Bildern. :~
Ich habe beachtet, dass die Bilder in *bmp Format sein sollten, die Karte FAT32 und die Bilder 128x160 Pixel groß sind. Leider funktioniert es nicht.. Kann jemand, bei dem es läuft vielleicht mal die Pinbelegung posten? Habe die oben genannte schon ausprobiert. (Ich habe das Modell Leonardo)

Vielen Dank für Bemühungen :slight_smile:

Für den Leonardo ist es wie folgt:

Leonardo Display
10 CS
9 DC
8 RES
SDA SDA
SCL SCL
5V VCC
GND GND
4 SD-CS
ICSP-1 MISO
ICSP-3 SCLK
ICSP-4 MOSI

ICSP ist der 6-polige Stecker rechts aussen, die Pin-Zählung beginnt oben links und geht horizontal vor vertikal.

Vielen Dank! Echt super :grin:

Hi ,

erstmal Lob an die Community 8) !
Weiß jemand evtl. noch wie ich nur eine Zeile vom LCD löschen bzw. 'refreshen kann ohne das Display per tft.fillScreen(ST7735_BLACK); zu "resteten" ?

Hoff ihr wisst was ich meine... :stuck_out_tongue_closed_eyes:

Vielen Dank´
Michael !

Hoff ihr wisst was ich meine... smiley-yell

Nein, was ist für Dich eine Zeile? Eine Pixel-Zeile? Eine Text-Zeile? Falls Letzteres: welche Schriftgrösse verwendest Du?

Meine eine Textzeile ,und benutze überwiegend

tft.setTextSize(1);

Welche Bibliothek setzt Du ein? Die vom OP verlinkte sicher nicht, denn die kennt setTextSize() nicht.

Grundsätzlich rechnest Du aus, welchen Bereich die Zeile abdeckt und malst dort ein Rechteck der richtigen Grösse schwarz aus.

Edit: Bei der neuen Adafruit-Bibliothek ist die Zeilenhöhe 8 Pixel (bei TextSize 1), ein Zeichen ist 6 Pixel breit.

Hallo,
erstmal Danke für deine Bemühungen !

ich verwende diese Lib.:

Dank Deinem Tip habe ich die Beispiele und Bibliothek von Adafruit Downloads | 1.8" TFT Display Breakout and Shield | Adafruit Learning System geladen. Übrigends wird auf der Seite sehr schön auf die Verwendung des Displays eingegangen. Beachten muss man nur, dass die Pinbelegung des Adafruit-Displays von der Pinbelegung das Sainsmart-Displays abweicht.
Auf der Adafruit-Seite steht noch die wichtige Info, dass man die Adafruit_GFX Library ebenfalls benötigt.

Hoff du kannst mir evtl. ein Codebsp. zeigen ...so lerne ich am besten...kenne leider die ganzen Befehle (noch) nicht...

Edit : Hab da was gefunden :

by adafruit_support_rick » Sun Apr 07, 2013 7:27 am

Use the tft.fillRect function to erase just the areas you want to rewrite.

fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color)

For example, to erase your time, you might call

tft.fillRect(0,0,20,160,0x0000);

So sollts gehen...ist im Prinzip nichts anderes als pylon gemeint hat ! Thanks Man !

Sorry 4 DP...
Sag mal ... Flackert das Display auch bei euch wenn ihr ein Bild mit : bmpDraw("poweron.bmp", 0, 0); aufruft.. ? Sobald es "Geladen" ist,flackterst nicht mehr...
ist das Normal ?

Edit: Hier ist ein Video mit den Problem :- YouTube

Pinbelegung :

//Arduino Display
//10 CS
//9 DC
//8 RES
//11 SDA
//13 SCL
//5V VCC
//GND GND

//Arduino SD-CARD
//11 MOSI
//12 MISO
//13 SCK
//4 CS (SD)

Edit :

habe von Antiriad eine PM bekommen,dass ich nicht er ein zigste mit dem 'Flackern' bin.Danke nochmal an alle.
Lg Michael

Man kann eine Textzeile überschreiben indem man eine Hintergrundfarbe mit angibt. Dann flackert nichts mehr. und nur die eine Ausgabe wird überschrieben.
Viel eleganter als ein Schwarzes Rechteck drüber bügeln oder das ganze Display immer zwischendurch löschen.

lcd.print("Blablabla ", Vordergrundfarbe, Hintergrundfarbe);