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
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.
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
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
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.
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?
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.
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).
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.
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.
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).
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.
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.