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
Lesezeichen