PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kreisfahr-programm radius=1m umfang?



carlitoco
10.06.2008, 11:42
Ich möchte den rp6 kreis fahren lassen
und mir mit hilfe der reletiv Konstanten pi π = 3,14159... den Umfang ausgeben lassen.

Das soll eine kleine übung zum Proggen sein, da ich seit dem Winter nix mehr mit C gemacht habe und somit noch nicht viel weiter bin.

ich habe mir grade erst Gedanke gemacht wie man das angehen könnte, also noch ganz frisch, und ich neuling

*spannend

gruss carlitoco



#include "RP6RobotBaseLib.h"





int main(void)

{

initRobotBase();

setLEDs(0b111111);

mSleep(1500);

setLEDs(0b100001);



BUMPERS_setStateChangedHandler(bumpersStateChanged );



powerON();



changeDirection(FWD);

moveAtSpeed(80,30);



while(true)

{

blink();

task_RP6System();

}

return 0;

}


hier bei dem beispiel prog wird der kreis ja über die motorgeschwindigkeit gefahren...

blenderkid
10.06.2008, 12:16
Ich kann dir ein Programm mit dem du im Kreis fahren kannst schicken, da kannst du auch halbe kreise Fahren und viertel Kreise usw und radius einstellen und geschwindigkeit.

Nur falls du das als Anregung haben willst.
Das war das erste Programm was ich gemacht habe :cheesy: :cheesy:

carlitoco
13.06.2008, 07:11
ja zeig mal .. .so als beispiel bestimmt nicht schlecht..

blenderkid
13.06.2008, 18:01
hi, hier ist der Code(nicht grad der sauberste, ich kann garnicht glauben, dass ich den mal geschrieben hab)


uint8_t breakcircle=0;
void circle(uint16_t radius, uint8_t outerspeed, uint8_t rl, uint16_t winkel)
{
float pi=3.141592654;

int32_t strecke=((((radius+60)*2)*pi)*1.25);
int32_t strecke2=((((radius-60)*2)*pi)*1.25);
stecke=strecke+strecke2
stecke2=strecke2+(strecke2/strecke*strecke2)
writeInteger(strecke,DEC);
writeChar('\n');
writeInteger(strecke2,DEC);



int16_t innerspeed=outerspeed*strecke2/strecke;

startStopwatch1();

//strecke=(strecke/360)*winkel;
//strecke2=(strecke2/360)*winkel;
if (breakcircle == 0)
{

while (strecke>0 || strecke2>0)

{


writeString("Strecke: ");
writeInteger(strecke,DEC);
writeChar('\n');

writeString("Strecke2: ");
writeInteger(strecke2,DEC);
writeChar('\n');


if (rl==0)
{
moveAtSpeed(innerspeed,outerspeed);
}
else
{
moveAtSpeed(outerspeed,innerspeed);
}
if (getStopwatch1()>=200)
{

writeChar('\n');
writeString("left speed: ");
writeInteger(getLeftSpeed(),DEC);
writeString("right speed: ");
writeInteger(getRightSpeed(),DEC);
if (rl==0)
{
strecke=strecke-mleft_speed;
strecke2=strecke2-mright_speed;
}
else
{
strecke2=strecke2-mright_speed;
strecke=strecke-mleft_speed;
}
setStopwatch1(0);
}
task_RP6System();
}
}
writeString("####################### \n ###############\n#############\n#########");


}


Sorry für den Denglischen Code. 8-[

MfG blenderkid