TFT-Touchscreen leicht verschoben

Gast #6869183
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
Angehängte Dateien:
Gast #6869223
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.
Gast #6870305
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
#6870709
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
Gast #6870839
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?
Gast #6870875
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.
Gast #6870894
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).
Gast #6870897
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.
Gast #6870928
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.
Gast #6871067
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).
Gast #6871118
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.

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