A137 Touch TFT 320 x 240 unter 5€

Persönliche Seite #3526900
Lesenswert?

Hallo zusammen,

der Markt wird gerade von solchen Touch-TFT Schields "überschwemmt":

Beitrag "Re: China SUPER Bauteile-Schnäppchen Thread"

Ich bin gerade dabei, die Gamma-Korrektur zu optimieren. Außerdem 
benötigen die Bibliotheken, die ich gefunden habe, vier Schreib- 
zugriffe pro Pixel und nutzen teilweise nur 65536 Farben, so wie in den 
Beispielbildern in der Anlage.

http://misc.ws/2013/11/08/touch-screen-shield-for-arduino-uno/

Eigentlich sollten aber laut Datenblatt auch
> "8-bit interface (3 transfers/pixel) 262 144 colors"
gehen, wo pro Transfer nur die 6 MSBits benötigt werden.

Vielleicht gibt's das schon irgendwo und ich hab's übersehen. Wir wissen 
auch nicht, wie lange der "Hype" noch anhält. Wenn ich fertig bin und 
Interesse besteht, kann ich den Code auf github aktualisieren.

https://github.com/TorstenC/A137_TouchTFT_320x240
Angehängte Dateien:
#3530180
Lesenswert?

Wen's interessiert:

Von Sprite gibt es für solche Displays mit ILI Controller einen Artikel, 
der beschreibt, wie man (z.B.) für den Raspberry einen Kerneltreiber 
erstellt.
Damit kann man dann den X Desktop auf den Teilen anzeigen - praktisch 
für "aufwendigere" UIs.

http://spritesmods.com/?art=rpi_arcade&page=2

Lässt sich relativ leicht anpassen, ich habe das mit einem meiner 
Displays mal ausprobiert - funktioniert prima.
Persönliche Seite #3530451
Lesenswert?

Martin Schröer schrieb:
> für den Raspberry

Danke für die, die damit was machen.

> touchscreen isn't connected: it wouldn't have much use on a mini
> arcade case, and would require extra hardware to get working
> because the RPi doesn't have integrated AD-converters

Der Raspberry ist ja knapp 10 mal so teuer wie das Dislplay-Shield. In 
der Bibliothek ^^ geht's darum, das "billige" Display so billig wie 
möglich als Bedieneinheit einzusetzen, also als Ersatz für LEDs und 
Taster.

BTW: Ich habe gerade die Gamma-Korrektur mit den RGB-Werten gemacht und 
siehe da: Es kommt was Vernünftiges bei 'raus. Die Hardware-Gamma- 
Korrektur ist nur "finetuning". Der Gamma-Wert liegt um und bei 2.6, 
also ziemlich hoch.

Hat jemand so ein Display mit ILI9325, ILI9328, HX8347G oder SPFD5408 am 
"Uno R3" im Einsatz?

Ich bin gerade dabei, die Schriftarten und Widgets (Touch-Tasten) so zu 
zerlegen und zu komprimieren, dass sie in den engen Flash des "Arduino 
Uno R3" passen.
Gast #3530728
Lesenswert?

Tolles Projekt!


Torsten C. schrieb:
> BTW: Ich habe gerade die Gamma-Korrektur mit den RGB-Werten gemacht und
> siehe da: Es kommt was Vernünftiges bei 'raus. Die Hardware-Gamma-
> Korrektur ist nur "finetuning". Der Gamma-Wert liegt um und bei 2.6,
> also ziemlich hoch.

Bekommt die Hintergrundbeleuchtung eventuell zu wenig Spannung?
#3530736
Lesenswert?

Hallo,

schickes Display. Kann man das auch an anderen Controllern z.B. über ein 
Speicherinterface anschließen oder den Zugriff beschleunigne, indem man 
z.B. den SRAM-Ausgang des AVR nimmt (z.B: beim ATmega162 vorhanden)?

Kann der Controller auch noch mehr, oder muss ich den Bildaufbau immer 
selbst Pixel für Pixel am µC vornehmen?
Persönliche Seite #3530947
Lesenswert?

René B. schrieb:
> Kann man das auch an anderen Controllern z.B. über ein
> Speicherinterface anschließen oder den Zugriff beschleunigne, indem man
> z.B. den SRAM-Ausgang des AVR nimmt (z.B: beim ATmega162 vorhanden)?

Ja klar. Die Pins am Shield sind allerdings für den UNO R3, diesen 
Vorteil würde man dann nicht nutzen. Ansonsten gibt's auch einen Haufen 
anderer billiger Dispays, auch größer und unter 10€. Aber fast alle mit 
den o.g. (fast identischen) Controllern: ILI9325, ILI9328, HX8347G oder 
SPFD5408.

