Fragen zu 3.2" TFT LCD Display: eigene Erfahrungen?

hallo,
wer hat dieses 3.2" TFT LCD Display schon in Gebrauch und eigene Erfahrungen?

http://www.ebay.de/itm/261485322721?_trksid=p2060778.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

mich interessieren zunächst:

  • Sketch Code für die Anzeige von Text und Werten, möglichst in der Art
    printxy(x, y, string) oder printfxy(x,y, fmtstring, var_list)

  • welche Pins brauche ich unbedingt nur für die Anzeige, ohne Touch-Funktion und ohne SD Card,
    und möglichst ganz ohne den Shield oder die entsprechenden Pins vom Shield direkt abgreifen
    (Habe keinen Platz mehr zum Shield-Aufstecken)

Es gibt auch einen zip File dazu, aber damit weiß ich zuwenig anzufangen:

3.2 TFT LCD(en).zip (2.1 MB)

Hallo,
nur mal so...
Sei bloß vorsichtig mit diesen "TFT´s" Die sind fast alle "SchneckeLangsam"
Das was Du Dir das ausgesucht hast, belegt Dir am Mega eine ganze BuchsenReihe.
Wenn Du wissen willst, welche wirklich benutzt werden hilft nur ein Blick in den Schaltplan.

Viel schwören hier auch auf I2C und SPI.
SPI habe ich selbst genutzt, SPI und 2 DatenStrippen gehen flöten. Ist aber langsam.
Das kann- an der Lib liegen.

Ich habe von den Dingern erst einmal die Schnautze voll. Man kann auch 2 Stck 4x20 anschließen.
Das Probiere ich als nächstes.
Gruß und Spaß
Andreas

HaWe:

  • Sketch Code für die Anzeige von Text und Werten, möglichst in der Art
    printxy(x, y, string)

Ist in UTFT natürlich vorhanden ist lässt sich auch leicht anpassen. z.B. für einen bestimmten Font:

void displayPrintBigFont(char* str, int x, int y)
{
	display.setFont(BigFont);
	display.print(str, x, y);
}

printfxy(x,y, fmtstring, var_list)

einfach snprintf() verwenden und dann den Puffer auf das Display schreiben. Ein 20-40 Byte Puffer reicht und kann noch für zig andere Sachen verwendet werden.

Ich verwenden den Puffer z.B. ständig um Daten aus dem Flash ins RAM zu kopieren:

void displayPrint_P(const char* str, int x, int y)
{
	strncpy_P(stringBuffer, str, STRING_BUFFER_SIZE);
	display.print(stringBuffer, x, y);
}

Oder sowas:

#define P(str) strcpy_P(stringBuffer, PSTR(str))

UTFT enthält aber auch einfache Formatierungs-Funktionen für einzelne ints oder floats

  • welche Pins brauche ich unbedingt nur für die Anzeige

Das sind einige, da es ein 16 Bit Interface ist:
http://www.komputer.de/wordpress/archives/1002#more-1002

Die doppelreihige Leiste ist bis auf 8 I/Os + 4 SPI Pins belegt

und möglichst ganz ohne den Shield oder die entsprechenden Pins vom Shield direkt abgreifen
(Habe keinen Platz mehr zum Shield-Aufstecken)

Dann brauchst du den Platz um das in der Luft zu verkabeln. Eher mehr. Das Display kann man nicht einfach auf den Arduino stecken.

Als Lib wie gesagt UTFT + UTouch + UTFT Buttons verwenden:
http://henningkarlsen.com/electronics/library.php?id=52

Aber du bist wohl mit einem kleineren SPI Display besser beraten als mit dem parallelen Interface. Die 3,2" sind langsam ja, aber für Menü Eingaben ist es für mich vertretbar. Man man kann beim Zeichnen manchmal zusehen, aber so schlimm ist das u.U. auch nicht.
Für dich wird der Anschluss allerdings zu kompliziert sein. Ein 2,8" dagegen bekommst du mit SPI

Libarys sollten die GFX Adafruit sowie UTFT gehen. Die genaue Anzahl an Pins habe ich gerade so shcnell nicht rausfinden können, (muss wieder los).

Für die SD Karte fallen 4 Pins weg. ("SD_" Präfix). Für Touch fallen wieder 6 Pins weg ("D_" Suffix).
Der Rest bleibt. Ggf. kann man die DB0 - 15 noch auf 8Bit runterbekommen, das muss du aber schauen, ob es die Libarys dann auch unterstützen. UTFT hatte meinste mehre Bit-Modes im Angebot.

@skorpi:
Hast du Hard oder Software SPI im Einsatz gehabt? Hardware SPI ist etwas schneller. Aber auch kein Durchbruch. I2C habe ich für die großen Displays noch nicht gesehen.

Es kommt aber auch auf den Programmierstil an. Schreibe ich alle Inhalte jedesmal neu, ist die Geschwindigkeit verständlcih. Oder versuche ich halt wirklich nur die Stellen zu überschreiben, die nötig sind. Aber letzteres ist nicht immer möglich.

