- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 332

Thema: RP6 Remotrol 1.3: Die Opensource RP6-Fernsteuerung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Wenns mit USB auch passiert wirds wohl an deinem eigenen Programm liegen

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Ich check das mal... ich kanns mir halt so wenig vorstellen, da ich den Stream, der vom RP6 kommt nehme, und ihn sofort Plotte.
    Integrierst du in deinem Programm über mehrere Werte, ehe du plottest, um den Mittelwert der sagen wir letzten drei Werte zu erhalten, oder plottest du alles sofort?
    Wenn sofort, dann würde das zumindest einen Fehler in der Übertragung und in deinen RP6-Programmen ausschließen...

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Nein, bei mir wird nichts kummuliert oder irgendwelche Schnitte gebildet.
    Das, was ankommt, wird auch dargestellt.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Ja, das hab ich auch grad gemerkt: Der Stream ist fehlerfrei, aber wenn ich sage: plotte das, was hinter "Lightl:" kommt, dann geht irgendwie gern mal ne Ziffer verloren. Keine Ahnung, wie das von Statten geht wie gesagt, im Stream steht sie noch.
    Kennt sich da vielleicht jemand mit LabView aus?

    Lg

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    29.08.2008
    Beiträge
    73
    Hallo,

    ich hab nich alles mit gelesen, bin also nicht auf dem neusten Stand, aber wenn du mit LabView hilfe brauchst, dann schreib mal ne PN bin eingeltich recht fit vlt kann ich dir ja helfen.

    vg

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hier mal ein Foto, wie das so aussieht...

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Ich habe gerade die M128 und die Base mit der Remotrol am laufen, aber die M128 bekommt nix von den Bumpern und dem ACS mit. Wenn ich das richtig sehe, dann weil es nicht im Register steht.
    Register Base:
    Code:
    /*****************************************************************************/
    // I2C Registers that can be read by the Master. Their names should 
    // be self-explanatory and directly relate to the equivalent variables/functions 
    // in the RP6Library
    
    #define I2C_REG_STATUS1          0
    #define I2C_REG_STATUS2          1
    #define I2C_REG_MOTION_STATUS      2
    #define I2C_REG_POWER_LEFT          3
    #define I2C_REG_POWER_RIGHT      4
    #define I2C_REG_SPEED_LEFT          5
    #define I2C_REG_SPEED_RIGHT      6
    #define I2C_REG_DES_SPEED_LEFT      7
    #define I2C_REG_DES_SPEED_RIGHT  8
    #define I2C_REG_DIST_LEFT_L      9
    #define I2C_REG_DIST_LEFT_H      10
    #define I2C_REG_DIST_RIGHT_L     11
    #define I2C_REG_DIST_RIGHT_H      12
    #define I2C_REG_ADC_LSL_L          13
    #define I2C_REG_ADC_LSL_H          14
    #define I2C_REG_ADC_LSR_L          15
    #define I2C_REG_ADC_LSR_H          16
    #define I2C_REG_ADC_MOTOR_CURL_L 17
    #define I2C_REG_ADC_MOTOR_CURL_H 18
    #define I2C_REG_ADC_MOTOR_CURR_L 19
    #define I2C_REG_ADC_MOTOR_CURR_H 20
    #define I2C_REG_ADC_UBAT_L          21
    #define I2C_REG_ADC_UBAT_H          22
    #define I2C_REG_ADC_ADC0_L          23
    #define I2C_REG_ADC_ADC0_H          24
    #define I2C_REG_ADC_ADC1_L          25
    #define I2C_REG_ADC_ADC1_H          26
    #define I2C_REG_RC5_ADR              27
    #define I2C_REG_RC5_DATA          28
    #define I2C_REG_LEDS              29
    
    
    /**
     * This very important function updates ALL registers that the Master can read.
     * It is called frequently out of the Main loop. 
     */
    void task_updateRegisters(void)
    {
        if(!I2CTWI_readBusy) 
        {
            I2CTWI_readRegisters[I2C_REG_STATUS1] =          (uint8_t)(interrupt_status.byte);
            I2CTWI_readRegisters[I2C_REG_STATUS2] =          (uint8_t)(status.byte);
            I2CTWI_readRegisters[I2C_REG_MOTION_STATUS] =      (uint8_t)(drive_status.byte);
            I2CTWI_readRegisters[I2C_REG_POWER_LEFT] =          (uint8_t)(mleft_power);
            I2CTWI_readRegisters[I2C_REG_POWER_RIGHT] =      (uint8_t)(mright_power);
            I2CTWI_readRegisters[I2C_REG_SPEED_LEFT] =          (uint8_t)(getLeftSpeed());
            I2CTWI_readRegisters[I2C_REG_SPEED_RIGHT] =      (uint8_t)(getRightSpeed());
            I2CTWI_readRegisters[I2C_REG_DES_SPEED_LEFT] =      (uint8_t)(getDesSpeedLeft());
            I2CTWI_readRegisters[I2C_REG_DES_SPEED_RIGHT] =  (uint8_t)(getDesSpeedRight());
            I2CTWI_readRegisters[I2C_REG_DIST_LEFT_L] =      (uint8_t)(getLeftDistance());
            I2CTWI_readRegisters[I2C_REG_DIST_LEFT_H] =      (uint8_t)(getLeftDistance()>>8);
            I2CTWI_readRegisters[I2C_REG_DIST_RIGHT_L] =      (uint8_t)(getRightDistance());
            I2CTWI_readRegisters[I2C_REG_DIST_RIGHT_H] =      (uint8_t)(getRightDistance()>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_LSL_L] =          (uint8_t)(adcLSL);
            I2CTWI_readRegisters[I2C_REG_ADC_LSL_H] =          (uint8_t)(adcLSL>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_LSR_L] =          (uint8_t)(adcLSR);
            I2CTWI_readRegisters[I2C_REG_ADC_LSR_H] =          (uint8_t)(adcLSR>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURL_L] = (uint8_t)(adcMotorCurrentLeft);
            I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURL_H] = (uint8_t)(adcMotorCurrentLeft>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURR_L] = (uint8_t)(adcMotorCurrentRight);
            I2CTWI_readRegisters[I2C_REG_ADC_MOTOR_CURR_H] = (uint8_t)(adcMotorCurrentRight>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_UBAT_L] =          (uint8_t)(adcBat);
            I2CTWI_readRegisters[I2C_REG_ADC_UBAT_H] =          (uint8_t)(adcBat>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_ADC0_L] =          (uint8_t)(adc0);
            I2CTWI_readRegisters[I2C_REG_ADC_ADC0_H] =          (uint8_t)(adc0>>8);
            I2CTWI_readRegisters[I2C_REG_ADC_ADC1_L] =          (uint8_t)(adc1);
            I2CTWI_readRegisters[I2C_REG_ADC_ADC1_H] =          (uint8_t)(adc1>>8);
            I2CTWI_readRegisters[I2C_REG_LEDS] =              (uint8_t)(statusLEDs.byte);
            I2CTWI_readRegisters[I2C_REG_RC5_ADR] =          (uint8_t)((lastRC5Reception.device)|(lastRC5Reception.toggle_bit<<5));
            I2CTWI_readRegisters[I2C_REG_RC5_DATA] =          (uint8_t)(lastRC5Reception.key_code);
            if(I2CTWI_dataWasRead && I2CTWI_dataReadFromReg == 0)
                clearInterrupt();
        }
    }
    Register M128:
    Code:
    // I2C Read Register des I2CSlave Programms:
    
    #define I2C_REG_STATUS1          0
    #define I2C_REG_STATUS2          1
    #define I2C_REG_MOTION_STATUS      2
    #define I2C_REG_POWER_LEFT          3
    #define I2C_REG_POWER_RIGHT      4
    #define I2C_REG_SPEED_LEFT          5
    #define I2C_REG_SPEED_RIGHT      6
    #define I2C_REG_DES_SPEED_LEFT      7
    #define I2C_REG_DES_SPEED_RIGHT  8
    #define I2C_REG_DIST_LEFT_L      9
    #define I2C_REG_DIST_LEFT_H      10
    #define I2C_REG_DIST_RIGHT_L     11
    #define I2C_REG_DIST_RIGHT_H      12
    #define I2C_REG_ADC_LSL_L          13
    #define I2C_REG_ADC_LSL_H          14
    #define I2C_REG_ADC_LSR_L          15
    #define I2C_REG_ADC_LSR_H          16
    #define I2C_REG_ADC_MOTOR_CURL_L 17
    #define I2C_REG_ADC_MOTOR_CURL_H 18
    #define I2C_REG_ADC_MOTOR_CURR_L 19
    #define I2C_REG_ADC_MOTOR_CURR_H 20
    #define I2C_REG_ADC_UBAT_L          21
    #define I2C_REG_ADC_UBAT_H          22
    #define I2C_REG_ADC_ADC0_L          23
    #define I2C_REG_ADC_ADC0_H          24
    #define I2C_REG_ADC_ADC1_L          25
    #define I2C_REG_ADC_ADC1_H          26
    #define I2C_REG_RC5_ADR              27
    #define I2C_REG_RC5_DATA          28
    #define I2C_REG_LEDS              29
    Stimmt das? Was muss ich denn ändern, wenn ich sowohl die beiden ACS (left, right) haben will, als auch Bumper left, Bumper Right, Bumper back left und bimper back right?
    Letztere werden in meiner Lib so eingeführt (wie vom nil.at) :
    Code:
    uint8_t getBackBumperLeft(void) 
    { 
       PORTC &= ~SL2; 
       DDRC &= ~SL2; 
       nop(); 
       uint8_t tmp = PINC & SL2; 
       if(statusLEDs.LED2) { 
          DDRC |= SL2; 
          PORTC |= SL2; 
       } 
       return tmp; 
    } 
    
    uint8_t getBackBumperRight(void) 
    { 
       PORTB &= ~SL5; 
       DDRB &= ~SL5; 
       nop(); 
       uint8_t tmp = PINB & SL5; 
       if(statusLEDs.LED5) { 
          DDRB |= SL5; 
          PORTB |= SL5; 
       } 
       return tmp; 
    }
    Danke euch schon mal!

Berechtigungen

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

LiFePO4 Speicher Test