PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 Code schreiben



RAW
03.08.2010, 17:49
hallo

bin neu in die robotik eingestiegen (RP6). habe auch gleich eine frage: Wie integriere ich ein servo code(von radbruch) 2. in ein bestehenden code 1. mein problem ist das ich kein make file erstellen kann. d.h wie kann ich die codes verbinden. meine codes lauten:

1.
#include "RP6RobotBaseLib.h"


void acsStateChanged(void)
{
// Print messages to UART:
writeString_P("ACS state changed L: ");

if(obstacle_left) // Left "sensor" has detected something
writeChar('o');
else
writeChar(' ');

writeString_P(" | R: ");
rotate(40, RIGHT, 90, BLOCKING);

if(obstacle_right) // Right "sensor" has detected something
writeChar('o');
else
writeChar(' ');

writeString_P(" | L: ");
rotate(0, LEFT, 0, BLOCKING);


if(obstacle_right && obstacle_left) // left AND right sensor have detected something...
writeString_P(" MIDDLE!");

writeChar('\n');
moveAtSpeed(0,0); //Bremsen
move(50, FWD, DIST_MM(6000), BLOCKING); //zurückfahren
rotate(40, RIGHT, 320, BLOCKING); //Drehen
move(50, FWD, DIST_MM(6000), BLOCKING);//Vorwärts (am Hindernis vorbei) fahren
rotate(40, LEFT, 320, BLOCKING); //zurückdrehen
//dann geradeaus weiter
// -----------------------------------------------------------


if(obstacle_left && obstacle_right) // Obstacle in the middle?
statusLEDs.byte = 0b100100;
else
statusLEDs.byte = 0b000000;
statusLEDs.LED5 = obstacle_left;
statusLEDs.LED4 = (!obstacle_left); // Inverted LED5!
statusLEDs.LED2 = obstacle_right;
statusLEDs.LED1 = (!obstacle_right); // Inverted LED2!

// Update the LED values:
updateStatusLEDs(); // The LEDs are turned on/off here! __Not__ in the lines above!
}


void bumpersStateChanged(void)
{
writeString_P("Bumpers state changed! BPL: ");

if(bumper_left) // Left Bumper
writeChar('o');
else
writeChar(' ');
move(50, BWD, DIST_MM(100), BLOCKING); //zurückfahren

writeString_P(" | BPR: ");

if(bumper_right) // Right Bumper
writeChar('o');
else
writeChar(' ');
move(50, BWD, DIST_MM(100), BLOCKING); //zurückfahren

writeChar('\n');
}


/************************************************** ***************************/
// Main - The program starts here:

int main(void)
{
initRobotBase(); // Always call this first! The Processor will not work
// correctly otherwise.

// Write Message to UART:
writeString_P("\nRP6 ACS - Testprogram\n");
writeString_P("_____________________\n\n");

setLEDs(0b111111);
mSleep(1000);
setLEDs(0b001001);

// ---------------------------
// Register Event Handlers:

// Set ACS state changed event handler:
ACS_setStateChangedHandler(acsStateChanged);

// Set Bumpers state changed event handler:
BUMPERS_setStateChangedHandler(bumpersStateChanged );

// ---------------------------

powerON();

// ---------------------------

setACSPwrMed(); //


// setACSPwrLow(); // Low power
// setACSPwrHigh(); // High Power

// ---------------------------

// Main loop
while(true)
{

task_RP6System();

}
return 0;
}


2.
// Servoansteuerung mit sleep(), Servoimpuls an ADC0, 2 Positionen 10.1.09 mic

#include "RP6RobotBaseLib.h"

uint8_t i;

int main(void)
{
initRobotBase(); // initialisieren
DDRA |= 1; // Datenrichtung Port A Bit 0 (das ist ADC0) auf Ausgang

while(true)
{
for(i=0;i<100; i++) // 100 mal Impuls für Position 1 senden
{
PORTA |= 1;
sleep(10);
PORTA &= ~1;
sleep(200-10);
}
for(i=0;i<100; i++) // 100 mal Impuls für Position 2 senden
{
PORTA |= 1;
sleep(20);
PORTA &= ~1;
sleep(200-20);
}
}
return(0);
}



danke

Martinius11
03.08.2010, 17:54
ich würds doch einfach normal reinkopieren an die Stelle die du haben möchtest.

PS: nur die for-Schleife

RAW
03.08.2010, 18:03
ok. danke für die schnelle antwort. teste es gleich mal.
MfG Raw :cheesy:

RAW
03.08.2010, 18:50
so, ich habe verschidene varianten ausprobiert. scheint nicht zu klappen. habe ständig fehler: Process Exit Code: 2. kann man wie oben erwähnt: "nur die for-schleife" genauer definieren, oder zeigen wie es im code aussehen sollte. thx

SlyD
04.08.2010, 12:37
Hallo,

> mein problem ist das ich kein make file erstellen kann.

--> Nimm einfach ein passendes vorhandenes von den RP6 Beispielprogrammen und ändere es um!


> Process Exit Code: 2

Das sagt nur DAS ein Fehler da ist. Du musst schon die vollständige Compilerausgabe und den Code posten sonst kann man dazu nichts sagen.

MfG,
SlyD

PS: Es gibt hier ein RP6 Forum!
Ein Mod könnte den Thread hier mal dahin verschieben.

Martinius11
04.08.2010, 14:08
sorry hab vergessen das du uint8_t i; auch kopieren must sonst funkt die schleife nicht

RAW
04.08.2010, 15:40
danke. funktioniert zwar noch nicht reibungslos, kann aber damit arbeiten. super forum.