-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28

Thema: Hilfe bei Interruptprogrammierung und Go()

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23

    Hilfe bei Interruptprogrammierung und Go()

    Anzeige

    Hallo, ich brauche eure Hilfe :

    Der Asuro fährt ja ne beliebige Strecke mit der Go Funktion ! Nun soll er aber,wenn er vor Ablauf dieser Strecke auf einen Widerstand trifft (Taster), so soll er z.B rückwärts fahren.
    Wie und wo baue ich ein Interrupt ein ?

    cu

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    bau einfach ans ende while schleife in der go funktion eine tasterabfrage ein.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23
    Hm? Wie? Dann fährt er doch seine 12mm aus, erst dann prüft er, ob Tastert betätigt sind... Aber das wollte ich ja nicht, sonder ne Abfrage während er fährt

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    äh der fehler ist mir grad auch aufgefallen, und ahb deswegen mein posting entsprechend geändert

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23
    du meinst die Funktion inner asuro.c ?
    Was bringt mir das denn?Ich will ihn anschließend doch irgendwelche Anweisungen geben... Geht das nicht im normalen Programm

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    nacdhem er festgestellt hat, das ein taster gedrückt ist fügst du return 0 ein. dann beendet er dir die funktion an der stelle, und der code wird ganz normal weiter ausgeführt.

    mfg EDH

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    wenn du das jetzt an den anfang der programm.c (oder wie die bei dir halt heißt) copiertst, musst du gar nichts an der asuro.h ändern.
    Die funktion GoTaster fäöhrt eine bestimmte strecke, bleibt aber bei einem hinderniss sofort stehen.
    probier mal aus, ob das funktioniert, ich habs auf die schnelle nicht getestet.

    hier der code:
    Code:
    int GoTaster(int distance, int speed)
    {
    	int enc_count = 0;
    	int tot_count = 0;
    	int diff = 0;
    	int l_speed = speed, r_speed = speed;
    	enc_count=abs(distance);
    	
    //	enc_count=distance*10000;
    //	enc_count/=12823;
    	
    	Encoder_Set(0,0);		// reset encoder
    
    	MotorSpeed(l_speed,r_speed);
    	if(distance<0) MotorDir(RWD,RWD);
    	else MotorDir(FWD,FWD);
    
    	while(tot_count<enc_count) {
    		tot_count += encoder[LEFT];
    		diff = encoder[LEFT] - encoder[RIGHT];
    		if (diff > 0) { //Left faster than right
    			if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
    			else r_speed += 10;
    		}
    		if (diff < 0) { //Right faster than left
    			if ((r_speed > speed) || (l_speed > 244)) r_speed -= 10;
    			else l_speed += 10;
    		}
    			
    		Encoder_Set(0,0);		// reset encoder
    		MotorSpeed(l_speed,r_speed);
    		if (PollSwitch()>0) {
    			MotorDir(BREAK,BREAK);
    			MotorSpeed(0,0);
    			return 0;
    		}	
    		Msleep(1);
    	}
    	MotorDir(BREAK,BREAK);
    	Msleep(200);
    	return 0;
    }
    mfg EDH

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    19.10.2006
    Beiträge
    23
    Ne, funktioniert leider überhaupt nicht...
    ist das denn so schwer ?

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    ja das scheint schon recht diffizil zu sein.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    ist das denn so schwer ?
    ja das scheint schon recht diffizil zu sein.
    Wenn man seinen Hirn nicht einschalten kann/will ist es sicher schwer...

    Ein Tastendruck löst einen externen Interrupt auf Pin Int1 aus.

    Vielleicht bringt es Euch weiter...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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