hallo
hier habe ich das programm mal:
Das Hinderniss war bei der Messung gleich weit entferntCode:' ------------- 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
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







Zitieren

Lesezeichen