TobiasBlome
07.05.2009, 21:08
Hallo,
ich möchte den Ultraschallsensor SRF02 über RS232 ansteuern.
Dazu habe ich den Beispielcode benutzt und daich gerade keinen MEGA 32 da hatte, habe ich einen Mega8 genommen und den Software RS232 code von PA0 & PA1 auf PB0 & PB1 geändert...
leider wird bei mir nur die Sensorversion angezeigt und dann nix mehr...
wozu ist "V = 1" im code?
Tobias
'################################################# ##
'SRF02_rncontrol_rs232_beispiel.bas
'für
'RoboterNetz Board RN-CONTROL (ab Version 1.1)
'und das SRF02 Ultraschallmodul für Entfernungsmessung
'Datenblatt zu SRF02:
'https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=357
'Anschlussbeschreibung:
'https://www.roboternetz.de/wissen/index.php/Sensorarten
'Aufgabe:
' Gibt die Firmware-Version vom SRF02 aus und
' anschließend in einer Endlosschleife die
' Entfernung von Objekten in Zentimetern
' Die Entfernung wird 1 mal pro Sekunde über RS232
' ausgegeben
' Dieses Beispiel nutzt den RS232 Mode vom SRF02
' Um die Ergebnisse auch gleichzeitig an PC
' übermitteln zu können, wird in dem Beispiel eine
' zweite RS232 Schnittstelle per Software eingerichtet.
' Dadurch kann der Sensor (oder auch mehrere) bequem
' an der Steckklemme angeschlossen werden
'Autor: Frank (Roboternetz)
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######
Declare Function Srf02_firmware(byval Slaveid As Byte) As Byte
Declare Function Srf02_entfernung(byval Slaveid As Byte) As Integer
'$regfile = "m32def.dat"
'$framesize = 42
'$swstack = 42
'$hwstack = 42
'$crystal = 16000000 'Quarzfrequenz
$regfile = "m8def.dat" 'AT-Mega8
$crystal = 8000000 'Quarz: 8 MHz
$baud = 9600 'Normale Hardware RS232 (hier hängt PC dran)
Open "COMB.0:9600,8,N,2" For Output As #1 'Port PB0 wird als TX definiert
Open "COMB.1:9600,8,N,2" For Input As #2 'Port PB1 wird als RX definiert
Const Srf02_slaveid = 0 'Standard RS232 Slave ID von SRF02
Dim Entfernung As Integer
'Variable fehlte???:
Dim V As Byte
Wait 3 'Warte 3 Sekunden
Print "SRF02 RS232 Testprogramm von robotikhardware.de"
Print "SRF02 Ultraschall-Firmware Version:" ; Srf02_firmware(srf02_slaveid)
Print "PB0 wird TX und PB1 wird als RX genutzt"
V = 1
Do
Entfernung = Srf02_entfernung(srf02_slaveid)
Print "Entfernung:" ; Entfernung ; "cm"
Wait 1
Loop
End
'------------- Hilfsfunktionen für SRF02 ----------
Function Srf02_firmware(byval Slaveid As Byte) As Byte
Print #1 , Chr(slaveid) ; Chr(93);
Srf02_firmware = Waitkey(#2)
End Function
Function Srf02_entfernung(byval Slaveid As Byte) As Integer
Local Lob As Byte
Local Hib As Byte
Print #1 , Chr(slaveid) ; Chr(84); 'Messvorgang in cm starten
Inputbin #2 , Hib , Lob 'Warte auf Ergebnis
Srf02_entfernung = Makeint(lob , Hib)
End Function
ich möchte den Ultraschallsensor SRF02 über RS232 ansteuern.
Dazu habe ich den Beispielcode benutzt und daich gerade keinen MEGA 32 da hatte, habe ich einen Mega8 genommen und den Software RS232 code von PA0 & PA1 auf PB0 & PB1 geändert...
leider wird bei mir nur die Sensorversion angezeigt und dann nix mehr...
wozu ist "V = 1" im code?
Tobias
'################################################# ##
'SRF02_rncontrol_rs232_beispiel.bas
'für
'RoboterNetz Board RN-CONTROL (ab Version 1.1)
'und das SRF02 Ultraschallmodul für Entfernungsmessung
'Datenblatt zu SRF02:
'https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=357
'Anschlussbeschreibung:
'https://www.roboternetz.de/wissen/index.php/Sensorarten
'Aufgabe:
' Gibt die Firmware-Version vom SRF02 aus und
' anschließend in einer Endlosschleife die
' Entfernung von Objekten in Zentimetern
' Die Entfernung wird 1 mal pro Sekunde über RS232
' ausgegeben
' Dieses Beispiel nutzt den RS232 Mode vom SRF02
' Um die Ergebnisse auch gleichzeitig an PC
' übermitteln zu können, wird in dem Beispiel eine
' zweite RS232 Schnittstelle per Software eingerichtet.
' Dadurch kann der Sensor (oder auch mehrere) bequem
' an der Steckklemme angeschlossen werden
'Autor: Frank (Roboternetz)
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######
Declare Function Srf02_firmware(byval Slaveid As Byte) As Byte
Declare Function Srf02_entfernung(byval Slaveid As Byte) As Integer
'$regfile = "m32def.dat"
'$framesize = 42
'$swstack = 42
'$hwstack = 42
'$crystal = 16000000 'Quarzfrequenz
$regfile = "m8def.dat" 'AT-Mega8
$crystal = 8000000 'Quarz: 8 MHz
$baud = 9600 'Normale Hardware RS232 (hier hängt PC dran)
Open "COMB.0:9600,8,N,2" For Output As #1 'Port PB0 wird als TX definiert
Open "COMB.1:9600,8,N,2" For Input As #2 'Port PB1 wird als RX definiert
Const Srf02_slaveid = 0 'Standard RS232 Slave ID von SRF02
Dim Entfernung As Integer
'Variable fehlte???:
Dim V As Byte
Wait 3 'Warte 3 Sekunden
Print "SRF02 RS232 Testprogramm von robotikhardware.de"
Print "SRF02 Ultraschall-Firmware Version:" ; Srf02_firmware(srf02_slaveid)
Print "PB0 wird TX und PB1 wird als RX genutzt"
V = 1
Do
Entfernung = Srf02_entfernung(srf02_slaveid)
Print "Entfernung:" ; Entfernung ; "cm"
Wait 1
Loop
End
'------------- Hilfsfunktionen für SRF02 ----------
Function Srf02_firmware(byval Slaveid As Byte) As Byte
Print #1 , Chr(slaveid) ; Chr(93);
Srf02_firmware = Waitkey(#2)
End Function
Function Srf02_entfernung(byval Slaveid As Byte) As Integer
Local Lob As Byte
Local Hib As Byte
Print #1 , Chr(slaveid) ; Chr(84); 'Messvorgang in cm starten
Inputbin #2 , Hib , Lob 'Warte auf Ergebnis
Srf02_entfernung = Makeint(lob , Hib)
End Function