hallo

hier habe ich das programm mal:


Code:
' ------------- Hier die üblichen RN-Control Anweisungen --------------
$regfile = "m8def.dat"
$hwstack = 32
$framesize = 16
$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

' ------------- Ende der üblichen RN-Control Anweisungen --------------




Config Portc = &B11111111
Config Portb = &B11111111
Config Adc = Single , Prescaler = Auto , Reference = Avcc   ' Adc einstellen
Config Scl = Portc.5                                        'Ports fuer IIC-Bus
Config Sda = Portc.4
Const Rnkeylcd_slaveid_write = &H40                         'I2C SlaveAdresse
Const Rnkeylcd_slaveid_read = &H41

Dim Stemp As String * 100
Dim Taste As Word
Dim A As Word
Dim K As Word
Dim L As Word
Dim B As Single
Dim C As Single
Dim E As Single


Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Declare Sub Rnlcd_cr()
Declare Function Rnlcd_getscan() As Word
Declare Sub Rnlcd_scanmodus(byval Ein As Byte)              'Tastenscanmodus ein und ausschalten


waitms 20
I2cinit
Start Adc

Do
Rnlcd_clr
A = Getadc(0)
Rnlcd_cursor 7 , 1                                          
Stemp = "" + Str(A)
Rnlcd Stemp
Rnlcd_cr

Waitms 60
Loop

End


'--------------------------------------------------------------
'Einige spezielle I2C.Befehle für RN-KeyLCD als Funktion definiert:

Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)       'Cursor setzen
Local Befehle As String * 4
  Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
  I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub

Sub Rnlcd_clr()                                             'LCD löschen
Local Befehle As String * 2
  Befehle = Chr(12)
  I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub

Sub Rnlcd_cr()                                              'LCD Zeilenvorschub
Local Befehle As String * 2
  Befehle = Chr(13) + Chr(10)
  I2csend Rnkeylcd_slaveid_write , Befehle , 2
End Sub

Sub Rnlcd(byval Text As String)                             'Eine Art Print Befehl zum Ausgeben von Text
Local Le As Word
  Le = Len(text)
  I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub

Function Rnlcd_getscan() As Word                            'Scancode als Word abfragen
Local Lscan As Byte
Local Hscan As Byte


  I2cstart
  I2cwbyte Rnkeylcd_slaveid_read
  I2crbyte Lscan , Ack
  I2crbyte Hscan , Nack
  I2cstop

  If Hscan.7 = 1 Then                                       'AScii Modus
     Rnlcd_getscan = Lscan
  Else
     Rnlcd_getscan = Hscan * 256
     Rnlcd_getscan = Rnlcd_getscan + Lscan
  End If
End Function

Sub Rnlcd_scanmodus(byval Ein As Byte)                      'Tastenscanmodus ein und ausschalten
Local Befehle As String * 3
  Befehle = Chr(27) + Chr(119) + Chr(ein)
  I2csend Rnkeylcd_slaveid_write , Befehle , 3
End Sub
Das Hinderniss war bei der Messung gleich weit entfernt
Glaube es waren ca.6cm.

Morgen probiere ich das mit einer genauen cm vorgabe aus.

Ich denke mal der hat 10 bit aber ich die auflösung beträgt 1024 hoffe das ich hier nichts falsches sage .

Naja vielleicht muss ich das ganze ja auf die interne Reference Spannung machen, habe die AVCC Spannung im moment drin das sind 5Volt.

gruß
patrick