Forum: Mikrocontroller und Digitale Elektronik TFT-Touchscreen leicht verschoben


von F.Berger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich mußte an einem kleinen Steuerteil mit Arduino den TFT-Touchscreen
(2,8" TFT SPI 240x320) tauschen weil mechan. zerstört.
Das alte defekte hatte hatte nach der Bezeichnung den Zusatz Ver.1.2,
das neue hat das nicht.

Es funktioniert praktisch alles wie immer, nur ist jetzt der Druckpunkt
bei allen 13 Feldern etwas nach links versetzt. Wird mittig in ein Feld
getastet wird der Wert vom rechten Nachbarfeld erkannt und das bei allen
Feldern.

_________________
|     |     |     |
|  1  |  2  |  3  |
|     |     |     |
-------------------
|     |     |     |
|  4  |  5  |  6  |
|     |     |     |
-------------------
|     |     |     |
|  7  |  8  |  9  |
|     |     |     |
-------------------  -------
|     |     |     |  |     |
|  .  |  0  | Del |  | Set |
|     |     |     |  |     |
-------------------  -------

So sieht das Gebilde aus.
Ich bin nun nicht der Programierer und würde gern wissen welcher 
zentrale
Parameter im Code den Focus wieder in die Mitte jedes Feldes setzt.
Wer kann mir mal eine Hilfestellung geben?
Danke und Grüße Frank

von Stefan F. (Gast)


Lesenswert?

Offenbar ist das nicht als konfigurierbar vorgesehen. Überall, wo die 
Werte von x und y mit Konstanten verglichen werden, müsstest du die 
Zahlen ändern.

Die Funktion readTouchScreen() gibt auf dem seriellen Port die aktuellen 
Werte vom Sensor aus.

von F.Berger (Gast)


Lesenswert?

Hallo Stefan,

auch wenn es nerft, gib mir doch mal bitte ein Beispiel für die "1".
Wie wird denn der mittige Druckpunkt ermittelt? Wird das auf Pixel 
bezogen?
Ich meine der richtige Druckpunkt müsste bei allen Feldern ca. 2mm nach 
rechts
verschoben werden.
Ich wills ja nur verstehen und wenn ich es nicht hin bekomme versuche 
ich
wieder ein passendes Display zu finden mit dem Zusatz Ver.1.2.
Grüße Frank

von Sascha W. (sascha-w)


Lesenswert?

Hallo Frank,

dürfte wohl ein resistiver Touch sein, da kann man nicht unbedingt davon 
ausgehen das ein Austauschteil egal welche HW-Version exakt die selben 
Werte liefert. Da hier offenbar kein Softwareteil zur Kalibrierung 
vorgesehen ist, kannst du höchstens in der Funktion readTouchScreen() 
einen Offset zu X bzw. Y addieren/subtrahieren um die Koordinaten dahin 
zu schieben wo du gedrückt hast. Wenn die Abweichung über die gesamte 
Breite/Höhe etwa gleich ist klappt das so.

Sascha

von Stefan F. (Gast)


Lesenswert?

F.Berger schrieb:
> auch wenn es nerft, gib mir doch mal bitte ein Beispiel für die "1".
> Wie wird denn der mittige Druckpunkt ermittelt

Drücke drauf und schau dir die Koordinaten an, die das Programm auf dem 
seriellen port ausgibt.

von M.M.M (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Offenbar ist das nicht als konfigurierbar vorgesehen. Überall, wo die
> Werte von x und y mit Konstanten verglichen werden, müsstest du die
> Zahlen ändern.
>
> Die Funktion readTouchScreen() gibt auf dem seriellen Port die aktuellen
> Werte vom Sensor aus.

Und warum nicht, wie Sacha schrieb, nach Einlesen zum x einen Offset 
addieren?

von Stefan F. (Gast)


Lesenswert?

M.M.M schrieb:
> Und warum nicht, wie Sacha schrieb, nach Einlesen zum x einen Offset
> addieren?

Weil die Abweichung vielleicht aus mehr als nur einem einfachen Offset 
besteht. Die konkreten Zahlen der seriellen Ausgabe würden das zeigen. 
Ich habe darauf keinen Zugriff.

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Offenbar ist das nicht als konfigurierbar vorgesehen. Überall, wo die
> Werte von x und y mit Konstanten verglichen werden, müsstest du die
> Zahlen ändern.

Unsinn.

Es reicht in readTouchScreen() an zentraler Stelle die ermittelten Wert 
x und y vor der Rückkehr aus der Funktion passend zu korrigieren (z.B. 
durch einen Offset für x).

von Stefan F. (Gast)


Lesenswert?

Ich äußere mich erst wieder dazu, wenn ich die konkreten Werte kenne. 
Ich habe nämlich keine Lust auf Streitgespräche auf Basis von 
Vermutungen. Drängt jemand anderen in die Ecke, ich habe besseres zu 
tun.

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich äußere mich erst wieder dazu, wenn ich die konkreten Werte kenne.

Ein konstanter Versatz nach links bedeutet einen Offset in X-Richtung. 
Was gibt es da zu deuteln?
Wären Y betroffen, würde nicht ausschließlich eine seitliche 
Verschiebung auftreten. Wäre die Skalierung falsch, wäre der Versatz 
nicht konstant.

F.Berger schrieb:
> nur ist jetzt der Druckpunkt bei allen 13 Feldern etwas nach links
> versetzt. Wird mittig in ein Feld getastet wird der Wert vom rechten
> Nachbarfeld erkannt und das bei allen Feldern.

von Sigi (Gast)


Lesenswert?

Das Beste ist wohl, das Programm so abzuändern,
dass je Tastenmittelpunkt jeweils die Bildschirm-
als auch die Touchscreen-Position auszugeben.
Mit den Koordinaten kann man dann (oder sollte)
relativ leicht die Transformation bestimmen
können (idR linear, evtl. leicht verzehrt aber
noch handelbar).

von Wolfgang (Gast)


Lesenswert?

Sigi schrieb:
> Das Beste ist wohl, das Programm so abzuändern,
> dass je Tastenmittelpunkt jeweils die Bildschirm-
> als auch die Touchscreen-Position auszugeben.

Wozu der Zirkus?
Die erkannte Touch-Position wird bereits über die serielle Schnittstelle 
ausgegeben und die Tastenkoordinaten auf dem Bildschirm kann man direkt 
in setVoltageKeypad() nachlesen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.