Kannst du mir vielleicht den Code für die Berechnung der x/y Kordinaten mal zukommen lassen?![]()
Kannst du mir vielleicht den Code für die Berechnung der x/y Kordinaten mal zukommen lassen?![]()
Dann stimmt der Umrechnungsfaktor nicht (Pixel / ADC Wert)Zitat von mex.de
Du musst erstmal die min/max Werte des ADC ermitteln, wo Dein LCD anfängt und wo es aufhört. Fängt es zum bsp. bei ADC Wert 70 an und hört bei 900 auf, musst Du das natürlich berücksichtigen.
Dein "Nullpunkt" zum Start Deiner Berechnung ist dementsprechend 70, Dein "Endpunkt" 900.
So hättest Du z.B. 830(ADC Wert) / 128(Pixel) = 6.48 (Faktor).
Heisst also das ein Pixel auf dem LCD dem ADC Wert 6.48 entspricht.
Ich hoffe ich hab da jetzt kein Denkfehler drin
Gruß
Jens
Hm... Ja so hatte ich mir das auch schon zusammen gebastelt aber das Resultat ist folgendes:
x,y(0,0)=0,0 Anzeige auf Display das sieht gut aus
x,y(240,12=238,127 das ist auch aktzeptabel
x,y(0,12=14,50 das nich ganz was ich erwartet habe
x,y(240,0)=150,34 das ist ebenfalls zu wenig
ich geh mal davon aus, dass das Touchpanel nicht linear ist oder es ist kaputt... auf jedenfall kann ich keine vernünftigen Pixel Koordinaten ermitteln.![]()
Auf LCD-Pixel hab ich noch nicht umgerechnet, nur soweit, das ich in der Ecke ca. auf 0,0 komme, der Rest ist immer noch vom ADC.
Evtl. könntest Du uns zeigen wie Du gerechnet hast, vllt. werden da mal ein paar Kommastellen verschluckt, denn wenn der max. Punkt passt, sollten die dazwischen auch in etwa stimmen.
Es gibt/gab hier mal nen Thread, da wurde das berechnet.
... da isser ja:
https://www.roboternetz.de/phpBB2/ze...ag.php?t=32952
Also ich hab mich ja auch an dem Code von dieser Seite orientiert:
https://www.roboternetz.de/phpBB2/ze...ag.php?t=32952
ich verwende lediglich einen Atmega 32 statt des 128...
ich habe sogar das gleiche Display (ledsee.com)... aber bei mir sieht es nicht so aus wie auf den Bildern im og. Beitrag...
Ich glaube eher, dass das Touchpanel kaputt ist... Schön wäre auch ein Datenblatt zum Touchpanel...
Poste doch mal Deinen Code. Ein Datenblatt zum Touch ist eigentlich unnötig, da es nur 4 Widerstände sind
H I E R sieht man die Beschaltung des AVR.
Gruß
Jens
meist funktionieren diese touch-teile mit einem 4-wire anschluss. von analog devices gibts sogar controler dafür welche über spi angesprochen werden können. das prinzip ist wie 2 variable spannungsteiler. einer für y und einer für x.
Die Denkweise der meisten Menschen ist vergleichbar mit einer Sicht durch ein Strohhalm.
Also der sieht genauso aus, nur mit angepassten Werten...
Hier mal Dein Code zum mitlesen (ohne download)
Code:$regfile = "m32def.dat" $crystal = 7372800 $hwstack = 100 $swstack = 75 $framesize = 40 Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Portd , Ce = 2 , Cd = 1 , Wr = 4 , Rd = 3 , Reset = 0 , Fs = 5 , Mode = 6 Config Sda = Portc.1 Config Scl = Portc.0 Config Adc = Single , Prescaler = Auto '****************** Variablen ******************************** Dim X As Word , Y As Word Dim X2 As Single , Y2 As Single Dim X3 As Single , Y3 As Single Dim X4 As Byte , Y4 As Byte Start Adc Cursor Off Cls Do Gosub Readtouch Locate 3 , 22 Lcd Y ; " analog Y " Locate 4 , 22 Lcd X ; " analog X " If Y > 170 Then Y3 = Y - 170 Y2 = Y3 / 1.89 Y4 = Y2 Else Y4 = 0 End If If X > 150 Then X3 = X - 150 X2 = X3 / 1.78 X4 = X2 Else X4 = 0 End If Locate 5 , 1 Lcd X4 ; " X" Locate 6 , 1 Lcd Y4 ; " Y" Pset X4 , Y4 , 255 Loop End Readtouch: Config Pina.0 = Output ' Makes port F.0 output Config Pina.2 = Output ' Makes port F.0 output Set Porta.0 ' Sets port F.0 High Reset Porta.2 ' Sets port F.2 Low Ddra.1 = 0 ' Sets port F.1 as input Ddra.3 = 0 ' Sets port F.1 as input because we need it now as ad input Waitms 20 ' Wait until the port is stable Y = Getadc(3) ' Read the ad value for the y Y = 1024 - Y ' Invert the reading Config Pina.1 = Output ' Makes port F.1 output Config Pina.3 = Output ' Makes port F.3 output Reset Porta.3 ' Sets port F.3 Low Set Porta.1 ' Sets port F.1 High Ddra.0 = 0 ' Sets port F.0 as input Ddra.2 = 0 ' Sets port F.2 as input because we need it now as ad input Waitms 20 ' Wait until the port is stable X = Getadc(2) ' Read the ad value for the x X = 1024 - X ' Invert the reading Return
Ohh... Danke, ich weiß nich wie man den Code hier zum mitlesen plottet
Ja Port A ist beim Atmega 32 der ADC Port... Muss ich denn JTAG ausschalten? in meinem Hauptprogramm hab ich das auch nicht gemacht und die Spannungs bzw. Strommessung funktioniert auch einwandfrei...
Wie schalte ich denn JTAG aus? Welchen Effekt hat das denn?
Lesezeichen