Am Due ist ein deutlicher Geschwindigkeitsvorteil zu sehen. Aber auch hier ist eine schnelle Ansteuerung auch nicht wirklich möglich. Es wird deutlich besser, aber das wars auch schon.

Problem ist, die AVRs sind nicht zwingend für solche Sachen ausgelegt. Dafür ist die Hardware einfach zu langsam und der Code wird zu Speicherlastig (Problem bei Atmega328P teilweise).

Habe jetzt die meisten Displays getestet. Was lediglich noch fehlt währen die NewHeaven Displays, die aussehen wie 2x16 Displays, jedoch jeden einzelnen Pixel einzeln ansteuern ohne die typischen Zwischenstege.

Ansonsten, die beste Lösung für eine Visuelle Ausgabe bleibt für mich ein 2x16 Display. Habe das je nach Anwendung im 4 oder 8 Bit Modus. I2C Adapter kommen nur zum EInsatz, wenn es dann doch mal eng wird mit den freien Pins.

hi,
ich habs ja jetzt schon, jetzt muss ich damit fertig werden... :wink:

die Doppelreihe an der Stirnseite ist bei mir größtenteils belegt mit Encodermotor-Pins, insb. pwms 44-46 und jede Menge digitale I/O Pins,
pwm 4,6,13 sind ebenfalls belegt.

ansonsten habe ich noch ein paar Pins zwischendrin frei.

Deswegen die Frage nach der minimalen Pinbelegung, damit erstmal nur die Anzeige läuft (z.B. SPI o.ä.).

Es kommt auch darauf an was man macht. Wenn man es als Eingabe-Gerät mit Knöpfen verwendet ist die Geschwindigkeit meiner Meinung nach zweitrangig. Eine neues Menüebene zu zeichnen dauert ein klein wenig, aber es ist auch nur vielleicht eine Sekunde. Ansonsten zeichnet man mal 1 oder mehrere Knöpfe neu um sie zu aktivieren und deaktivieren, oder die Farbe oder die Beschriftung zu ändern. Das ist kein Problem.

Auch eine Anzeige für Temperaturen oder kleine Statusmeldungen ist kein Problem, wenn man immer nur die Änderungen neu schreibt.

Wenn man irgendwelche Grafik-Geschichten macht die sich schneller ändern sollen wird die Geschwindigkeit eher problematisch.

Deswegen die Frage nach der minimalen Pinbelegung, damit erstmal nur die Anzeige läuft (z.B. SPI o.ä.).

Das hättest du dir vorher überlegen sollen. SPI geht bei den Displays nicht.

8 Bit sind je nach Display Controller möglich. Bei UTFT sieht man das in UTF.h.
Da ist z.B. #define ELEE32_REVB 19 // SSD1289 (8bit)

Das der korrekte Controller, aber ob es mit deinem Display geht weiß ich nicht. Eigentlich ist das ein anderes Display. Das kann dann wieder eine andere Belegung haben. 8 Bit ist eher bei 2,4" üblich

Siehe auch hier:
http://henningkarlsen.com/electronics/files/UTFT_Requirements.pdf

ich brauche es erstmal nur zur Anzeige von Messwerten, das macht nichts, wenn das ein wenig flackert.

Im Prinzip erst einmal nur tabellenartig, zum Debuggen, so wie hier:

    1   2   3   4
    5   6   7   8
    9  10  11  12
   13  14
11111  22222

alles andere vllt später

Sowas geht mit einem solchen Display schon. Wie genau die Syntax aussieht, kannst du im Pdf-Manual der UTFT nachlesen.

Du musst dann einfach feste x,y Koordinaten verwenden und nur die geänderten Daten überschreiben. Dafür hast du die Option zur Verfügung, eine Hintergrundfarbe für die Schrift festzulegen. Diese wählst du dann optimalerweise genauso wie die Hintergrundfarbe.

Für den Einsatz, wo ich die Displays gebraucht habe, waren diese eigentlich zu langsam. Es ging uA. um Auswertungen von Messdaten die viusell in Trends/Grafiken dargestellt worden. Eben leider nicht nur einzelne Sachen neuschreiben wie Serenfly bereits schrieb.

Bei den Grafiken / Trends ging es um relativ schnelle Änderungen, bei der immer ein größerer Teil des Bildes abgeändert werden muss. Habe es im Endeffekt für mich ausreichend lösen können. Jedoch gab es nicht nur das Problem bei dem Display.

Das andere Problem ist die Dichte der Pixel. Zeichnet man rote/ grüne / blaue Linien, bemerkt man einen kleinen Versatz, da einzelne Pixel doch recht schnell erkannt werden, dass diese eben nicht übereinander liegen sonder nebeneinander. Sicherlich, das ist so üblich, jedoch fällt es bei einem TFT für den PC nicht auf, da die Pixeldichte deutlich höher ist.

sschultewolter:
Für den Einsatz, wo ich die Displays gebraucht habe, waren diese eigentlich zu langsam. Es ging uA. um Auswertungen von Messdaten die viusell in Trends/Grafiken dargestellt worden. Eben leider nicht nur einzelne Sachen neuschreiben wie Serenfly bereits schrieb.

