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
Lesezeichen