Skala om touch-skärm-värden till LCD-koordinater?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Skala om touch-skärm-värden till LCD-koordinater?

Inlägg av sneaky »

Jag sitter och leker med en liten 320x240 LCD med touchskärm kopplad till en PIC18F4550 och har stött på patrull. Efter många timmar så får jag äntligen ut värden från touch controllern (ADS7843) men nu vill jag ju koppla dessa värden till positionen på skärmen. Värdena jag får ut från skärmen är i runda slängar:
x-led: 30 -> 510 (vänster - höger)
y-led: 490 -> 270 (topp - botten)

Jag fick med lite kod från butiken och de gör såhär:

Kod: Markera allt

lx=((TP_X-220)/16);
ly=320-((TP_Y-400)/11);
Men... jag får inte ihop det riktigt. Petar man in värden i den uträkningen så får jag ju för x-axeln -12 -> 18 :humm:

Det är säkert mycket enklare än vad jag tror men jag har stirrat mig fullkomligt blind på det. Någon som har några tips?
Användarvisningsbild
bit96
Inlägg: 2526
Blev medlem: 3 september 2007, 10:04:29
Ort: Säffle

Re: Skala om touch-skärm-värden till LCD-koordinater?

Inlägg av bit96 »

Med de värden du får, och med heltalsberäkningar:
x_lcd=((x_touch-30)*2) /3
y_lcd=((y_touch-270)*109)/100

OBS. Det blir avrundningsfel på en pixel. Men den noggragnheten har man väl ändå inte på ett finger.
Använder du ett pekstift och vill ha pixelnoggrannhet krävs lite mer beräkningar.
Eventuellt kommer y_lcd upp och ner, men det fixar du lätt. :)

Edit: Stavfel.
Senast redigerad av bit96 13 september 2010, 21:58:48, redigerad totalt 1 gång.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Skala om touch-skärm-värden till LCD-koordinater?

Inlägg av sneaky »

Tackar för det, nu kommer jag närmare :) Men om jag får vara lite besvärlig, har du lust att förklara hur du kommer fram till siffrorna? När jag testade så ser jag att jag måste kalibrera värdena lite för att det ska bli mer exakt. Tragiskt att man kan glömma bort så mycket matematik när man inte räknat något mer avancerat än pytt-satsen på 15 år *suck*
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: Skala om touch-skärm-värden till LCD-koordinater?

Inlägg av victor_passe »

Du börjar med att dra bort det minsta värdet från din adc.
Ex:
y-led: 490 -> 270 (topp - botten)
Så y=adc-270

Nu kommer du få maximalt (490-270)=220 som värde men du vill ju ha 255(antar jag)
så multiplicera med 255 och dela med 220

Så hela formeln blir:
y=((adc-270)*255)/220)
Sedan kan man dela både 255 och 220 med tex 5, men jag tror inte programmet går snababre för det.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Skala om touch-skärm-värden till LCD-koordinater?

Inlägg av sneaky »

Tackar och bockar pojkar, nu är jag på rätt spår :) Inte så vidare värst exakt men jag tror att om jag tar några fler mätningar och drar ett medel på dem så blir det nog skapligt.

Nu måste jag bara försöka lista ut varför LCDn inte alltid initieras korrekt och varför signalen att man har tryckt på displayen inte längre fungerar. Varför skulle saker och ting bara fungera, det är väl dumt? :lol:
sir88alex
Inlägg: 113
Blev medlem: 18 juni 2011, 12:53:24

Re: Skala om touch-skärm-värden till LCD-koordinater?

Inlägg av sir88alex »

Varför skala med 255? Vill man inte skala gentemot antalet pixlar man har på displayen?

y-led: med y=adc-270 blir maximalt värde 220 som då borde motsvara pixel 240.

Alltså, y = ((adc-270)*240)/220)
Skriv svar