PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmfehler



asuro_freak2
09.12.2006, 23:47
Ich habe ein Programm für den ASURO geschrieben das Sicherheitsfunktionen enthält. Leider funktioniert es nicht. Die Reifen drehen und der ASURO fährt vorwärts egal ob ein Taster gedrückt wird oder nicht.


/*
d
################################################## #################
#-----------------------------------------------------------------#
# Sinnlos durch die Gegend #
#-----------------------------------------------------------------#
################################################## #################
*/

#include "asuro.h"
/*################################################# ################################################## ################################################
Funktionen*/
void sleep_s(int sek)//Erweiterung die sleep mit sekundenangabe ermöglicht
{
int n;
int t;
t=sek*1000;
n=0;
while(n<t)
{
Sleep(76);
n++;
}
}

void schalter_akt(void) //ließt die schalter aus um den kondensator zu entladen
{
int zaehler ;
while (zaehler<5)
{PollSwitch();}
}

//################################################## ################################################## ###############################################
int main(void)
{
char taste;

Init();
MotorDir(FWD,FWD);
MotorSpeed(200,200);

/* ASURO soll vorwäts fahren
################################################## ################################################## ##*/
while(1)
{ schalter_akt();
taste=PollSwitch();

switch(taste)
{
case( 2)
:StatusLED(RED);
MotorSpeed(200,125);
sleep_s(2);
MotorSpeed(200,200);
StatusLED(GREEN);
break;
/*################################################# ################################################## ##*/
case (4||8||10)
:
MotorDir(RWD,RWD);
StatusLED(YELLOW);
sleep_s(2);
MotorDir(FWD,BREAK);
StatusLED(GREEN);
sleep_s(2);
MotorDir(FWD,FWD);

break;
/*################################################# ################################################## ##*/
case (16)
:
MotorSpeed(125,200);
StatusLED(RED);
sleep_s(2);
StatusLED(GREEN);

MotorSpeed(200,200);

break;
default
:
BackLED(ON,ON);
break;
//################################################## ################################################## ###
//ende switch
}
//ende fkt.block endlos schleife
}

//ende main
}

EDH
10.12.2006, 09:37
der fehler ist in der schalter_akt() funktion.
der zähler wird nie 5 sein.
nehm besser eine for schleife, oder schreib ans ende des anweisungsblockes der while schliefe zaehler++ hin.