PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : quadrate fahren und zählen



Weiti
26.09.2008, 10:10
hallo, mein asuro kann im moment quadrate fahren und sollte eigentlich mitzählen wieviele.

leider zählt er immer nur eins egal wieviele es waren. außerdem zählt er im moment nicht die quadrate, sondern die rechtskurven, also blinkt er 4 mal pro gefahrenes quadrat (zumindest sollte er es!)
alles mit standart-libs geschrieben:



#include "asuro.h"
#define taste (!(PINC & (1<<PC4))) // Tastenabfrage
#define keine_taste (PINC & (1<<PC4))

int i=0;
int runde=0;

void report(int anzahl)
{
int x;
for(x=0;x<=anzahl;x++)
BackLED(ON,ON);
MSleep(2000);
BackLED(OFF,OFF);
MSleep(2000);

}

void MSleep(int dauer)
{
int z;
for(z=0;z<dauer;z++) Sleep(36);

}

int main(void) {

Init();
while(i==0)
{
MotorDir(FWD,FWD);
MotorSpeed(160,160);
StatusLED(GREEN);
MSleep(3000);
MotorSpeed(140,0);
StatusLED(YELLOW);
MSleep(1200);
runde++;
while(taste){
MotorSpeed(0,0);
StatusLED(RED);
i=1;
}
}
report(runde);
StatusLED(GREEN);

while(1);
return 0;
}

radbruch
26.09.2008, 10:35
Vielleicht so:

void report(int anzahl)
{
int x;
for(x=0;x<=(anzahl/4);x++) // vier Ecken pro Quadrat
{
BackLED(ON,ON);
MSleep(2000);
BackLED(OFF,OFF);
MSleep(2000);
}
}

Gruß

mic

theborg
26.09.2008, 10:44
hi Weti reicht net ein tehrat hir im forum für alles mit 50 einzelden ist des echt sch.....

Weiti
26.09.2008, 23:52
aber das problem ist ja nicht das durch 4 teilen, sondern das er immer nur einmal blinkt.

was bedeutet tehrat, und was 50 einzelden?
sorry theborg ich verstehe den post nicht...

JensK
02.10.2008, 20:09
ich glaub er meint thread :P hast du mehrere geöffnet? zu der gleichen frage? ich seh keine.

Weiti
06.10.2008, 13:41
ja, hab mehrere offen, aber alle zu unterschiedlichen themen.

Valen
06.10.2008, 15:42
Weiti:

Schau mal an wie deiner For-Schleife und Radbruch's Schleife von einander abweichen (nicht das 4-division). Deine report function setzt die BackLED(ON,ON) X-mal. Und dan nur ein mal OFF bis ende. ;)