- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 5 von 5

Thema: Frage zu einem Programm zur base

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Thorben W
    Registriert seit
    17.02.2012
    Ort
    Niedersachsen
    Beiträge
    108

    Frage zu einem Programm zur base

    Anzeige

    Praxistest und DIY Projekte
    Ich habe an meinem Rp6 2 Tastschalter angeschlossen und habe jetzt die Software angepasste nur ich bekomme immer die Warnmeldung:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Ashampoo_Snap_2013.07.13_16h27m25s_001_Output.jpg
Hits:	9
Größe:	60,3 KB
ID:	25996 und das Programm funktioniert nicht.

    Das Programm:
    Code:
    #include "RP6RobotBaseLib.h" 
    
    int main(void)
    {
        initRobotBase();
        
        
        
        while(true) 
        {
            task_hight_Bumpers();
            if(getHIGHTBumperRight())
            {
                setLEDs(0b000110);
            }
        }
        return 0;
    }
    Die Libs habe ich angehängt:RP6RobotBaseLib.h RP6RobotBaseLib.c

    Was muss ich machen? Was habe ich nicht beachtet?
    Danke schonmal
    Thorben

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Naja,

    der Kompiler kennt task_hight_Bumpers() und getHIGHTBumperRight() nicht.
    Die sind auch nirgendwo definiert.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Thorben W
    Registriert seit
    17.02.2012
    Ort
    Niedersachsen
    Beiträge
    108
    Doch.
    RP6RobotBaseLib.c Zeile 247 - 335
    Code:
    /*****************************************************************************/
    // HIGHT_Bumpers:
    
    /**
     * Returns true if the the left Bumper is hit. 
     * This function turns off the LED connected to the port, reads the Bumper 
     * value and restores previous LED state afterwards!
     *
     * Example:
     *
     *        if(getBumperLeft())
     *            // do something
     */
    uint8_t getHIGHTBumperLeft(void)
    { 
        PORTB &= ~SL5;
        DDRB &= ~SL5; 
        nop();
        uint8_t tmp = PINB & SL5;
        if(statusLEDs.LED5) { 
            DDRB |= SL5; 
            PORTB |= SL5; 
        }
        return tmp;
    }
    
    /**
     * Returns true if the the right Bumper is hit. 
     * This function turns off the LED connected to the port, reads the Bumper 
     * value and restores previous LED state afterwards!
     *
     * Example:
     *
     *        if(getBumperRight())
     *            // do something
     */
    uint8_t getHIGHTBumperRight(void)
    {
        PORTC &= ~SL2;
        DDRC &= ~SL2; 
        nop();
        uint8_t tmp = PINC & SL2;
        if(statusLEDs.LED2) { 
            DDRC |= SL2; 
            PORTC |= SL2; 
        }
        return tmp;
    }
    
    // -------------------------------
    // HIGHT Bumpers State changed handler:
    
    void HIGHT_BUMPERS_stateChanged_DUMMY(void){}
    static void (*HIGHT_BUMPERS_stateChangedHandler)(void) = HIGHT_BUMPERS_stateChanged_DUMMY;
    /**
     * Use this function to set the Bumpers state change handler. 
     * 
     */
    void HIGHT_BUMPERS_setStateChangedHandler(void (*hightbumperHandler)(void)) 
    {
        HIGHT_BUMPERS_stateChangedHandler = hightbumperHandler;
    }
    // -------------------------------
    
    volatile uint8_t hight_bumper_timer;
    uint8_t hight_bumper_left;
    uint8_t hight_bumper_right;
    
    /**
     * If you call this frequently out of the mainloop (or use task_RP6System which
     * calls this routine for you), the global bumper_left and bumper_right
     * variables are updated automatically every 50ms and can be used everywhere
     * in your program. It can also call an event handler routine, that you
     * need to register with BUMPERS_setStateChangedHandler before.
     */
    void task_hight_Bumpers(void)
    {
        if(hight_bumper_timer > 50) { // 50ms
            uint8_t hleft = getHIGHTBumperLeft();
            uint8_t hright = getHIGHTBumperRight();
            if(hight_bumper_left != hleft || hight_bumper_right != hright) {
                hight_bumper_left = hleft;
                hight_bumper_right = hright;
                HIGHT_BUMPERS_stateChangedHandler();
            }
            hight_bumper_timer = 0;
        }
    }
    RP6RobotBaseLib.h
    Code:
    / HightBumpers
    
    uint8_t gethightBumperLeft(void);
    uint8_t gethightBumperRight(void);
    extern uint8_t hight_bumper_left;
    extern uint8_t hight_bumper_right;
    #define ishightBumperLeft() (hight_bumper_left)
    #define ishightBumperRight() (hight_bumper_right)
    void HIGHT_BUMPERS_setStateChangedHandler(void (*hightbumperHandler)(void)); 
    void task_Hight_Bumpers(void);
    Thorben

    - - - Aktualisiert - - -

    Danke Dirk waren Schreibfehler drin

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @Thorben:
    Danke Dirk waren Schreibfehler drin
    Genau! Die Funktions- und Variablennamen müssen genau stimmen, auch Groß-/Kleinschreibung.
    Gruß
    Dirk

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Thorben W
    Registriert seit
    17.02.2012
    Ort
    Niedersachsen
    Beiträge
    108
    Kann man oft genug rüber gucken und sieht das nicht

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 15.03.2012, 17:03
  2. Problem mit einem Programm
    Von Patti im Forum Robby RP6
    Antworten: 2
    Letzter Beitrag: 30.09.2011, 17:06
  3. Hilfe bei einem Programm
    Von Deserfox im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 20.09.2011, 18:29
  4. Anfängerfrage zu einem Programm
    Von RevolT3c im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 10.04.2009, 09:07
  5. Antworten: 4
    Letzter Beitrag: 21.02.2008, 22:25

Berechtigungen

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

12V Akku bauen