PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : asuro prob bei pollswitch



rockyyy
01.02.2008, 13:36
hallo miteinander
mein eigentliches ziel war es den asuro bei betätigung eines tasters eine zeit lang zurück fahren zu lassen

doch nun mal zum einfacheren teil
ich will jetz nur mal das wenn der taster gedrückt wird, der asuro eine weile zurück fährt und anschliessend wieder nach vorne fährt
problem ist jetz, das er scheinbar nicht mehr aus der schleife herauskommt und somit nicht nach vorne fahren will :(

bitte um hilfe



#include "asuro.h"

int main(void){
unsigned int a=0;
unsigned int b=0;
int i=0;
char t=0;


Init();

while(1)
{

a=PollSwitch();
b=PollSwitch();

if((a==b)&&(b>0))
{
t=1;
}

if (t==1)
{

if(i < 2000)
{
MotorDir(RWD,RWD);
MotorSpeed(150,150);
i++;
}

if(i == 1999)
{
i=0;
t=0;
MotorSpeed(FWD,FWD);
MotorSpeed(150,150);
}

}


}
return 0;
}

Sim Robot
01.02.2008, 13:46
Warum denn so komplizirt?
es geht doch auch einfacher:
#include "asuro.h"

int main(void){
int d;
Init();
while(1){
unsigned char b;
unsigned char a;
unsigned char c;
b=PollSwitch();
a=PollSwitch();
c=PollSwitch();

MotorDir(FWD,FWD);
MotorSpeed(120,120);
Sleep(100);
if ((b>0)&&(b<8)&&(a==b)&&(a==c)&&(b==c)){
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(255);}
MotorDir(RWD,FWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(120);
}
}
else if((b>7)&&(b<57)&&(a==b)&&(a==c)&&(b==c)){
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(255);}
MotorDir(FWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(120);
}
}
else{
MotorDir(FWD,FWD);
MotorSpeed(120,120);
}
}
return 0;
}

Das währe ein programm wo der asuro, wenn er links irgendwo gegen fährt ein stück Rückwärts fährt und dann nach rechts und wenn er rechts gegen fährt genau das gegenteil.
Noch einfacher für den anfang währe es so zu schreiben
#include "asuro.h"

int main(void){
int d;
Init();
while(1){
unsigned char b;
unsigned char a;
unsigned char c;
b=PollSwitch();
a=PollSwitch();
c=PollSwitch();

MotorDir(FWD,FWD);
MotorSpeed(120,120);
Sleep(100);
if ((b>0)&&(a==b)&&(a==c)){
MotorDir(RWD,RWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(255);}
MotorDir(RWD,FWD);
MotorSpeed(120,120);
for(d=0;d<282;d++){
Sleep(120);
}
}
else{
MotorDir(FWD,FWD);
MotorSpeed(120,120);
}
}

}
hier bei fährt der Asuro rückwärs und dann nach links egal auf welcher seite er anstöst.