-         

Ergebnis 1 bis 2 von 2

Thema: Programmfehler

  1. #1

    Programmfehler

    Anzeige

    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.
    Code:
      /*
    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
    }

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    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.
    ...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •