-         

Ergebnis 1 bis 6 von 6

Thema: Problem bei 1. Programm :(

  1. #1

    Problem bei 1. Programm :(

    Anzeige

    Ich hab gestern Versucht mein erstes "Richtiges" Programm für mein RP6 zu schreiben aber leider will das Programm nicht so wie ich will.

    Das Programm sollte wenn es richtig funktioniert einen Gegenstand folgen.
    (Der Gegenstand wird über die ACS Sensoren erkannt)

    Das Problem ist zur Zeit das er nicht nach Rechts fahren will wenn sich das Hindernis nach Rechts bewegt.

    Ich hab hier mal den Code Hochgeladen

    Code:
    #include "RP6RobotBaseLib.h"
    
    void acsStateChanged(void)
    {	
    	
    	if(obstacle_right)
    	//Hinderniss rechts
    	moveAtSpeed(100, 0);
    	
    	if(obstacle_left) 
    	//Hinderniss links
    	moveAtSpeed(0, 100);
    	
    	if(obstacle_right && obstacle_right ) 
    	// Mitte
    	moveAtSpeed(100, 100);
    	
    		statusLEDs.LED6 = obstacle_left && obstacle_right; // Mitte ?
    		statusLEDs.LED3 = statusLEDs.LED6;
    		statusLEDs.LED5 = obstacle_left; // Hinderniss links
    		statusLEDs.LED4 = (!obstacle_left); // LED5 invertiert!
    		statusLEDs.LED2 = obstacle_right; // Hinderniss rechts
    		statusLEDs.LED1 = (!obstacle_right); // LED2 invertiert !
    		updateStatusLEDs();  
    	}
    	
    	
    	void bumpersStateChanged(void)
    {
    	if(bumper_left)
    	moveAtSpeed(0,0);
    	setACSPwrOff(); 
    	
    	if(bumper_right)
    	moveAtSpeed(0,0);	
    	setACSPwrOff(); 
    	
    }
    	
    	
    		
    int main(void)
    {
    	
    	initRobotBase();
    	
    	//ACS Event Handler reg.
    	ACS_setStateChangedHandler(acsStateChanged);
    	
    	powerON(); // ACS Empfänger einschalten (und Encoder etc.)
    	
    	
    	//Event Handler registrieren:
    	BUMPERS_setStateChangedHandler(bumpersStateChanged);
    	
    	
    	while(true)
    	{
    		//Aus der Hauptschleife ständig die motionControl Funktion aufrufen - sie regelt die Motorgeschwindigkeit :
    		task_motionControl();
    		task_ADC(); // Wird wegen den Motorstromsensoren aufgerufen!
    		
    		task_ACS(); // ständig die task_ACS Funktion aufrufen !
    		
    		task_Bumpers(); // ständig aus der Hauptschleife aufrufen
    		
    		setACSPwrLow(); // ACS auf mittlere Sendeleistung stellen.
    	}
    	
    	return 0;
    }

    MFG V!P3R

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    ich habe hier auch mal so ein code, aber ohne die bumper:

    Code:
    #include "RP6RobotBaseLib.h"
    
    void acsStateChanged(void)
    {
    uint8_t i;
    
    if(obstacle_left && obstacle_right)
    i = 1;
    
    
    else if(obstacle_left) 
    i = 2;
    
    
    else if(obstacle_right)
    i = 3;
    
    
    
    
    switch(i)
    {
    case 1:
    {
    writeString("hindernis mitte\n");
    
    moveAtSpeed(100,100);
    }
    break;
    
    case 2:
    {
    writeString("hindernis links\n");
    
    moveAtSpeed(70,150);
    }
    break;
    
    case 3:
    {
    writeString("hindernis rechts\n");
    
    moveAtSpeed(150,70);
    }
    break;
    
    default:
    {
    stop();
    }
    
    }
    
    
    
    
    statusLEDs.LED6 = obstacle_left && obstacle_right;
    statusLEDs.LED3 = statusLEDs.LED6;
    statusLEDs.LED5 = obstacle_left; 
    statusLEDs.LED4 = (!obstacle_left);
    statusLEDs.LED2 = obstacle_right; 
    statusLEDs.LED1 = (!obstacle_right);
    updateStatusLEDs();
    }
    int main(void)
    {
    initRobotBase();
    ACS_setStateChangedHandler(acsStateChanged);
    powerON();
    setACSPwrHigh();
    changeDirection(FWD);
    while(true)
    {
    task_RP6System();
    }
    return 0;
    }
    und hier die hex-file:
    Angehängte Dateien Angehängte Dateien

  3. #3
    Danke Roboman93,

    es funktioniert ohne Probleme

    MFG
    V!P3R

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    gut, freut mich
    ...and always remember...
    ...AVR RULES...

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2008
    Alter
    24
    Beiträge
    540
    gut, freut mich
    das problem bei der verfolgung mit den IR-Dioden ist, dass der bereich, wo nur eine diode das objekt erfasst, sehr klein. leider sind sie schlecht angebracht um sie ein bisschen zu biegen

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Vielleicht hilft ein Strohhalm, Schrupfschlauch oder ein Stück Pappe.

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

Berechtigungen

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