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;
}
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;
}