- UNI-T-Messgeraete    Werbung      
Ergebnis 1 bis 10 von 11

Thema: Es leuchtet nur die Status-LED beim ASURO

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ok, dann bitte las den Code sehen. Vielleicht geht es am Anfang in einer Endlos-schleife und komt nicht wieder aus den Koma.

    [edit]Auch schon mal fertige Hex-dateien von zbs. Arexx-Henk ausprobiert? http://home.kpn.nl/h.van.winkoop/Asu...uSfwPagFrm.htm
    Geändert von Valen (06.06.2014 um 14:39 Uhr)

  2. #2
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Hier der Quellcode (Vorsicht, Lang!):
    Code:
    #include "asuro.h"
    
    unsigned char right;
    unsigned char left;
    unsigned char time;
    unsigned char dir;
    
    void motorcontrol(unsigned char dir, unsigned char left, unsigned char right, unsigned char time){
    	int counter = 0;
    	if(dir == 2){
    		MotorDir(FWD,FWD);
    	}
    	else if(dir == 1) {
    		MotorDir(RWD,RWD);
    	}
    	else if(dir == 0){
    		MotorDir(BREAK,BREAK);
    	}
    	MotorSpeed(left,right);
    	if(left+10 > right){
    		BackLED(ON,OFF);
    	}
    	else if(left+10 < right){
    		BackLED(OFF,ON);
    	}
    	else{
    		BackLED(OFF,OFF);
    	}
    	do{
    		Sleep(255);
    		counter++;
    	}
    	while(time >= counter);
    }
    
    int switchcontrol(){
    	if(PollSwitch()==0){
    		dir = 2;
    		right = 255;
    		left = 245;
    		time = 0;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==32){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 200;
    		left = 255;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==16){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 175;
    		left = 255;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	
    	else if(PollSwitch()==8){
    		dir = 1;
    		right = 0;
    		left = 245;
    		time = 223;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 0;
    		time = 223;
    		motorcontrol(dir, left,right,time);
    		return 0;
    	}
    	else if(PollSwitch()==4){
    		dir = 1;
    		right = 255;
    		left = 0;
    		time = 223;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 0;
    		left = 245;
    		time = 223;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==2){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 175;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==1){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 200;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;	
    	}
    	else if(PollSwitch()>32){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		motorcontrol(dir, left,right, time);
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 0;
    		time = 200;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    }
    	
    int statuscontrol(){
    	StatusLED(GREEN);
    	int retval;
    	SerWrite("Programm startet!\n\r",21);
    	while(1){
    		retval = switchcontrol();
    		if(retval == 0){
    			SerWrite("Alles in Ordnung!\n\r",21);
    			BackLED(OFF,OFF);
    		}
    		else if(retval==1){
    			SerWrite("Steuerungsfehler!\n\r",21);
    			break;
    		}
    		else {
    			SerWrite("Unbekannter Fehler!\n\r",22);
    			dir = 0;
    			right = 0;
    			left = 0;
    			time = 0;
    			motorcontrol(dir, right, left, time);
    			BackLED(OFF,OFF);
    			break;
    		}
    	}
    	while(1){
    		StatusLED(RED);
    		dir = 0;
    		right = 0;
    		left = 0;
    		time = 0;
    		motorcontrol(dir, right, left, time);
    		BackLED(OFF,OFF);
    		SerWrite("Ende!\n\r",8);
    		while(1){
    			Sleep(255);
    		}
    	}
    	return 0;
    }
    	
    int main(void){
    	Init();
    	while(1){
    		int statuscontrol();
    	}
    	return 0;
    }
    Das ist ein Beispiel, aber bei mehreren anderen Programmen gibt´s das Problem auch.

    LG
    Spacy Bar

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 08.09.2008, 12:35
  2. Status-LED leuchtet nicht grün
    Von jeffreydj im Forum Asuro
    Antworten: 30
    Letzter Beitrag: 12.02.2007, 20:39
  3. Programm-probleme | Nur Status-LED leuchtet - Gelöst
    Von E-T im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 11
    Letzter Beitrag: 03.04.2006, 15:23
  4. Asuro Status LED nur rot + Buch Frage
    Von MCMaci im Forum Asuro
    Antworten: 5
    Letzter Beitrag: 05.11.2005, 18:31
  5. Antworten: 5
    Letzter Beitrag: 11.08.2005, 20:49

Stichworte

Berechtigungen

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

    Werbung      LiFePO4 Speicher Test