Ja, das kann ich nachvollziehen. Ich habe bei mir eine Stelle wo ich eine Kurve/Gerade je nach an Buttons eingegeben Werte visualisiere. Und die alte Kurve zu löschen und die neue zu Zeichnen dauert. Auch weil ich sie drei Linien breit habe. Aber da ich nur auf langsame Eingaben durch den Benutzer reagiere kann man es aushalten.

Gerade Linien zu zeichnen geht super schnell. Aber sobald etwas mehr berechnet werden muss merkt man das es dauert. Und halt die Zeit 3 Byte pro Pixel über den Bus zu schieben.

könntest du mir bitte erstmal sagen, welche pins ich wie verbinden muss dafür?

  • welche Pins brauche ich unbedingt nur für die Anzeige, ohne Touch-Funktion und ohne SD Card,
    und möglichst ganz ohne den Shield oder die entsprechenden Pins vom Shield direkt abgreifen
    (Habe keinen Platz mehr zum Shield-Aufstecken)

http://henningkarlsen.com/electronics/files/UTFT_Requirements.pdf
Seite 2

Auch hier:
http://www.komputer.de/wordpress/archives/1002#more-1002

ja, danke, das habe ich auch gesehen - aber das sind ja 20 pins, sicher dann für alles mögliche -

aber ich brauche nur die reinen TFT-Pins, wie gesagt, also wschl 5 oder so für SPI, oder?

  • aber welche?

MIT 3,2" GEHT KEIN SPI!!!
Das minimale ist ein 8 Bit Parallel Interface mit 12 Pins. Siehe auch die letzte Seite. Da steht genau welche Pins normal belegt sind

Aber nochwas:
Die Displays laufen doch mit 3,3V. Kann man die wirklich so direkt anschließen? Ein Grund für die Shields ist ja nicht nur die Pinbelegung umzusetzen, sondern die Spannung. Deshalb haben die alle Spannungsteiler, bzw. bei den besseren Bustreiber als Pegelwandler drauf.

Hallo,
"Hard oder Software SPI"
Hardware, ist aber nicht der Renner. I2C habe ich noch nicht probiert.
Es ist schon so, "die AVRs sind nicht zwingend für solche Sachen ausgelegt."

Die 2x16 oder 4x20 sind schon richtig gut. Da kann man ziemlich übersichtlich
Werte anzeigen. Wenn der Platz nicht ausreicht, dann kann man in Echtzeit
auf eine neue Seite- und auch wieder zurück.
ich würde ja gerne mal ein 4x30 oder 4x40 probieren, aber da spielt die Lcd.Lib
wohl nicht mit.
Gruß und Spaß
Andreas

Hallo,
"- aber welche?"
Man ! Kannste nicht mal Deine Schaltpläne vergleichen? ]:slight_smile:

Anderer Weg:
Das Display auf ein Steckbrett, alle Strippen 1:1 verbinden- dann, eine nach der anderen ziehen.
So kommst Du auch dahinter.
Gruß und Spaß
Andreas

SkobyMobil:
ich würde ja gerne mal ein 4x30 oder 4x40 probieren, aber da spielt die Lcd.Lib
wohl nicht mit.

Für 4x40 gibt es mindestens eine angepasste Lib:
https://code.google.com/p/liquidcrystal440/

Hardware SPI sollte schneller sein als Software SPI. Wunder braucht man da nicht erwarten.

Vorteil bei den LCD Displays ist, dass man die auch mit etwas umbiegen perfekt als Konsole nutzen kann. Habe meist wenig Lust an ein System zusätzlich noch den UART mit dem PC über einen Adapter zu verbinden (nutze zum Flashen ISP Progger).

Bei den Grafischen Displays wird das einiges schwieriger, auch wenn es dennoch machbar ist. Habe es mit einem 1.8" SPI bereits einmal gemacht (war Code Beispiel). Aber optimal ist es nicht, da noch einiges mehr hinzugefügt werden muss, um es entsprechend zu managen.

bitte - ich bin kein Elektroniker, ich verstehe Schaltpläne genausowenig wie U-Bahn-Fahrpläne!

bitte eine ganz einfache Antwort, für komplette Vollidioten:

ich brauche nur die reinen TFT-Pins, wie gesagt, also wschl 5 oder so für SPI, oder?

  • aber welche?

(und bitte, ihr dürft gerne unter euch diskutieren - aber bitte erstmal zum TOP, bitte, bitte, bitte! :slight_smile:

Hallo,
"bitte - ich bin kein Elektroniker"
das bist Du nicht? Aber am fetten Mega fummeln und ReisSchüsselPlatinen
anschließen… :roll_eyes:

So wie es aussieht alle- außer Pin 1, 2, 25, 26, 27, 28, 29, 34 und 37
aber ohne Gewähr.
Gruß und Spaß
Andreas

danke - das ist ja schon mal ein erster Schritt... :slight_smile:

ich meinte aber v.a.:
welche pins vom shield zu welchen pins auf dem Arduino... (Verdrahtungsschema) ?