-         

Ergebnis 1 bis 4 von 4

Thema: Zeitliche begrenzung beim fahren Hilfe benötigt

  1. #1
    Neuer Benutzer
    Registriert seit
    30.10.2011
    Ort
    Mönchengladbach
    Beiträge
    4

    Frage Zeitliche begrenzung beim fahren Hilfe benötigt

    Anzeige

    Hallo zusammen
    kurz zu mir bin absoluter neuling habe den asuro gerade 4 Tage und mein erstes programm geschrieben Ziel ist es wenn k1 o. k2, gedrückt werden rechts drehen und bei k5 o.k6 halt links das aber zeitlich damit eine 90grad drehung klappt. bei k1,k2 klappt es schon aber bei k5,k6 nicht habe schon versucht die zeitbegrenzung dort einzusetzten usw aber es klappt ned dann dereht er immer nur in eine richtung und fährt nicht mehr geradeaus.
    Wenn einer verbesserungen hat bin ich gerne dabei

    Hier das programm:

    #include "asuro.h"

    int main(void)
    {
    Init ();
    int z;
    FrontLED(ON);
    while(1)
    {
    PollSwitch();
    if (PollSwitch() & 0x30)
    {
    MotorDir(BREAK,RWD);
    MotorSpeed(0,180);
    for(z=0 ; z < 270 ; z++) Sleep(216);
    }
    else if (PollSwitch() & 0x03)
    {
    MotorDir(RWD,BREAK);
    MotorSpeed(170,0);
    }

    else
    {
    MotorDir(FWD,FWD);
    MotorSpeed(170,170);
    }
    }
    return 0;
    }


    Wie gesagt bin neuling

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Sinnvoll scheint mir das mehrmalige Einlesen des Tastenwertes und mit diesem Wert dann weiterzuarbeiten. Vermutlich wird ein Taster falsch berechnet (Dein K6 hatte doch nicht richtig funktioniert?). Jetzt zeigen die BackLEDs, welcher Taster als gedrückt erkannt wird:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	char taste, taste2;
    	int z;
    
    	Init ();
    	FrontLED(ON);
    	StatusLED(OFF);
    	taste=PollSwitch();
    	while(1)
    	{
    		taste2=taste; // letzen Wert von Pollswitch() merken
    		taste=PollSwitch(); // neuen Wert einlesen
    
    		if((taste==taste2) && (taste>0)) // 2x gleicher Wert und eine Taste gedrückt?
    		{
    			if((taste & 0b110000) && !(taste & 0b001111)) //  // nur K1 oder K2?
    			{
    				StatusLED(RED);
    				MotorDir(BREAK,RWD);
    				MotorSpeed(0,180);
    				for(z=0 ; z < 270 ; z++) Sleep(216);
    			}
    				else if((taste & 0b000011) && !(taste & 0b111100)) // K5 oder K6
    				{
    					StatusLED(GREEN);
    					MotorDir(RWD,BREAK);
    					MotorSpeed(170,0);
    					for(z=0 ; z < 270 ; z++)
    					{
    						if(PollSwitch() & 1) BackLED(OFF,ON); else BackLED(ON,OFF); // K5 oder K6 gedrückt?
    						Sleep(216);
    					}
    				}
    					else // Rest
    					{
    						StatusLED(YELLOW);
    						MotorDir(RWD,RWD);
    						MotorSpeed(170,180);
    						for(z=0 ; z < 270 ; z++) Sleep(216);
    		    			MotorDir(BREAK,RWD);
    						MotorSpeed(0,180);
    						for(z=0 ; z < 270 ; z++) Sleep(216);
    					}
    		}
    		else
    		{
    			BackLED(OFF,OFF);
    			StatusLED(OFF);
    			MotorDir(FWD,FWD);
    			MotorSpeed(170,170);
    		}
    	}
    	return 0;
    }
    (ungetestet)

    Möglicherweise musst du deine Taster kalibrieren:

    http://www.arexx.com/forum/viewtopic.php?f=19&t=1378

    Gruß

    mic
    Geändert von radbruch (05.11.2011 um 13:06 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer
    Registriert seit
    30.10.2011
    Ort
    Mönchengladbach
    Beiträge
    4
    doch die taster funktionieren alle nur das er halt bei k5,k6 auch eine 90grad drehung macht klappt ned wenn ich dort die zeitliche begrenzung einsetze fährt er nur noch rechts also RWD,BREAK nach dem motto

  4. #4
    Neuer Benutzer
    Registriert seit
    30.10.2011
    Ort
    Mönchengladbach
    Beiträge
    4
    #include "asuro.h"

    int main(void)
    {
    Init ();
    int z=0;
    FrontLED(ON);
    while(1)
    {
    if (PollSwitch() & 0x30)
    {
    MotorDir(BREAK,RWD);
    MotorSpeed(0,170);
    for(z=0 ; z < 270 ; z++) Sleep(216);
    }
    if (PollSwitch() & 0x03)
    {
    MotorDir(RWD,BREAK);
    MotorSpeed(170,0);
    for(z=0 ; z < 270 ; z++) Sleep(216);
    }

    else
    {
    MotorDir(FWD,FWD);
    MotorSpeed(170,170);
    }
    }
    return 0;
    }



    so meine ich das dann fährt er nur noch rechts wenn ich ihn einschalte und der mr zuckt nur noch als ob dann dort ein konflikt ist oder so

    wenn ich es ohne zeitbegrenzung mache bei k5,k6 fährt er genau richtig aber halt nur solange der taster gedrückt ist (an der wand vorbei zitternd

    Danke an radbruch bin jetzt schlauer geworden
    Geändert von voxya (05.11.2011 um 15:26 Uhr)

Ähnliche Themen

  1. [Hilfe benötigt] Easy ASURO Anleitung benötigt
    Von wildtobias im Forum Asuro
    Antworten: 3
    Letzter Beitrag: 18.01.2011, 13:28
  2. Anfänger benötigt Hilfe :D
    Von CANDA im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 16.02.2010, 23:38
  3. Schaltplan der Hilfe benötigt
    Von XBert im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 24
    Letzter Beitrag: 03.09.2008, 13:33
  4. ANfänger benötigt Hilfe
    Von zorg im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 12.02.2008, 20:40
  5. Akku beim fahren laden !?
    Von 2A im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 18.06.2007, 12:05

Stichworte

Berechtigungen

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