Forum: Mikrocontroller und Digitale Elektronik Programm für den Sensor SRF02


von Houssem (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab einen Entfernungssensor der Art SRF02 gekauft und will ihn so 
programmieren dass er die messwerte in abhängigkeit der Zeit ausgibt. 
ich hab versucht zu programmieren aber weil ich leider nie in Bascom 
programmiert hab scheint mein Programm falsch zu sein.
wenn jemand Ahnung hat bitte ich um Hilfe ich brauche das Programm so 
schnell wie möglich. danke.

von Houssem (Gast)


Lesenswert?

hier ist das Programm vom Hersteller, das vom mir geändert wurde.


' "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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.