Vorteil dieses Shields: Die Pegelanpassung auf 5V ist schon drauf. Auf 
einem Arduino Mega würde es auch passen, wäre aber langsamer, weil der 
Datenbus auf mehrere Ports verteilt ist.

Beim Arduino Due, ST32F4Discovery usw. (3,3V) kann man auch Displays 
ohne Pegel-Anpassung anschließen.

> Kann der Controller auch noch mehr, oder muss ich den Bildaufbau immer
> selbst Pixel für Pixel am µC vornehmen?

Außer scrollen kann der nix.

Man setzt sich einen "Viewport" und legt die Increment-Richtung fest 
(z.B. "Top Down Left Right" oder jede andere Kombination) und ballert 
dann einfach nacheinander 2 oder 3 Bytes pro Pixel raus, also nach jedem 
Byte einmal kurz WR auf Low.

Ich bin gerade dabei, die Schriftarten im µC-Flash abzulegen und 
effizient in einen Viewport zu schreiben.
Gast #3534712
Lesenswert?

Kann man auf dem Display eigentlich auch was erkennen wenn die 
Hintergrundbeleuchtung aus ist?
Ich such noch eine Display in der Größenordnung, dass man im Freien auch 
ohne Beleuchtung (wegen Akkuverbrauch) gut ablesen kann
Persönliche Seite #3537873
Lesenswert?

Hallo zusammen,

ich bin gerade dabei, eine Codepage "zusammen zu schustern". In den 
üblichen west- oder mitteleuropäischen Codepages sind viele 
typografische Glyphen, die ich nie benötigt habe. Andererseits kann man 
für einen Touchscreen sicher viele in mehreren Schriftarten verfügbare 
Glyphen gut gebrauchen, z.B. für Wetterstationen, Checkboxen usw.

Wie seht Ihr das?

Anbei mal ein Codepage-Entwurf; bei den blau hinterlegten Codes habe ich 
mich an die Standards gehalten.

Die Schfiftart "Segoe UI" hat z.B. alle o.g.Glyphen!

Bei den folgenden Schriften fehlen nur wenige:

In „Arial Unicode MS“ fehlen: ⏏⟲⟳⦾⦿⬆⬇
In „Lucida Sans Unicode“ fehlen: ⏏☀☁☂☃☇☎☐☑☒☽☾⟲⟳⦾⦿⬆⬇�
In „Consolas“ fehlen: ‣↗↘↶↷↺↻⇒⇔⇦⇧⇨⇩∀∃∄∅≙⏏◐◑◒◓◔◕☀☁☂☃☇☎☐☑☒☽☾⟲⟳⦾⦿⬆⬇�

Also, falls noch jemand Verwendung hat, meldet Euch bitte, es sind noch 
"Plätze frei".
Angehängte Dateien:
Persönliche Seite #3538963
Lesenswert?

Mit einer einfachen Lauflängenkodierung für die "antialiased" Glyphs 
ergeben sich für eine fast komplette Codepage (s.o.) übrigens einige 
"optimale" Größen, siehe erstes Bild.

Ein 26 Pixel-Font benötigt mit rund 15 KiB also etwa die Hälfte des 
Flash-Speichers eines „UNO R3”, siehe zweites Bild.
Angehängte Dateien:
Persönliche Seite #3545227
Lesenswert?

Ich habe mal 'ne Frage: Hat schon mal jemand Störungen im Radio gehabt, 
mit so einem Touch-Screen? Ich habe nur so ein FM/AM Radio im Auto und 
bin noch nicht zum ausprobieren gekommen.

Der Touchscreen funktioniert ja quasi wie zwei Potentiometer. Bei dem 
A137-Shield werden die Potentiometer-Enden recht hochfrequent zwischen 
0V und 5V hin und her geschaltet, weil sie zusammen mit den 
Datenleitungen an den gleichen Pins angeschlossen sind. Der Touchscreen 
ist ja eine großflächige Sende-Antenne.
Persönliche Seite #3551938
Lesenswert?

René B. schrieb:
> Kann man das auch an anderen Controllern z.B. über ein
> Speicherinterface anschließen oder den Zugriff beschleunigne, indem man
> z.B. den SRAM-Ausgang des AVR nimmt (z.B: beim ATmega162 vorhanden)?

Verschiedene Touch-TFTs mit 320 x 240 Pixel gibt's ja haufenweise bei 
Aliexpress. Der Witz bei diesem A137 ist, dass es ohne Löten auf ein 
Arduino Uno passt.

Aber um die Frage zu beantworten: Ja, wenn man die Pins ensprechend 
zuordnet geht bei allen, die ich kenne, auch die Speicher-Schnittstelle, 
und natürlich auch entsprechend schnell. In Kombination mit DMA geht's 
dann wohl nochmal schneller.

