- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: SRF02 über RS232 Beispielcode ohne Funktion?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    SRF02 über RS232 Beispielcode ohne Funktion?

    Anzeige

    Praxistest und DIY Projekte
    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

    Code:
    '###################################################
    '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
    ...

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    tja
    ich habe mal:

    $framesize = 42
    $swstack = 42
    $hwstack = 42

    eingefügt und es läuft war ja zu vor auch drinn nur ich hab´s mir dem andere µC rausgenommen...warum ist es denn soo wichtig?

    Tobias
    ...

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    In dem Programm ist eine Funktion:
    Declare Function Srf02_firmware(byval Slaveid As Byte) As Byte

    wann wird in die Funktion gesprungen?
    Function Srf02_firmware(byval Slaveid As Byte) As Byte
    Print #1 , Chr(slaveid) ; Chr(93);
    Srf02_firmware = Waitkey(#2)
    End Function



    und wozu ist die Variable "V" ?und wird dann auf 1 gesetzt? V wird doch nirgends abgefragt oder?

    Tobias
    ...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen