Beim POLLIN gibt es für kleines Geld ein resistives Touchpanel zum Aufsetzen auf Displays.
Mit 10" etwas groß aber evtl eine Möglichkeit mit wenig Pinverbrauch auf analogem Weg eine
optisch anspruchsvolle und vor allem variable Tastatur zu schaffen.
Da kann man es kaufen: pollin.de/shop/dt/NDU4ODc4OTk-…SU_N010_0554_X122_01.html
Das Datenblatt dazu: pollin.de/shop/downloads/D121145D.PDF
Die Funktionsweise eines resistiven TouchsPads erklärt Wikipedia: de.wikipedia.org/wiki/Touchscreen#Resistive_Touchscreens
Unter das Pad kommt das mit Farbdrucker "gestaltete" Layout der Tastatur. In meinem Fall nichts Reales, soll ja nur ein Test sein.
Im LCD gibts jeweils die gemessenen Analogwerte, die daraus berechneten Zeilen- und Spalten sowie die in den DataZeilen versenkte Klartextbezeichnung der Taste.
In meinem Fall ist das eine Matrix mit 8 Spalten und 6 Zeilen
Für einen Test reicht das erst mal, ist also KEIN fertiges Projekt. Referenzspannung ist VCC, für die Stabilität der Referenz hab ich mir keine Mühe gegeben.
So wie es jetzt aussieht belegt das Programm ca. 2,5k im Speicher. Läßt sich sicher reduzieren wenn man auf die Klartextausgabe verzichtet oder die Texte im EEPROM versenkt
Wichtig ist nur die Analogeingänge mit einem 470k-Widerstand und einem 100nF-CerKo gegen Masse abzublocken.
Die Folie ist im nicht gedrückten Zustand erstaunlich hochohmig.
Alles anzeigen
IMG_9547.JPG
IMG_9539.JPG
IMG_9546.JPG
Mit 10" etwas groß aber evtl eine Möglichkeit mit wenig Pinverbrauch auf analogem Weg eine
optisch anspruchsvolle und vor allem variable Tastatur zu schaffen.
Da kann man es kaufen: pollin.de/shop/dt/NDU4ODc4OTk-…SU_N010_0554_X122_01.html
Das Datenblatt dazu: pollin.de/shop/downloads/D121145D.PDF
Die Funktionsweise eines resistiven TouchsPads erklärt Wikipedia: de.wikipedia.org/wiki/Touchscreen#Resistive_Touchscreens
Unter das Pad kommt das mit Farbdrucker "gestaltete" Layout der Tastatur. In meinem Fall nichts Reales, soll ja nur ein Test sein.
Im LCD gibts jeweils die gemessenen Analogwerte, die daraus berechneten Zeilen- und Spalten sowie die in den DataZeilen versenkte Klartextbezeichnung der Taste.
In meinem Fall ist das eine Matrix mit 8 Spalten und 6 Zeilen
Für einen Test reicht das erst mal, ist also KEIN fertiges Projekt. Referenzspannung ist VCC, für die Stabilität der Referenz hab ich mir keine Mühe gegeben.
So wie es jetzt aussieht belegt das Programm ca. 2,5k im Speicher. Läßt sich sicher reduzieren wenn man auf die Klartextausgabe verzichtet oder die Texte im EEPROM versenkt
Wichtig ist nur die Analogeingänge mit einem 470k-Widerstand und einem 100nF-CerKo gegen Masse abzublocken.
Die Folie ist im nicht gedrückten Zustand erstaunlich hochohmig.
Quellcode
- ' *****************************
- ' Stand 16.04.2017
- ' Auswertung des POLLIN Touchpads
- ' Touchscreen FUJITSU N010-0554-X122/01
- ' Datenblatt: http://www.pollin.de/shop/downloads/D121145D.PDF
- ' Pinbelegung ATMEGA8
- ' 1 = PC6 = RESET
- ' 2 = PD0
- ' 3 = PD1
- ' 4 = PD2
- ' 5 = PD3
- ' 6 = PD4
- ' 7 = VCC = (+5V)
- ' 8 = GND = GND
- ' 9 = PB6
- ' 10 = PB7
- ' 11 = PD5
- ' 12 = PD6
- ' 13 = PD7
- ' 14 = PB0 = LCD DB4
- ' 15 = PB1 = LCD DB5
- ' 16 = PB2 = LCD DB6
- ' 17 = PB3 = LCD DB7 = MOSI
- ' 18 = PB4 = LCD E = MISO
- ' 19 = PB5 = LCD RS = SCK
- ' 20 = AVCC = (+5V)
- ' 21 = AREF = (+5V)
- ' 22 = GND = GND
- ' 23 = PC0 = ADC0 und Touch UNTEN (Touch Pin 1 Bottom)
- ' 24 = PC1 = ADC1 und Touch LINKS (Touch Pin 2 Left)
- ' 25 = PC2 = Touch OBEN (Touch Pin 3 Top)
- ' 26 = PC3 = Touch RECHTS (Touch Pin 4 Right)
- ' 27 = PC4
- ' 28 = PC5
- '
- ' ACHTUNG ADC0 und ADC 1
- ' Zur Verminderung von Störungen jeweils ein 470k-Widerstand und 100nF
- ' parallel auf Masse legen.
- '
- ' ********************
- ' Fusebits
- ' unverändert
- ' ********************
- ' Compilerschalter
- $regfile "m8adef.dat"
- $crystal = 1000000
- $framesize = 32
- $swstack = 32
- $hwstack = 32
- ' *********************
- ' Deklaration Variablen
- Dim U_zeile As Integer ' ADC-Wert Zeile
- Dim U_spalte As Integer ' ADC-Wert Spalte
- Dim Mittelwert As Integer ' zur Mittelwertbildung
- Dim Spalte As Byte ' ausgewertete Spannung X-Achse
- Dim Zeile As Byte ' ausgewertete Spannung Y-Achse
- Dim Old_zeile As Byte ' nur zur Änderungserkennung
- Dim Old_spalte As Byte ' nur zur Änderungserkennung
- Dim Aenderung As Byte ' Änderungsflag
- Aenderung = 1 ' Initial
- Dim Tastentext As String * 8 ' Textbelegung der Tasten
- Dim Schleife As Byte ' Allgemeine Hilfsvariable
- Dim X As Byte ' Allgemeine Hilfsveriable
- Dim Y As Byte ' Allgemeine Hilfsvariable
- ' *********************
- ' Deklaration Eingõnge
- ' *********************
- ' Deklaration Ausgõnge
- ' *********************
- ' Deklaration LCD
- Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
- Config Lcd = 16 * 2
- Initlcd
- Cls
- ' **********************
- ' Deklaration ADC
- Config Adc = Single , Prescaler = Auto
- ' **********************
- ' Deklaration Interrupts
- ' **********************
- ' Hauptprogramm
- Hauptmenue:
- Do
- Gosub Oben_unten ' AD-Wert Y-Achse holen
- Gosub Links_rechts ' AD-Wert X-Achse holen
- Gosub Auswertung ' Spalten und Zeilen berechnen
- Gosub Textzuweisung ' Den Tasten einen Text zuweisen
- Gosub Ausgabe ' Auf LCD ausgeben
- Loop
- End
- ' **********************
- ' Auswertung Spalten (X-Achse)
- ' Touch LINKS und RECHTS mit Spannung belegen
- Links_rechts:
- Config Portc.1 = Output ' Touch LINKS
- Portc.1 = 0 ' auf GND legen
- Config Portc.3 = Output ' Touch RECHTS
- Portc.3 = 1 ' auf VCC legen
- Start Adc
- Mittelwert = 0 ' ADC auslesen, Mittelwert bilden
- For Schleife = 1 To 5
- U_spalte = Getadc(0)
- Mittelwert = Mittelwert + U_spalte
- Next
- U_spalte = Mittelwert / 5
- Stop Adc
- Portc.3 = 0 ' Ports wieder frei machen
- Config Portc.1 = Input ' hochohmiger Eingang
- Config Portc.3 = Input ' hochohmiger Eingang
- Return
- ' ********************
- ' Auswertung Zeilen (Y-Achse)
- ' Touch OBEN und UNTEN mit Spannung belegen
- Oben_unten:
- Config Portc.0 = Output ' Touch UNTEN
- Portc.0 = 0 ' auf GND legen
- Config Portc.2 = Output ' Touch OBEN
- Portc.2 = 1 ' auf VCC legen
- Start Adc
- Mittelwert = 0 ' ADC auslesen, Mittelwert bilden
- For Schleife = 1 To 5
- U_zeile = Getadc(1)
- Mittelwert = Mittelwert + U_zeile
- Next
- U_zeile = Mittelwert / 5
- Stop Adc
- Portc.2 = 0 ' Ports wieder frei machen
- Config Portc.0 = Input ' hochohmiger Eingang
- Config Portc.2 = Input ' hochohmiger Eingang
- Return
- ' *********************
- ' Ausgabe der berechneten Felder
- Ausgabe:
- If Aenderung = 1 Then ' Nur ausgeben wenn sich Spalten/Zeilen geõndert haben
- Aenderung = 0 ' Verhindert Geflimmere auf dem LCD
- Cls
- Locate 1 , 1
- Lcd "X"
- Lcd U_spalte
- Locate 1 , 8
- Lcd "Y"
- Lcd U_zeile
- Locate 2 , 1
- Lcd "S"
- Lcd Spalte
- Locate 2 , 4
- Lcd "Z"
- Lcd Zeile
- Locate 2 , 8
- Lcd Tastentext
- End If
- Return
- ' *******************
- ' Auswertung der Tasten
- Auswertung:
- Select Case U_spalte ' gemessene X-Werte einer Spalte zuweisen
- Case 095 To 156 : Spalte = 1
- Case 196 To 260 : Spalte = 2
- Case 298 To 361 : Spalte = 3
- Case 403 To 463 : Spalte = 4
- Case 500 To 570 : Spalte = 5
- Case 610 To 675 : Spalte = 6
- Case 715 To 780 : Spalte = 7
- Case 815 To 885 : Spalte = 8
- Case Else : Spalte = 0
- End Select
- Select Case U_zeile ' gemessene Y-Werte einer Zeile zuweisen
- Case 122 To 194 : Zeile = 1
- Case 246 To 324 : Zeile = 2
- Case 378 To 452 : Zeile = 3
- Case 510 To 585 : Zeile = 4
- Case 640 To 717 : Zeile = 5
- Case 773 To 850 : Zeile = 6
- Case Else : Zeile = 0
- End Select
- If Spalte <> Old_spalte Then ' ─nderungsflag nur f³r Anzeige
- Old_spalte = Spalte
- Aenderung = 1
- End If
- If Zeile <> Old_zeile Then
- Old_zeile = Zeile
- Aenderung = 1
- End If
- Return
- ' **********************
- ' Textinhalte der Tasten
- Textzuweisung:
- Restore Textdata ' Texte holen zur Anzeige
- If Zeile = 0 Or Spalte = 0 Then
- Rem Tastentext = " "
- Return
- End If
- Y = 8 * Zeile ' Anzahl Read┤s berechnen
- Y = Y - 8
- Y = Y + Spalte
- For X = 1 To Y
- Read Tastentext
- Next
- Return
- ' **********************
- ' Textinhalte der Tasten
- ' bei Speichermangel evtl. ins EEPROM auslagern
- Textdata:
- Data "F1" , "F2" , "F3" , "F4" , "F5" , "F6" , "F7" , "F8"
- Data "OK" , "OK" , "OK" , "OK" , "Infrarot" , "Infrarot" , "I2C" , "I2C"
- Data "0" , "," , "C" , "RECHTS" , "Servo" , "Servo" , "Umkehr" , "Dauer"
- Data "7" , "8" , "9" , "AB" , " " , " " , " " , " "
- Data "4" , "5" , "6" , "AUF" , " " , " " , " " , " "
- Data "1" , "2" , "3" , "LINKS" , " " , " " , " " , " "
IMG_9547.JPG
IMG_9539.JPG
IMG_9546.JPG