Witam!
Mam wyświetlacz graficzny i touchpanel rezystancyjny zamontowany na nim.
Odczyt współrzędnych i ich przeliczanie to nie żaden problem, ale trudności pojawiają się w innym miejscu. mianowicie napisałem sobie prosty program (w bascom, bo niestety znalezione przez mnie biblioteki w C do t6963c działają strasznie wolno z wyświetlaczem 240*128, a na razie nie mam czasu żeby je przyspieszyć, a te z bascoma spisują się nadpodziw dobrze, ale to inna sprawa), prosty program, który pozwala rysować po ekranie. Przy względnie silniejszym naciskaniu rysika wszystko jest OK, ale gdy rysik przyciśnie się słabiej do Touchpanelu to wtedy piksele pojawiają się nie tylko w miejscu dotyku, ale także w dość dużej odległości od niego (2-5cm)
I teraz moje pytanie brzmi tak, czy istnieje jakiś algorytm eliminujący takie błędy?
Z góry dziękuję za odpowiedzi i naprowadzenie na jakąś skuteczną metodę poradzenia sobie z tym problemem
Mam wyświetlacz graficzny i touchpanel rezystancyjny zamontowany na nim.
Odczyt współrzędnych i ich przeliczanie to nie żaden problem, ale trudności pojawiają się w innym miejscu. mianowicie napisałem sobie prosty program (w bascom, bo niestety znalezione przez mnie biblioteki w C do t6963c działają strasznie wolno z wyświetlaczem 240*128, a na razie nie mam czasu żeby je przyspieszyć, a te z bascoma spisują się nadpodziw dobrze, ale to inna sprawa), prosty program, który pozwala rysować po ekranie. Przy względnie silniejszym naciskaniu rysika wszystko jest OK, ale gdy rysik przyciśnie się słabiej do Touchpanelu to wtedy piksele pojawiają się nie tylko w miejscu dotyku, ale także w dość dużej odległości od niego (2-5cm)
I teraz moje pytanie brzmi tak, czy istnieje jakiś algorytm eliminujący takie błędy?
Z góry dziękuję za odpowiedzi i naprowadzenie na jakąś skuteczną metodę poradzenia sobie z tym problemem
$regfile = "m644pdef.dat"
$crystal = 16000000
$lib "glcd.lib"
Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Portc , Ce = 7 , Cd = 6 , Wr = 5 , Rd = 4 , Reset = 3 , Fs = 2 , Mode = 6
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim X As Word , Y As Word , Xt As Single , Yt As Single
Cls
'Locate 1 , 1
'Lcd "Touch Panel Test"
Box(11 , 6) -(43 , 24) , 255
Cursor Off Noblink
Left_pin Alias Pina.0
Left_port Alias Porta.0
Right_pin Alias Pina.2
Right_port Alias Porta.2
Bottom_pin Alias Pina.1
Bottom_port Alias Porta.1
Top_pin Alias Pina.3
Top_port Alias Porta.3
Do
'Waitms 250
Config Left_pin = Output
Config Right_pin = Output
Config Top_pin = Input
Config Bottom_pin = Input
Top_port = 1
Bottom_port = 1
Left_port = 0
Right_port = 1
Waitms 6
Y = Getadc(1)
Yt = Y - 200
Yt = Yt / 2.83333333333
Y = Yt
Config Left_pin = Input
Config Right_pin = Input
Config Top_pin = Output
Config Bottom_pin = Output
Left_port = 1
Right_port = 1
Top_port = 0
Bottom_port = 1
Waitms 6
X = Getadc(0)
Xt = X - 330
Xt = Xt / 3.4375
X = Xt
If Y >= 0 And Y <= 239 And X >= 0 And X <= 127 Then
Locate 2 , 3
Lcd "Y:"
If Y < 10 Then Lcd "0"
If Y < 100 Then Lcd "0"
Lcd Y
Locate 3 , 3
Lcd "X:"
If X < 10 Then Lcd "0"
If X < 100 Then Lcd "0"
Lcd X
Pset Y , X , 255
Else
Locate 2 , 3
Lcd "Y:N/A"
Locate 3 , 3
Lcd "X:N/A"
End If
If Y > 11 And Y < 43 And X > 6 And X < 24 Then
Cls
'Locate 1 , 1
'Lcd "Touch Panel Test"
Box(11 , 6) -(43 , 24) , 255
End If
Loop
End