Forum: Mikrocontroller und Digitale Elektronik TFT Touchpanel // Kalibrierdaten ermitteln und speichern


von Arduino (Gast)


Lesenswert?

Hallo! Benötige Eure Hilfe!

>>>http://www.waveshare.com/wiki/2.8inch_TFT_Touch_Shield<<<;


Wer kann mir von Euch sagen, was ich wie und wo machen muss, damit ich 
nicht bei jedem Einschalten das Panel neu kalibrieren muss.

Ich beziehe mich dabei auf das - ARDUINO DEMO -

Please use the stylus click the cross on the screen. The cross will 
always move until the screen adjustment is completed.



Vielen Dank im voraus - Gruß Klaus

von Arduino (Gast)


Lesenswert?


von G. H. (schufti)


Lesenswert?

offenbar benötigt man Kalibrierdaten
die sind beim Einschalten nicht da
diese werden durch den ersten Kalibriervorgang erzeugt

logisch wäre dann doch:
speicher die Daten ab, dann sind sie beim nächsten Start da.
Und die Tatsache, dass welche da sind kann man ausnützen um die 
Kalibrierung fortan zu überspringen.

von Arduino (Gast)


Lesenswert?

und wie geht das?


Gruß Klaus

von Sascha W. (sascha-w)


Lesenswert?

Arduino schrieb:
> und wie geht das?
In dem du dir mal das Programm anschaust. Die Kalibrierwerte werden ja 
wohl in irgendwelchen Variablen gespeichert, diese schreibst du nach der 
Kalibrierung in den EEProm. Beim Start musst du zuerst die Werte aus dem 
EEProm laden, und wenn die gültig sind rufst die Funktion zur 
Kalibrierung nicht auf.

Sascha

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mit einem alten resistiven Touchscreen mache ich das so:
Wenn beim Powerup eine bestimmte Taste gedrückt ist, startet die 
Kalibrierungsroutine:

* Alte Offsets und Skalierungen (wird unten erklärt) werden gelöscht, 
bzw. auf 1 gesetzt.
* Kurze Erklärung wird gezeigt und ein Kreuzchen auf X=0 und Y=0.
* User tippt aufs Kreuzchen und ich speichere die Koordinaten zwischen.
* Wieder kurze Erklärung und Kreuzchen wird auf X=Max und Y=Max gezeigt
* User tippt aufs Kreuzchen und Koordinaten werden gemerkt.

Die Werte vom ersten Tippen (0,0) sind Offsets, die Werte vom zweiten 
Tippen (YMax und XMax) sind Skalierungen. Beide Werte landen nun im 
EEPROM und werden in Zukunft von den gelieferten Touchkoordinaten 
abgezogen (die Offsets) aus den bekannten Werten des LCD (Höhe und 
Breite) werden durch dividieren Skalierungen hergestellt, damit YMax und 
XMax der Touchroutine gleich den YMax und XMax des Displays sind.

Kiste macht Neustart und liest die EEPROM Werte. Die normale 
Touchroutine liefert dann die Pixelwerte mit den Koordinaten meines LCD.

: Bearbeitet durch User
von Arduino (Gast)


Lesenswert?

Erst einmal vielen Dank! Vielleicht hast Du ja Lust, in den Quellcode zu 
schauen.

Gruß Klaus

von Sascha W. (sascha-w)


Lesenswert?

Arduino schrieb im Beitrag #4624140:
> Wenn Du das auch nicht kannst, dann antworte bitte nicht mehr auf meine
> Frage.
Können und wollen sind 2 Paar Schuhe, eine Komplettlösung wirst du hier 
nicht bekommen.
Wenn du nur fertiges zusammenstöpselst / kopierst und denkst das läuft 
dann Plug&Play dann wird das für dich wohl die falsche Plattform sein.

Sascha

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Arduino schrieb:
> Vielleicht hast Du ja Lust, in den Quellcode zu schauen.
Mit welchem Ziel?
Solltest nicht eher du in den Quellcode schauen und versuchen, zu 
verstehen, was da passiert? such einfach mal die Stelle im Quellcode, in 
der genau dieser Text ausgegeben wird. Und dann sieh dir an, was 
hinterher getan wird. Letztlich werden dann irgendwelche Kalibrierdaten 
in irgendwelche Speicherplätze geschrieben. Und genau dort fängt die 
Lösung deiner Aufgabe an.

Arduino schrieb:
> Wer kann mir von Euch sagen, was ich wie und wo machen muss, damit ich
> nicht bei jedem Einschalten das Panel neu kalibrieren muss.
Blöderweise wirst du genau das machen müssen, wenn du zur Konfiguration 
beliebige Panels an beliebige uC anschließen willst:
Beitrag "Touchpanel im laufenden Betrieb trennen"

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Arduino schrieb:
> Vielleicht hast Du ja Lust, in den Quellcode zu
> schauen.

Jo, habe ich heute mal gemacht. Das waren noch Zeiten :-) Das war eines 
von den Pollin Displays mit LC7981 Controller und ich hatte Glück, das 
bei meinem der Touchscreen ok war - viele Kunden haben da defekte 
bekommen.

von Arduino (Gast)


Lesenswert?

...ich habe mir die Werte von s_Touch nach der Zuweisung ausgeben 
lassen. Wenn ich diese Zahlen benutze funktioniert es trotzdem nicht. 
Hast du vielleicht nochmal ein Tipp für mich?  Danke - Klaus

von Alex R. (itaxel)


Lesenswert?

Zeig mal deinen Code damit man sieht wie du die Werte einsetzt.

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.