-         

Ergebnis 1 bis 5 von 5

Thema: 4-Wire Touchscreen Problem

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    35
    Beiträge
    318

    4-Wire Touchscreen Problem

    Anzeige

    Hallo zusammen,

    ich habe ein problem mit einem 4-Wire Touchscreen. Wenn ich folgenden Code benutze, dann kann ich den Touchscreen zwar auslesen, aber wenn ich mit einem Stift eine Linie von links nach rechts ziehe, dann wird aber eine Linie von rechts nach links gezeichnet. Und wenn ich eine Linie von oben nach unten ziehe, dann wird eine Linie von unten nach oben gezeichnet. Also quasi invertiert. Ich sitz grad irgendwie auf dem Schlauch. Angeschlossen ist der Touch über 100 Ohm Reihenwiderstände am Mega128 PF0 - PF3. Hier der Code:

    Code:
    $regfile = "m128def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 75
    $framesize = 40
    
    Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    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
    
    Locate 1 , 1 : Lcd "T6963 mit Touchscreen an ATMega128"
    Locate 3 , 1
    Lcd "Y-Koordinate analog: "
    Locate 4 , 1
    Lcd "X-Koordinate analog: "
    
    Do
     Gosub Readtouch
     Locate 3 , 22
     Lcd Y ; "  "
     Locate 4 , 22
     Lcd X ; "  "
    
     If Y > 330 Then
      Y3 = Y - 346
      Y2 = Y3 / 2.89
      Y4 = Y2
     Else
      Y4 = 0
     End If
    
     If X > 150 Then
      X3 = X - 160
      X2 = X3 / 2.78
      X4 = X2
     Else
      X4 = 0
     End If
    
     Locate 5 , 1
     Lcd X4 ; "  "
     Locate 6 , 1
     Lcd Y4 ; "  "
     Pset X4 , Y4 , 255
    Loop
    End
    
    
    
    
    Readtouch:
     Config Pinf.0 = Output                                     ' Makes port F.0 output
     Config Pinf.2 = Output                                     ' Makes port F.0 output
     Set Portf.0                                                ' Sets port F.0 High
     Reset Portf.2                                              ' Sets port F.2 Low
     Ddrf.1 = 0                                                 ' Sets port F.1 as input
     Ddrf.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 Pinf.1 = Output                                     ' Makes port F.1 output
     Config Pinf.3 = Output                                     ' Makes port F.3 output
     Reset Portf.3                                              ' Sets port F.3 Low
     Set Portf.1                                                ' Sets port F.1 High
     Ddrf.0 = 0                                                 ' Sets port F.0 as input
     Ddrf.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
    Kann mir jemand einen Tip geben, wie ich dieses Problem lösen könnte ?

    Danke und Gruß
    BlaueLed

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Du für beide Achsen ein "invert reading" drin stehen, also
    X = 1024 - X

    Ist das denn richtig?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    35
    Beiträge
    318
    Ich habe das X=1024 - x usw. mal entfernt. Bleibt der gleiche effekt, nur das das gezeichnete, verschoben ist. Ich habe den Touch angeschlossen wie hier:

    http://www.mcselec.com/index.php?opt...=189&Itemid=57

    Bis auf die Tatsache, das ich PF0 mit PF1 vertauscht habe, ist es genauso angeschlossen wie im Link. Wenn ich im Code aber PF0 und PF1 tausche, dann klappts auch nicht.

    Gruß
    BlauLed

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Welche Ausgabe auf dem LCD bekommst du nach deinem Readtouch, wenn du Ecken nacheinander abgehst?
    Also oben-links, oben-rechts, unten-rechts und unten-links.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    35
    Beiträge
    318
    hi,

    nach mehrmaligem messen und kopfschütteln, bin ich nun dahinter gekommen, weshalb der Code bei mir nicht funktioniert. Ich habe die Anschlüsse genau spiegelverkehrt angeschlossen. Im Code habe ich dann einfach alle eingänge invertiert und schon gehts. Danke für die Hilfe.

    Gruß BlaueLed

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •