Zitat Zitat von zwanzischmark
habe eine Drucktastatur von Conrad mit 12 tasten das Funktioniert schon alles wunderbar mit dem AD-Port. Habe jetzt abstände von 10 bis 25 das sollte ja als sicherheit locker ausreichen. Den PCF8574 benutze ich auch schon 2mal um auf 24 Digitalports zu kommen und ein Display anzusteuern. Also ist eigentlich alles schon perfekt und funktioniert. Die sache mit dem höheren wert als 0 wenn nur masse Dran ist hatte ich auch bis ich gemerkt hab das mein widerstand einfach zu gross ist vor masse. Den hab ich jetzt auf 1,2k verkleinert und jetzt hab ich auch wirklich die 0

meine frage war eigentlich überflüssig wollte nur sichergehen

danke nochmal

mfg Paul
Hallo zwanzischmark,

du musst aufpassen mit den Eingängen. Du hast deswegen mehr als 0 weil entweder deine Masse nicht sauber ist. Dann zieh eine Leitung direkt vom GND-Pin der CC zur Tastatur oder dem Widerstand. Das andere was ich auch einmal festgestellt hatte als ich diese Spannungsleiter aufgebaut hatte war das mit den der im Applikation-Board angegebenen Werten der Analog-Pin sehr sensibel reagiert auf Magnetische Störfelder. D.h. er reagiert wie eine Antenne. Du kannst dir deinen AD-Port zum einen schützen durch eine 5V1-Z-Diode mit Anode an AD-In und Kathode an GND und zum andern deine Hochfrequenz oder Netzfrequenz etwas eliminieren indem du einen 10nF - 68nF MKT-Kondensator (rotes Kästchen) noch dazu parallel schaltest. Dann wird die Antennenfunktion die ja nicht erwünscht ist etwas unterbunden und es kommt nicht zu unwillkürlichen Tasterbetätigungen. Kannst auch noch einen Test machen wie ich es getan habe. Ich habe die Schaltung euf meinen Scanner gelegt. Der produziert beim Scannen ein sehr hohes elektrisches Störfeld durch die Lampe. Wenn es da OK ist hast du schon Gewissheit das es auch recht sauber entstört ist nach aussen.

Grüsse Wolfgnang

Anbei noch einen Code den ich einmal geschrieben hatte für ein Projekt. Das kann die Taster in der Art auswerten. Das ist bisschne Code aus meinem Projekt herausgeschnippelt. Hab den speziell fr ein Projekt geschrieben und genau die Werte für die Spannungsleiter verwendet die auch im Schaltplan des Applikationn-Boards verwendet werden.

Code:
'Tastennummern definieren
'------------------------
Define KeyStern         11
Define KeyKreuz         10
Define Key1             1
Define Key2             2
Define Key3             3
Define Key4             4
Define Key5             5
Define Key6             6
Define Key7             7
Define Key8             8
Define Key9             9
Define Key0             0
Define KeyNone          99

...

Define Tastatur       AD[1]        'Analog-Port der 10er-Tastatur
...

#ResetSystem
  Betrieb = On
  GoSub LCDReset                                                   'Das LC-Display initialisieren im 4-Bit Modus
  GoSub PotReset                                                   'Digitales Potentiometer rücksetzen auf Minimum
  GoSub GetTastatur
  Buzzer = On
  If KeyNr = Key1 Then Buzzer = Off
  KeyLock = On
  If KeyNr = Key2 Then KeyLock = Off
  GoSub SignalTon3
  Sys LcdCmd LcdClear
  Pause 1
  VarTextNr = TxtVersion1
  Sys LcdCmd Z1S1
  GoSub LCDWriteText
  VarTextNr = TxtVersion2
  Sys LcdCmd Z2S1
  GoSub LCDWriteText
  Pause 80
  Sys LcdCmd LcdClear
  Pause 1
  'Hochlauf-Meldung
  For ii = TxtBootUp1 + 8 To TxtBootUp1 Step -1
    Sys LcdCmd Z1S5
    VarTextNr = ii
    GoSub LCDWriteText
    Pause 4
  Next ii
  For ii = TxtBootUp2 + 12 To TxtBootUp2 Step -1
    Sys LcdCmd Z2S3
    VarTextNr = ii
    GoSub LCDWriteText
    Pause 4
  Next ii
  Pause 200
  Sys PotGoPos 50

#PasswortSchutz                                                    'Passwortschutz für das System
  If KeyLock = Off Then GoTo MenuAuswahl
  Sys LcdCmd LcdClear
  Pause 1
  Sys LcdCmd Z1S3
  VarTextNr = TxtPasswort
  GoSub LCDWriteText
  Sys LcdCmd Z2S5
  Sys LcdChar &H7E
  Sys LcdCmd Z2S12
  Sys LcdChar &H7F
  Stelle = 0
  GoSub SignalTon4

#PasswortNextOK
  Stelle = Stelle + 1
#PasswortNextOKWait1                                               'Auf Tastendruck warten
  If Tastatur < 245 Then GoTo PasswortNextOKWait1
#PasswortNextOKWait2
  Sys LcdCmd Z2S5
  If Second Mod 2 = 0 Then Sys LcdChar &H7E Else Sys LcdChar &H20
  Sys LcdCmd Z2S12
  If Second Mod 2 = 0 Then Sys LcdChar &H7F Else Sys LcdChar &H20
  Pause 2
  If Tastatur > 245 Then GoTo PasswortNextOKWait2
  GoSub GetTastatur
  Sys LcdCmd Z2S6 + Stelle                                         'Sternchen auf Display ausgeben
  Sys LcdChar xSt
  LookTab TabPasswort, Stelle, TempByte                            'Pasworteingabe prüfen auf richtige Eingabe
  If Stelle <= 4 And KeyNr = KeyKreuz Then GoTo PasswortSchutzError
  If Stelle > 4 And KeyNr = KeyKreuz Then GoTo PasswortOK
  If KeyNr = KeyStern Then GoTo PasswortSchutz
  If Stelle <= 4 And KeyNr <> TempByte Then GoTo PasswortNextError
  If Stelle > 4 Then GoTo PasswortOK                               'Maximale Anzahl von Stellen erreicht
  If TempByte = KeyNr Then GoTo PasswortNextOK                     'Richtige Eingabe
  GoTo PasswortNextError                                           'Falsche Eingabe

#PasswortNextError
  Stelle = Stelle + 1
#PasswortNextErrorWait1                                            'Auf Tastendruck warten
  If Tastatur < 245 Then GoTo PasswortNextErrorWait1
#PasswortNextErrorWait2
  Sys LcdCmd Z2S5
  If Second Mod 2 = 0 Then Sys LcdChar &H7E Else Sys LcdChar &H20
  Sys LcdCmd Z2S12
  If Second Mod 2 = 0 Then Sys LcdChar &H7F Else Sys LcdChar &H20
  Pause 2
  If Tastatur > 245 Then GoTo PasswortNextErrorWait2
  GoSub GetTastatur
  Sys LcdCmd Z2S6 + Stelle                                         'Sternchen auf Display ausgeben
  Sys LcdChar xSt
  If KeyNr = KeyKreuz Then GoTo PasswortSchutzError
  If KeyNr = KeyStern Then GoTo PasswortSchutz
  If Stelle <= 4 Then GoTo PasswortNextError
  If Stelle > 4 Then GoTo PasswortSchutzError                      'maximale Anzahl von Stellen erreicht
  GoTo PasswortNextError

#PasswortSchutzError
  Sys LcdCmd LcdClear
  Pause 1
  Sys LcdCmd Z2S3
  VarTextNr = TxtPasswortErr
  GoSub LCDWriteText
  Sys LcdCmd Z1S1
  VarTextNr = TxtSperre
  GoSub LCDWriteText
  Second = 0
#PasswortSchutzErrorWait
  TempByte = 20 - Second                                           'Count-Down für die System-Sperre
  Sys LcdCmd Z1S15
  GoSub LCDWriteCount8Bit
  Sys LcdChar x__
  If Second < 20 Then GoTo PasswortSchutzErrorWait
  GoTo PasswortSchutz

#PasswortOK                                                        'Passwort wurde richtig eingegeben
  Sys LcdCmd Z2S1                                                  'Meldung anzeigen für richtige Eingabe des Passworts
  VarTextNr = TxtPasswortOK
  GoSub LCDWriteText
  Pause 100                                                        'Eine Sekunde warten
  Sys LcdCmd LcdClear

#MenuAuswahl
  ProgrammNr = 1                                                   'Auf erstem Programm beginnen
#MenuAuswahlNeu
  Sys LcdCmd Z1S1                                                  'Auswahlmenü anzeigen
  VarTextNr = TxtAuswahl
  GoSub LCDWriteText

...


' Tastatur einlesen:
' ------------------
'   Die 10er-Tastatur einlesen und die gedrückte Taste decodieren als Zahlenwert
'   in eine Variable die nach Rückkehr aus diesem Unterprogramm direkt ausgewertet
'   werden kann. Ist keine gültige Taste gedrückt oder keine Taste gedrückt, wird
'   der Wert 99 zurückgeliefert

#WaitTastatur                                                      'Auf einen Tastendruck warten
  If Tastatur <= 245 Then GoTo WaitTastatur
#WaitTastaturX
  If Tastatur > 245 Then GoTo WaitTastaturX

#GetTastatur                                                       'Aktuell gedrückte Taste zurückliefern
  If Tastatur > 245 Then GoTo GetTastaturNoKey
  KeyNr = KeyNone
  For ii = 0 To 11                                                 'Eine Taste ist gedrückt
    LookTab TabKeyCodes, ii, TempByte                              'Tastencode ermitteln
    If Abs(Tastatur - TempByte) < 3 Then KeyNr = ii
  Next ii
  If KeyNr <> KeyNone Then GoSub SignalTon1                        'Signalton bei gültigem Tastendruck ausgeben
  Return

#GetTastaturNoKey                                                  'Keine Taste gedrückt
  KeyNr = KeyNone
  Return

...

'Tabelle mit den Tastaturwerten:
'-------------------------------
'  Die Mittelwerte der einzelnen Tasten mit einer Tolleranz von +/-3 Einheiten

Table TabKeyCodes
 '0   1   2   3   4   5   6   7   8   9   #   *
  153 173 90  0   193 111 23  215 132 46  68  236
TabEnd

'Tabelle Potiwerte
Table TabFreqPot
  '0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25
   100 100 100 100 95  91  86  82  77  73  68  64  59  55  50  45  41  36  32  27  23  18  14  9   5   0
TabEnd

'Tabelle für das Zugangs-Passwort
Table TabPasswort
  4 Key0 Key0 Key0 Key7
TabEnd