- 12V Akku mit 280 Ah bauen         
Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 54

Thema: RP6 Software (Library und Demos)

  1. #21
    Benutzer Stammmitglied
    Registriert seit
    30.04.2004
    Ort
    Duisburg
    Alter
    44
    Beiträge
    49
    Anzeige

    Powerstation Test
    Ich verneige mich erfürchtig!
    Danke nochmals

    Grüße

    Hartgas

  2. #22
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.01.2004
    Alter
    35
    Beiträge
    645
    Bei den paar Zeilen kann man wohl nicht mal von "klauen" sprechen
    MfG Xtreme
    RP6 Test - alles zum Nachfolger des bekannten RP5 im neuen RP6 Forum!

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    30.04.2004
    Ort
    Duisburg
    Alter
    44
    Beiträge
    49
    Hi Fans!
    Könnte jemand von euch mir mal sagen wo ich die ganzen Befehle finde die man für den Robby benutzen kann?
    Ich würde mir die dann mal raussuchen und dazu schreiben was man genau damit anstellen kann. Falls dann nochmal jemand Infos dazu braucht und genauso Noob ist wie ich würde es demjenigen ne ganze Ecke leichter fallen denk ich mal.

    Viele Grüße

    Hartgas

  4. #24
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Befehle für den RP6

    Hallo Hartgas,

    die wesentlichen Funktionen findest du in:
    RP6RobotBaseLib.c
    RP6I2CMasterTWI.c
    RP6I2CSlaveTWI.c
    RP6uart.c
    RP6ControlLib.c

    Die sind da auch gut kommentiert.

    Die Definitionen sind in den xyz.h Dateien zu finden.

    Gruß Dirk

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    30.04.2004
    Ort
    Duisburg
    Alter
    44
    Beiträge
    49
    Besten Dank Dirk.
    Ich werd mich mal daran machen.

    Gruß

    Hartgas

  6. #26
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo,

    ich hab schon eine Textliste der Funktionen in der Doku erstellt:
    Code:
    4.6.1. Mikrocontroller initialisieren
    void initRobotBase(void)
    void powerON(void)
    void powerOFF(void)
    
    4.6.2. UART Funktionen (serielle Schnittstelle)
    
    4.6.2.1. Senden von Daten über die serielle Schnittstelle
    void writeChar(char ch)
    void writeString(char *string)
    void writeString_P(STRING)
    void writeStringLength(char *data, uint8_t length, uint8_t offset)
    void writeInteger(int16_t number, uint8_t base)
    
    4.6.2.2. Empfangen von Daten über die serielle Schnittstelle
    void receiveBytes(uint8_t numberOfBytes)
    void waitUntilReceptionComplete(void)
    void copyReceivedBytesToBuffer(char *buffer)
    
    4.6.3. Delay Funktionen (Verzögerungen und Zeitsteuerung)
    void sleep(uint8_t time)
    void mSleep(uint16_t time)
    
    Stopwatch()-Makros
    startStopwatchX()
    stopStopwatchX()
    
    uint8_t isStopwatchXRunning()
    setStopwatchX(uint16_t preset)
    getStopwatchX()
    
    4.6.4. Status LEDs und Bumper
    void setLEDs(uint8_t leds)
    
    statusLEDs.LEDX
    updateStatusLEDs()
    
    uint8_t getBumperLeft(void)
    uint8_t getBumperRight(void)
    
    void task_Bumpers(void)
    bumper_left
    bumper_right
    void BUMPERS_setStateChangedHandler(void (*bumperHandler)(void))
    
    4.6.5. ADC auslesen (Batterie-, Motorstrom- und Lichtsensoren)
    uint16_t readADC(uint8_t channel)
    ADC_BAT --> Batteriespannungs Sensor
    ADC_MCURRENT_R --> Motorstromsensor des rechten Motors
    ADC_MCURRENT_L --> Motorstromsensor des linken Motors
    ADC_LS_L --> Linker Lichtsensor
    ADC_LS_R --> Rechter Lichtsensor
    ADC_ADC1 --> Freier ADC Kanal für eigene Sensoren
    ADC_ADC0 --> Freier ADC Kanal für eigene Sensoren
    
    void task_ADC(void)
    ADC_BAT: adcBat
    ADC_MCURRENT_L: adcMotorCurrentLeft
    ADC_MCURRENT_R: adcMotorCurrentRight
    ADC_LS_L: adcLSL
    ADC_LS_R: adcLSR
    ADC_ADC1: adc0
    ADC_ADC0: adc1
    
    4.6.6. ACS – Anti Collision System
    void setACSPwrOff(void) --> ACS IR LEDs aus
    void setACSPwrLow(void) --> Geringe Reichweite
    void setACSPwrMed(void) --> Mittlere Reichweite
    void setACSPwrHigh(void) --> Maximale Reichweite
    
    void task_ACS(void)
    obstacle_left
    obstacle_right
    void ACS_setStateChangedHandler(void (*acsHandler)(void))
    
    4.6.7. IRCOMM und RC5 Funktionen
    void IRCOMM_sendRC5(uint8_t adr, uint8_t data)
    void IRCOMM_setRC5DataReadyHandler(void (*rc5Handler)(RC5data_t))
    rc5data.device
    rc5data.toggle_bit
    rc5data.key_code
    
    4.6.8. Antriebs Funktionen
    void task_motionControl(void)
    
    void moveAtSpeed(uint8_t desired_speed_left, uint8_t desired_speed_right)
    getDesSpeedLeft()
    getDesSpeedRight()
    getLeftSpeed()
    getRightSpeed()
    
    void changeDirection(uint8_t dir)
    FWD - für Vorwärts (FWD ist eine Abkürzung für „Forwards“)
    BWD – für Rückwärts (BWD ist eine Abkürzung für „Backwards“)
    LEFT – nach links drehen
    RIGHT – nach rechts drehen
    getDirection()
    
    void move(uint8_t desired_speed, uint8_t dir, uint16_t distance,
    uint8_t blocking)
    DIST_MM(DISTANCE)
    uint8_t isMovementComplete(void)
    
    void stop(void)
    
    void rotate(uint8_t desired_speed, uint8_t dir, uint16_t angle,
    uint8_t blocking)
    
    4.6.9. task_RP6System()
    void task_RP6System(void)
    task_ADC();
    task_ACS();
    task_bumpers();
    task_motionControl();
    
    4.6.10. I²C Bus Funktionen
    
    4.6.10.1. I²C Slave
    void I2CTWI_initSlave(uint8_t address)
    I2CTWI_readRegisters
    I2CTWI_writeRegisters
    I2CTWI_genCallCMD
    I2CTWI_readBusy
    I2CTWI_writeBusy
    
    4.6.10.2. I²C Master
    void I2CTWI_transmitByte(uint8_t adr, uint8_t data)
    void I2CTWI_transmit2Bytes(uint8_t adr, uint8_t data1, uint8_t data2) ???????????????
    void I2CTWI_transmit3Bytes(uint8_t adr, uint8_t data1, uint8_t data2) ???????????????
    
    void I2CTWI_transmitBytes(uint8_t targetAdr, uint8_t *msg, uint8_t numberOfBytes)
    I2CTWI_BUFFER_SIZE
    I2CTWI_isBusy()
    
    uint8_t I2CTWI_readByte(uint8_t targetAdr)
    void I2CTWI_readBytes(uint8_t targetAdr, uint8_t * messageBuffer, uint8_t numberOfBytes);
    
    void task_I2CTWI(void)
    void I2CTWI_requestDataFromDevice(uint8_t requestAdr, uint8_t requestID, uint8_t numberOfBytes)
    void I2CTWI_getReceivedData(uint8_t *msg, uint8_t msgSize)
    void I2CTWI_setRequestedDataReadyHandler(void (*requestedDataReadyHandler)(uint8_t))
    void I2CTWI_setTransmissionErrorHandler(void(*transmissionErrorHandler)(uint8_t))
    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #27
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    698
    Da ein writeFloat(...), z.B. zur Ausgabe der Akkuspannung oder von Messwerten fehlt, hier eine Ergänzung:
    Code:
    void float2string(float value, int decimal, char* valuestring)
    {
        int neg = 0;    
        char tempstr[20];
        int i = 0;   
        int j = 0;   
        int c;    
        long int val1, val2;
        char* tempstring;
        tempstring = valuestring;
        if (value < 0){ neg = 1; value = -value; }
        for (j=0; j < decimal; j++) {value = value * 10;}
        val1 = (value * 2);
        val2 = (val1 / 2) + (val1 % 2);
        while (val2 !=0){
             if ((decimal > 0) && (i == decimal)){
                 tempstr[i] = (char)(0x2E);
                 i++;
             }
             else{
                 c = (val2 % 10);
                 tempstr[i] = (char) (c + 0x30);
                 val2 = val2 / 10;
                 i++;
             }
         }
         if (neg){
             *tempstring = '-';
             tempstring++;
         }
         i--;
         for (;i > -1;i--){
             *tempstring = tempstr[i];
             tempstring++;
         }
         *tempstring = '\0';
    }
    
        float Ubatt = 10.21; // Beispiel
        char text[6];
        float2string(Ubatt,2,text);  // 2 Dezimalstellen
        writeString(text); // o.ä. z.B. auf das Display

  8. #28
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Frage zur Doku

    @radbruch:
    Hallo mic,

    zwei Fragen zu deiner Doku:
    1. Warum fängt die Doku bei 4.6.1 an oder was kommt davor?
    2. Warum hast du bei diesen Funktionen ...
    void I2CTWI_transmit2Bytes(uint8_t adr, uint8_t data1, uint8_t data2) ???????????????
    ... und ...
    void I2CTWI_transmit3Bytes(uint8_t adr, uint8_t data1, uint8_t data2) ???????????????
    ... die vielen ??? drangehängt?

    Gruß Dirk

  9. #29
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8

    sinn der liste

    Hallo Dirk

    zu 1.: Das Kapitel 4.6 in der Dokumentation beschreibt die Funktionen der Library. Die Nummern sind der Bezug zur Doku, die wollte ich für meine geplante HTML-Kurzreferenz nutzen. Im Moment zeigen sie nur an, wo man die jeweilige Funktion in der Doku findet.

    zu 2.: Weil bei I2CTWI_transmit3Bytes() ein Parameter fehlte. Meine Liste habe ich auf Basis der vorläufigen Test-Doku erstellt, dieser Fehler dürfte in der aktuellen Version (vom 17.7.07) beseitigt sein.

    Meine Liste ist ja noch keine echte Doku, es soll mal eine werden. Ich habe sie erstellt um mir selbst einen Überblick über die Funktionien zu verschaffen. Dies sind auch nur die in der Doku beschriebenen Funktionen. Es gibt noch unzählige andere, die super (aber eben in englisch) erklärt, in den einzelnen Dateien der Library enthalten sind. Diese sollte man als RP6-Anfänger aber besser nicht verwenden, weil sie auf die Basics, gebildet durch das Task-System, der Funktionen zugreifen. Da sollte man dann schon genau wissen, was man tut.

    Bei dieser Gelegenheit ziehe ich mal den Hut vor Dominik (aka SlyD) der das alles entwickelt und geschrieben hat. Bild hier  

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #30
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Hallo mic,

    Weil bei I2CTWI_transmit3Bytes() ein Parameter fehlte.
    ... der fehlt in meiner Lib nicht. Die Lib ist ok!

    Gruß Dirk

Seite 3 von 6 ErsteErste 12345 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen