Danke
Will jetzt das Rudermaschinenansteuerungsprogramm in mein normales "Gerade Fahren und Hindernissen ausweichen" Programm intigrieren.
Hatte auch grundsätzlich gut geklappt, nur mein ACS funktioniert dann nicht mehr.
Hier meine Programme:
Code:
#include "RP6RobotBaseLib.h"

void acsStateChanged(void)
  {
    if(obstacle_left)
      rotate(80, RIGHT, 50, true);
    if(obstacle_right)
      rotate(80, LEFT, 50, true);
    if(obstacle_right && obstacle_left)
      rotate(60, RIGHT, 100, true);
    }  
void bumpersStateChanged(void)
{
    if(bumper_left || bumper_right) 
    {
        changeDirection(BWD);
        move(100, BWD, DIST_MM(200), true);
        rotate(50, RIGHT, 120, true);
       
        
    }
}

int main(void)
{
  initRobotBase();
  setLEDs(0b111111);
  mSleep(500);
  setLEDs(0b001001);
  BUMPERS_setStateChangedHandler(bumpersStateChanged);
  ACS_setStateChangedHandler(acsStateChanged);
  powerON();
  setACSPwrLow();
   
  
  
  
  while(true)
   {
     task_RP6System();
     changeDirection(FWD);
     moveAtSpeed(80,80); 
     }
     return 0;
}
mein geradeausfahr und hindernissen ausweichen programm

Code:
#include "RP6RobotBaseLib.h"
uint8_t i;
int main(void)
{
 initRobotBase();
 DDRA |= 1;
 setLEDs(0b010101);
 mSleep(1000);
 setLEDs(0b101010);
 
 while(1)
    {
	 for (i=0; i<50; i++)
      {
	  PORTA |= 1;
      sleep(8);
	  PORTA &= ~1;
	  sleep(200-10);
	  }
	  mSleep(1000);
	  for (i=0; i<50; i++)
	  {
	  PORTA |= 1;
	  sleep(23);
	  PORTA &= ~1;
	  sleep(200-23);
	  }
	 
	 }
	 
     return(0);
}
mein Rudermaschinenansteuerungsprogramm

Code:
#include "RP6RobotBaseLib.h"

uint8_t i;

void acsStateChanged(void)
  {
    if(obstacle_left)
	  rotate(80, RIGHT, 50, true);
	if(obstacle_right)
	  rotate(80, LEFT, 50, true);
	if(obstacle_right && obstacle_left)
	  rotate(60, RIGHT, 100, true);
    }  
void bumpersStateChanged(void)
{
	if(bumper_left || bumper_right) 
	{
		changeDirection(BWD);
		move(100, BWD, DIST_MM(200), true);
		rotate(50, RIGHT, 120, true);
	   
		
	}
}

int main(void)
{
  initRobotBase();
  setLEDs(0b111111);
  mSleep(500);
  setLEDs(0b001001);
  DDRA |= 1;
  BUMPERS_setStateChangedHandler(bumpersStateChanged);
  ACS_setStateChangedHandler(acsStateChanged);
  powerON();
  setACSPwrLow();
   
  
  
  
  while(1)
   {
     task_RP6System();
	 changeDirection(FWD);
	 moveAtSpeed(100,100);
	 setLEDs(1);
     for(i=0; i<50; i++) // 50 mal Servosignal für Position 1 senden
      {
         PORTA |= 1;
         sleep(8); // Impulslänge Position 1 (0,5ms)
         PORTA &= ~1;
         sleep(200-5); // Impulspause
      }

      setLEDs(2);
      mSleep(1000); // Pause 1

      setLEDs(4);
      for(i=0; i<50; i++) // und 50 mal Servosignal für Position 2 senden
      {
         PORTA |= 1;
         sleep(23); // Impulslänge Position 2 (3ms?)
         PORTA &= ~1;
         sleep(200-30); // Impulspause
      }

      setLEDs(8);
      mSleep(1000); // Pause 2
   }
   return(0);
}
mein Versuch


Was muss ich ändern, damit das ACS auch funktioniert?
Danke


[/code]-Tags eingefügt von radbruch