[IN]Crusher
12.04.2006, 01:27
Hallo!
Ich bin mit meinem roboter nun soweit, dass ich die entfernungsmessung in angriff nehme...
ich habe einen srf08 an meine rn.control 1.4 angeschlossen.
ich habe folgendes programm geschrieben:
'################################################# ##############################
'# #
'# entfernung_1.bas #
'# #
'# Aufgabe: Messen von Entfernungen via SRF08 #
'# #
'################################################# ##############################
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Const Sf08_adr_0 = &HE0 ' I2C Adresse
Const Sf08_c_range = 100 ' Reichweite
Const Sf08_c_gain = 1 'Empfindlichkeit
Const Sf08_adr_0_read = &HE1
Dim Lsb As Byte
Dim Msb As Byte
Dim Ival As Word
Declare Sub Entfernung()
Declare Function Tastenabfrage() As Byte
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
Do
I2cinit
'################################################# ##############################
'# Setzten des Range Wertes #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 2
I2cwbyte Sf08_c_range
I2cstop
'################################################# ##############################
'# Setzten des Gain Wertes #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 1
I2cwbyte Sf08_c_gain
I2cstop
'################################################# ##############################
'# Messung auslösen #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 0
I2cwbyte 81
Waitms 70
'################################################# ##############################
'# Ergebnis abholen #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 2
I2cstart
I2cwbyte Sf08_adr_0_read
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
Ival = Makeint(lsb , Msb)
'################################################# ##############################
'# Ergebnis abholen #
'################################################# ##############################
Print "Die Entfernung beträgt" ; Ival ; "Meter."
Loop
End
jedoch gibt es mir immer nur 65535 Meter als Entfernung und so groß is mein zimmer nun wirklich nich...
;-)
außerdem blinkt die ganze zeit led2. ist das normal?!?
P.S.: Habe grade festgestellt: 1mal wird mir eine entfernung zurückgegeben. direkt nach einem reset und dann kommt die 65535...
MfG JÜrgen
Ich bin mit meinem roboter nun soweit, dass ich die entfernungsmessung in angriff nehme...
ich habe einen srf08 an meine rn.control 1.4 angeschlossen.
ich habe folgendes programm geschrieben:
'################################################# ##############################
'# #
'# entfernung_1.bas #
'# #
'# Aufgabe: Messen von Entfernungen via SRF08 #
'# #
'################################################# ##############################
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Const Sf08_adr_0 = &HE0 ' I2C Adresse
Const Sf08_c_range = 100 ' Reichweite
Const Sf08_c_gain = 1 'Empfindlichkeit
Const Sf08_adr_0_read = &HE1
Dim Lsb As Byte
Dim Msb As Byte
Dim Ival As Word
Declare Sub Entfernung()
Declare Function Tastenabfrage() As Byte
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
Do
I2cinit
'################################################# ##############################
'# Setzten des Range Wertes #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 2
I2cwbyte Sf08_c_range
I2cstop
'################################################# ##############################
'# Setzten des Gain Wertes #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 1
I2cwbyte Sf08_c_gain
I2cstop
'################################################# ##############################
'# Messung auslösen #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 0
I2cwbyte 81
Waitms 70
'################################################# ##############################
'# Ergebnis abholen #
'################################################# ##############################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 2
I2cstart
I2cwbyte Sf08_adr_0_read
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
Ival = Makeint(lsb , Msb)
'################################################# ##############################
'# Ergebnis abholen #
'################################################# ##############################
Print "Die Entfernung beträgt" ; Ival ; "Meter."
Loop
End
jedoch gibt es mir immer nur 65535 Meter als Entfernung und so groß is mein zimmer nun wirklich nich...
;-)
außerdem blinkt die ganze zeit led2. ist das normal?!?
P.S.: Habe grade festgestellt: 1mal wird mir eine entfernung zurückgegeben. direkt nach einem reset und dann kommt die 65535...
MfG JÜrgen