- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 22

Thema: Asuro Fototransistor test funktioniert nicht!

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
    Was meinst die mit diese If abfrage?

    Code:
    if(ldata[0]>125,ldata[1]>125)
    Versuch dich deine Code so zu schreiben, mit weitere tiefe einsprungen (Tab-Taste) bei jedes neue {} Code-block:

    Code:
    #include <asuro.h>
     #include <myasuro.h>
    
     int main (void)
     {
    
        int anzahlwiederholungen=0, i=6;
        int ldata[2];
    
    
        unsigned int data[2];
        unsigned char t1, t2; <- ich weis nicht warum aber ohne das ";" am anfang wurde mir ein error angezeigt
    
        Init();
        FrontLED(ON);
        LineData(ldata);
    
    
        if(ldata[0]>125,ldata[1]>125)
        { 
            while (1)
            {
                t1 = PollSwitch();
                t2 = PollSwitch();
                if (t1 == 0 && t2 == 0) /* keine Taste */
                {
                    MotorDir(FWD,FWD); /* Rechtsbogen fahren */
                    MotorSpeed(150,120);
                    /* FrontLED(ON);
                    BackLED(OFF,OFF);*/
    
                }
                else if (t1 && t2 && t1 == t2)
                {
                    MotorDir(BREAK,BREAK);
                    if (t1 & 0x07) /* Tasten links gedrückt? */
                    {
                        MotorDir(RWD,RWD); /* auf der Stelle umdrehen */
                        MotorSpeed(150,150);
    
                        /*FrontLED(OFF);
                        BackLED(ON,OFF);*/
                    }
                    if (t1 & 0x38 ) /* Tasten rechts gedrückt? */
                    {
                        MotorDir(FWD,FWD); /* Vorwärts Linkskurve */
                        MotorSpeed(100,150);
    
                        /* FrontLED(OFF);
                        BackLED(OFF,ON);*/
                    }
                    Msleep(1000); /* 1 Sekunde fahren */
                }
            }
    
        }
        else if(ldata[0]<125,ldata[1]<125)
        {
            while (anzahlwiederholungen<i)
            {
                MotorDir(BREAK,BREAK);
                MotorSpeed(BREAK,BREAK);
                StatusLED(GREEN);
                BackLED(ON,OFF);
                StatusLED(YELLOW);
                BackLED(OFF,ON);
                anzahlwiederholungen++;
            }
    
        }
        else if(ldata[0]>ldata[1])
        {
            MotorDir(FWD,FWD);
            MotorSpeed(175,125);
        }
        else if(ldata[0]<ldata[1])
        {
            MotorDir(FWD,FWD);
            MotorSpeed(125,175);
    
        }
    
        return 0;
     }
    Das macht deine Code viel übersichtlicher.

  2. #2
    Neuer Benutzer Öfters hier Avatar von BerndJM
    Registriert seit
    17.03.2012
    Ort
    Neckarmühlbach
    Alter
    66
    Beiträge
    21
    Hi,

    unsigned int data[2]
    ;unsigned char t1, t2; <- ich weis nicht warum aber ohne das ";" am anfang wurde mir ein error angezeigt
    Ist klar, das ist das fehlende ; am Ende der oberen Zeile.
    Code:
    unsigned int data[2];
    unsigned char t1, t2;
    Die eine if Abfrage hat ja Valen schon nachgefragt - das gleiche Fragezeichen ergibt sich bei dem dazugehörigen else if Zweig.

    Dieses
    Code:
    else if (t1 && t2 && t1 == t2)
    erschließt sich mir auch nicht wirklich ...

    Damit
    Code:
    MotorDir(RWD,RWD); /* auf der Stelle umdrehen */
    MotorSpeed(150,150);
    dreht er nicht auf der Stelle um sondern fährt einfach rückwärts.

    Soweit erstmal. Ich würde das ganze erstmal in kleinen Stückchen probieren - also die einzelnen erwünschten Abläufe einzeln testen und mich erst dann, wenn sie funktionieren an die ganze ver"if"zerei machen.

    Grüßle Bernd
    Theoretisch gibt es keinen Unterschied zwischen Theorie und Praxis ...

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.04.2012
    Beiträge
    18
    ja also mein problem war dass ich das programm wie ihr auch gesagt habt in einem schritt geschrieben habe und es nicht in kleine schritte unterteilt habe. deshalb habe ich neu angefangen. ich will nun zuerst ein programm schreiben, bei dem er sobald ein taster gedrückt ist, ein stückchen rückwärts fährt und sich dreht. danach fährt er wieder ein bisschen vorwärts und kommt dann auf eine art kreisbahn dann wird wieder ein taster gedrückt und es fängt von neuem an. damit möchte ich ihn an einer wand entlang fahren lassen.

    Code:
    #include <asuro.h>
    #include <myasuro.h>
    
    
    int rwd(int a, int b)
    	{
    
    	MotorDir(RWD,RWD);
    	MotorSpeed(130,100);
    	Msleep(1000);
    
    	}
    
    int main (void)
    {
    unsigned char taste;
    unsigned char pollswitch;
    
    Init (); 
    
    
    taste = PollSwitch ();
    
    	if(taste>0)
    	{
    	rwd;
    	}
    
    		else
    		{
    
    		MotorDir(FWD,FWD);
    		MotorSpeed(100,100);
    		Msleep(500);
    		MotorDir(FWD,FWD);
    		MotorSpeed(130,100);
    		
    		}
    return 0;
    }
    so sieht mein programm bis jetzt aus aber irgendwie will er weiterhin gerade aus fahren auch wenn ein taster gedrückt ist weis jemand woran das liegen könnte?

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 06.02.2010, 20:29
  2. Antworten: 4
    Letzter Beitrag: 29.09.2009, 17:13
  3. test.c funktioniert nicht
    Von newbie978 im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 27.12.2008, 23:42
  4. Fototransistor T9 funktioniert nicht
    Von mashine-obf im Forum Asuro
    Antworten: 19
    Letzter Beitrag: 18.01.2008, 09:22
  5. Antworten: 7
    Letzter Beitrag: 25.01.2007, 13:00

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress