' "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: ' http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=357 ' Anschlussbeschreibung: ' http://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 ' Only 240*64 supported yet Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8 'Dim variables (y not used) Dim X As Byte , Y As Byte '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 "Der Abstand ist in Graphic dargestellt" Print "" Wait 5 'Warte 5 Sekunden 'use the new LINE statement to create a box 'LINE(X0,Y0) - (X1,Y1), on/off Line(0 , 0) -(239 , 127) , 255 ' diagonal line Line(0 , 127) -(239 , 0) , 255 ' diagonal line Line(0 , 0) -(240 , 0) , 255 ' horizontal upper line Line(0 , 127) -(239 , 127) , 255 'horizontal lower line Line(0 , 0) -(0 , 127) , 255 ' vertical left line Line(239 , 0) -(239 , 127) , 255 ' vertical right line V = 0 Do Entfernung = Srf02_entfernung(srf02_slaveid) 'Addiert 1 hinzu For X = 0 To Entfernung Pset X , 20 , 255 ' set the pixel Next Incr V 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