Fritz schrieb:
> Kann man auf dem Display eigentlich auch was erkennen wenn die
> Hintergrundbeleuchtung aus ist?

Ich hab's noch nicht probiert, melde mich dann aber.
Persönliche Seite #3555100
Lesenswert?

Die Hintergrundbeleuchtung ist über 22 Ohm-Widerstände direkt an einen 
AMS1117 3,3V-Regler angeschlossen und läuft konstant (ohne PWM) mit 
11,4..12,9mA.

Gerri schrieb:
> Bekommt die Hintergrundbeleuchtung eventuell zu wenig Spannung?

Also 20mA könnte sie sicher ab und wäre dann heller.

Fritz schrieb:
> Kann man auf dem Display eigentlich auch was erkennen wenn die
> Hintergrundbeleuchtung aus ist?

Ich müsste 'ne Leiterbahn durchtrennen, um das auszuprobieren; das habe 
ich im Moment nicht vor.
Gast #3712007
Lesenswert?

Hallo Thorsten,

vielen Dank für Deine Arbeit. Ich hab mir auch so ein Display geholt und 
auf das Arduino Uno gesteckt. Als IDE nutze ich immer Eclipse mit WinAVR 
(flashen mit avrdude). Leider will dein Quellcode nicht übersetzt 
werden. Das inline will der avr-gcc wohl so nicht. Aber prinzipiell muss 
das ja auch ohne funktionieren, wenn auch nicht so effektiv.

Leider wird gar nichts angezeigt. Nun weiß ich eben nicht, ob es an der 
Hardware liegt, oder ob doch noch ein Fehler in der Software ist.
Wäre es möglich, ein fertiges .hex File zu veröffentlichen?

Vielen Dank
Dani
#3811985
Lesenswert?

Hallo Thorsten,

Danke für Deinen Code auf github. Super Arbeit. Nun tut mein 
Display-Shield auch auf meinem Arduino DUE :)
Mit Deine IO-Funktionen mit Modifikationen in Arduino übernommen. Wie 
gesagt, es läuft.
Zwischenzeitlich fand ich auch noch eine eine Bibliothek auf CooCox : 
http://www.coocox.org/driver_comp/spfd5408-c1059.html?mc=4&sc=24
Die Zeichen- und Textfunktionen von denen habe ich übernommen, da diese 
etwas flexibler und schneller sind.

Aber nochmals: Danke für Deine Arbeit.
Vielleicht kannst Du Deine Bibliothek auf github noch aktualisieren.

Gruß

Karsten
Persönliche Seite #3879761
Lesenswert?

Karsten Brandt schrieb:
> Vielleicht kannst Du Deine Bibliothek auf github noch aktualisieren.

PS: Ich habe mein letztes Projekt mal hochgeladen, der Code sieht nicht
"schön" aus, aber funktioniert. Vielleicht hilft es Dir oder 
irgendjemandem. Touch geht jedenfalls. Bei Gelegenheit mache ich nochmal 
ein YouTube-Video vom TimeTimer:

https://github.com/TorstenC/A137_TouchTFT_320x240/tree/master/Mikrocontroller/Atmel%20Studio/TimeTimer

Viele Infos gibt es übrigens auch im 
Beitrag "2.4" Display-Shield (SPFD5408) an Aduino DUE"
Gast #4135344
Lesenswert?

Guten Tag,
dank euer Beitrag konnte ich mein Display, welches von mir schon
eigentlich aufgegeben wurde jetzt wieder belebt werden.
Was ich aber fragen wollte , gibt es auch eine Libraries
wie für das 3,2 Zoll Display und wo kann man sie finden?
Danke an euch
Persönliche Seite #4135411
Lesenswert?

Neuling schrieb:
> das 3,2 Zoll Display

Welcher Chip ist denn da drauf? Vielleicht einer von denen hier?
1
#define  ILI9320    0  /* 0x9320 */
2
#define  ILI9325    1  /* 0x9325 */
3
#define  ILI9328    2  /* 0x9328 */
4
#define  ILI9331    3  /* 0x9331 */
5
#define  SSD1298    4  /* 0x8999 */
6
#define  SSD1289    5  /* 0x8989 */
7
#define  ST7781     6  /* 0x7783 */
8
#define  LGDP4531   7  /* 0x4531 */
9
#define  SPFD5408B  8  /* 0x5408 */
10
#define  R61505U    9  /* 0x1505 0x0505 */     
11
#define  HX8347D    10 /* 0x0047 */
12
#define  HX8347A    11 /* 0x0047 */  
13
#define  LGDP4535   12 /* 0x4535 */  
14
#define  SSD2119    13 /* 3.5 LCD 0x9919 */

Quelle: http://radiokot.ru/circuit/digital/home/174/01.txt

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren