- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Need Help!! bei programm

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer
    Registriert seit
    18.01.2010
    Ort
    baden
    Alter
    35
    Beiträge
    3

    Need Help!! bei programm

    Hallo an alle!!

    habe bei einem programm probleme
    Wollte das programm RP6_BASE_SERVO_01 bearbeiten:
    Code:
    // Uncommented Version of RP6Base_Servo_01.c
    // written by D. Ottensmeyer
    // ------------------------------------------------------------------------------------------
    
    #include "RP6RobotBaseLib.h"
    
    #define SERVO_OUT			SDA
    
    #define LEFT_TOUCH			550
    #define RIGHT_TOUCH			254
    #define PULSE_ADJUST 		4
    #define PULSE_REPETITION	19
    
    void bumpersStateChanged(void)
    {
    	if(bumper_left)  
    	{
    		moveAtSpeed(0,0);  
    		setLEDs(0b010000);
    		startStopwatch1();
    	}
    	if(bumper_right)
    	{
    	    moveAtSpeed(0,0);
    		setLEDs(0b010001);
    		startStopwatch1();
    	}	
    }
    
    void blink(void)
    {
    	if(getStopwatch1() > 500)
    	{
    		statusLEDs.LED2 = !statusLEDs.LED2;
    		statusLEDs.LED5 = !statusLEDs.LED5;
    		updateStatusLEDs();
    		setStopwatch1(0);
    	}
    }
    
    void initSERVO(void)
    {
    	DDRC |= SERVO_OUT;
    	PORTC &= ~SERVO_OUT;
    	startStopwatch1();
    }
    
    void pulseSERVO(uint8_t position)
    {
    	cli();
    	PORTC |= SERVO_OUT;
    	delayCycles(LEFT_TOUCH);
    	while (position--) 
    	{
    		delayCycles(PULSE_ADJUST);
    	}
    	PORTC &= ~SERVO_OUT;
    	sei();
    }
    
    void task_SERVO(void)
    {static uint8_t pos;
    	if (getStopwatch1() > PULSE_REPETITION) 
    	{
    		pulseSERVO(pos);
    		if (getStopwatch2() > 48) {
    			pos++;
    			if (pos > RIGHT_TOUCH) {pos = 0;}
    			setStopwatch2(0);
    		}
    		setStopwatch1(0);
    	}
    }
    
    int main(void)
    {
    	initRobotBase();
    	setLEDs(0b010001);
    	mSleep(2500);
    	
    	BUMPERS_setStateChangedHandler(bumpersStateChanged);
    	
    	
    	powerON();
    	
    	
    	
    	initSERVO();
    	
    	
    	while(true)  
    	{
    	    task_SERVO();
    		task_RP6System();
    		
    		
    	    setLEDs(0b010001);
    		move(100, FWD, DIST_MM(300), true);
    		rotate(50, RIGHT, 180, true);
    		move(200, FWD, DIST_MM(300), true);
    		rotate(50, LEFT, 180, true);
    	   
    		
    	}
    	return 0;}
    dass robby nach vorne fährt wendet, und an die start pos. zurück kehrt!!
    aber sich das SERVO die ganze zeit nach links dreht und sich langsam zurück nach rechts stellt!

    Das original servo prog. funktioniert einwandfrei!!!
    wenn ich die fahrt-, und bumper funktionen dazu schreibe,
    zuckt der SERVO mal kurz dann is ende, die fahrt und bumper befehle
    werden aber ab gearbeitet!!!!!

    Was also tuen ausser Weinen????


    ps: Prog. anfänger!!b


    DANKE SCHON MAL FÜR DIE HILFE

  2. #2
    Neuer Benutzer
    Registriert seit
    18.01.2010
    Ort
    baden
    Alter
    35
    Beiträge
    3
    smilie im programm is ungewollt!!! da gehört 8 )
    if (getStopwatch2() > 48 ) {

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    14.12.2009
    Ort
    Steinfurt
    Beiträge
    46
    Die Methode task_SERVO() wird exakt einmal ausgeführt, sie sollte aber vermutlich häufiger aufgerufen werden um die Position des Servos zu verändern.
    Entweder arbeitest du mit einer Statemachine und setzt Ereignisse für jeden Fahrbefehl oder du rufst die Fahrbefehle mit blocking=false auf und packst hinter jeden Fahrbefehl eine
    Code:
    while(!isMovementComplete()){
       task_SERVO();
    }
    Schleife.

    Grüße,
    Jan

    P.S.: mit [ code ] und [ /code ] wird der Quelltext auch schön dargestellt

  4. #4
    Neuer Benutzer
    Registriert seit
    18.01.2010
    Ort
    baden
    Alter
    35
    Beiträge
    3
    Danke für die hilfe werde ich sofort ausprobieren!
    und Danke fur den tipp mit code!!!!!!!!!!

    danke mfg stoni

Berechtigungen

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

Labornetzteil AliExpress