houhou24
23.06.2013, 21:10
Hallo an Alle.
ich hab ein Entfernungssensor SRF02 der Abstand von einem Gegenstand 60 mal misst es funktioniert einwandfrei und die Messwerte werden im Terminal emulator von Bascom ausgegeben als analoge werte untereinander. mein Problem ist dass ich die Messwerte als Grafik ausgeben will und dass die Geschwindigkeit ausgerechnet und auch in Grafik ausgegeben wird. d.h das Programm muss irgendwie umgeschrieben werden, ich werde dankbar sein wenn eine/er mir das Problem löst und das Programm so umschreibt dass mann nach der Messung die Zwei Grafik rausbekommt. vielen dank.
Hier ist das Programm:
'################################################# ######
' "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"
'################################################# ######
'Dieses Programm wurde Teils aus dem oben genannten Original-Programms übernommen,
'das vom Herrausgeber mitgeschickt wurde.
'
'Dies ist ein Programm einer Enfernungsmessung.
'Die Messung wird mit Hilfe des Sensors SRF02 durchgeführt.
'Zur Einsicht der Messdaten wurde die serielle Schnittstelle RS232 verwendet.
'Desweiteren werden alle Messdaten, die über RS232 empfangen werden, ohne Einheit
'und ohne sonstigen Angaben herrausgegeben.
'Das Messergebnis entspricht aber der Einheit "cm",
'sowie der Zeitabstand, zwischen den Messungen, 0,2 Sekunden beträgt.
'################################################# ######
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
$baud = 9600 'Normale Hardware RS232 (hier hängt PC dran)
Open "COMA.0:9600,8,N,2" For Output As #1 'Port PA0 wird als TX definiert
Open "COMA.1:9600,8,N,2" For Input As #2 'Port PA1 wird als RX definiert
Const Srf02_slaveid = 0 'Standard RS232 Slave ID von SRF02
Dim Entfernung As Integer
Dim V As Byte 'Gibt die Anzahl der Messungen an
Wait 3
Print ""
Print ""
Print "SRF02 RS232 Entfernungsmessung"
Print "SRF02 Ultraschall-Firmware Version:" ; Srf02_firmware(srf02_slaveid)
Print "PA0 wird TX und PA1 wird als RX genutzt"
Print "Zeitabstand zwischen den Messungen beträgt 0.2 Sekunden"
Print ""
Print ""
Wait 5 'Warte 5 Sekunden
V = 0
Do
Entfernung = Srf02_entfernung(srf02_slaveid)
Incr V 'Addiert 1 hinzu
Print "Entfernung:" ; Entfernung ; "cm"
Waitms 200 'Wartezeit bis zur nächsten Messung
Loop Until V = 60 'Anzahl der Messungen
Wait 2
Print ""
Print ""
Print "Zur erneuten Messung bitte den Reset-Taster auf dem Controllerboard betätigen"
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 hab ein Entfernungssensor SRF02 der Abstand von einem Gegenstand 60 mal misst es funktioniert einwandfrei und die Messwerte werden im Terminal emulator von Bascom ausgegeben als analoge werte untereinander. mein Problem ist dass ich die Messwerte als Grafik ausgeben will und dass die Geschwindigkeit ausgerechnet und auch in Grafik ausgegeben wird. d.h das Programm muss irgendwie umgeschrieben werden, ich werde dankbar sein wenn eine/er mir das Problem löst und das Programm so umschreibt dass mann nach der Messung die Zwei Grafik rausbekommt. vielen dank.
Hier ist das Programm:
'################################################# ######
' "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"
'################################################# ######
'Dieses Programm wurde Teils aus dem oben genannten Original-Programms übernommen,
'das vom Herrausgeber mitgeschickt wurde.
'
'Dies ist ein Programm einer Enfernungsmessung.
'Die Messung wird mit Hilfe des Sensors SRF02 durchgeführt.
'Zur Einsicht der Messdaten wurde die serielle Schnittstelle RS232 verwendet.
'Desweiteren werden alle Messdaten, die über RS232 empfangen werden, ohne Einheit
'und ohne sonstigen Angaben herrausgegeben.
'Das Messergebnis entspricht aber der Einheit "cm",
'sowie der Zeitabstand, zwischen den Messungen, 0,2 Sekunden beträgt.
'################################################# ######
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
$baud = 9600 'Normale Hardware RS232 (hier hängt PC dran)
Open "COMA.0:9600,8,N,2" For Output As #1 'Port PA0 wird als TX definiert
Open "COMA.1:9600,8,N,2" For Input As #2 'Port PA1 wird als RX definiert
Const Srf02_slaveid = 0 'Standard RS232 Slave ID von SRF02
Dim Entfernung As Integer
Dim V As Byte 'Gibt die Anzahl der Messungen an
Wait 3
Print ""
Print ""
Print "SRF02 RS232 Entfernungsmessung"
Print "SRF02 Ultraschall-Firmware Version:" ; Srf02_firmware(srf02_slaveid)
Print "PA0 wird TX und PA1 wird als RX genutzt"
Print "Zeitabstand zwischen den Messungen beträgt 0.2 Sekunden"
Print ""
Print ""
Wait 5 'Warte 5 Sekunden
V = 0
Do
Entfernung = Srf02_entfernung(srf02_slaveid)
Incr V 'Addiert 1 hinzu
Print "Entfernung:" ; Entfernung ; "cm"
Waitms 200 'Wartezeit bis zur nächsten Messung
Loop Until V = 60 'Anzahl der Messungen
Wait 2
Print ""
Print ""
Print "Zur erneuten Messung bitte den Reset-Taster auf dem Controllerboard betätigen"
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