TFT-Touchscreen leicht verschoben

Gast #6869183
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
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
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
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 #6870780
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.
Gast #6870839
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
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.