-
        

Ergebnis 1 bis 7 von 7

Thema: SRF08 abfragen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.11.2003
    Ort
    Leipzig
    Alter
    31
    Beiträge
    578

    SRF08 abfragen

    Anzeige

    Hallo!
    Es ist mir etwas peinlich zu fragen, aber ich bekomme meinen SRF08 einfach nicht ausgelesen.
    Ich habe den SRF08 schon (recht erfolgreich) mit einer C-Control2 benutzt, aber mit diesen fertigen I²C Routinen habe ich irgendwie bischen Probleme.

    Code:
    	 I2CTWI_transmit2Bytes(224, 0, 81);
    	 mSleep(500);
    Der obige Code bewirkt, dass der SRF08 aller 500ms eine Ultraschallmessung beginnt.

    Das Datenblatt zum SRF08 ist hier.

    Danke für eure Hilfe.


    MfG ACU
    http://www.roboterbastler.de
    endlich wieder online

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    32
    Beiträge
    731
    Hi

    Was genau ist denn dein Problem?
    Weisst du nciht wie du die Abfrage machst, oder funktioniert es nicht, ...?

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    wird auch nicht so einfach sein, dieses noch in den rp6 einzubinden. ausreichende winavr-c-kenntnisse sind erforderlich.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Hallo,

    in den Beispielprogrammen sind zwei dabei die SRF08 / SRF10 Sensoren ansteuern. Vielleicht da mal schauen.
    (diese Beispiele sind allerdings auf nebenläufige Abarbeitung optimiert um Zeit zu sparen und daher 10 Zeilen länger...)

    Etwas einfacher geht es mit dieser Funktion aus der RP6Lib:
    Code:
    void I2CTWI_readRegisters(uint8_t targetAdr, uint8_t reg, uint8_t * messageBuffer, uint8_t numberOfBytes)
    Ich habe das nur gerade hier im Forum getippt und nicht getestet - aber es sollte in etwa so funktionieren:
    Code:
        #define SRF08_ADR 225
        I2CTWI_transmit2Bytes(SRF08_ADR, 0, 81);
        mSleep(120);
        uint8_t results[3];
        I2CTWI_readRegisters(SRF08_ADR, 2, results, 2);
       // jetzt sollten High und Low byte der gemessenen Entfernung im results Array sein.
    Wie gesagt - der Code ist nicht getestet und zeigt nur das Prinzip.

    MfG,
    SlyD

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    warum soll das der user nicht alleine machen. immer dieses vorkauen von dem code für winavr-c. er wird nie lernen wie ein srf8 funktioniert, wenn er den ursprung nicht kennt.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    32
    Beiträge
    1.514
    Zitat Zitat von roboterheld
    wird auch nicht so einfach sein, dieses noch in den rp6 einzubinden. ausreichende winavr-c-kenntnisse sind erforderlich.
    und dann:

    Zitat Zitat von roboterheld
    immer dieses vorkauen von dem code

    Schon klar Pebi. Erst behaupten es sei zu schwer - und dann wenn ne einfache Lösung (3 Zeiler...) gezeigt wird meckern warum das hier gepostet wird.


    Zitat Zitat von roboterheld
    wird nie lernen wie ein srf8 funktioniert
    Wenn man das wollte müsste man sich den kompletten Sensor selbst bauen (und daran hindert Dich ja keiner) was bei einem fertigen Sensormodul aber wohl nicht Sinn und Zweck der Sache ist.
    Der Code oben ist doch nur die Ansteuerung per TWI. Das hat mit dem wie der Sensor an sich funktioniert rein gar nichts zu tun.

    MfG,
    SlyD

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.11.2003
    Ort
    Leipzig
    Alter
    31
    Beiträge
    578

    THX

    Hallo SlyD, vielen Dank für deine Hilfe.
    Auf diesen Lösungsansatz bin ich irgendwie nicht gekommen.
    Habe heute endlich mal Zeit gehabt den Code zu testen, funzt super.
    Hier zwei kleine Funktionen, mit denen ich es mache (für alle Faule).
    Die Adresse habe ich fest gesetzt, da ich nur einen Sensor montiert habe.

    Code:
    void USFire()
    {
    
    	I2CTWI_transmit2Bytes(224, 0, 81);
    }
    
    int USRead()
    {
    	uint8_t Sensorarray[2];
        I2CTWI_readRegisters(224, 2, Sensorarray, 2); 
    	return Sensorarray[1]+Sensorarray[0]*256;
    }
    @pebi
    Wenn du dich mal eine ganze Weile zurückerinnerst, wirst du feststellen, dass wir uns wegen der SRF Sache mal geschrieben hatten und ich sehr wohl das Funktionsprinzip verstanden habe.
    Du kannst ja auch in deinen PNs mal schauen.
    Ach sorry, ganz vergessen dein Account ist ja gesperrt


    MfG ACU
    http://www.roboterbastler.de
    endlich wieder online

Berechtigungen

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