- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 255

Thema: IR-bake

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi allerseits,

    eigentlich wollte ich hier ein video reinstellen, dass alles klappt, klappt ja auch aber nur im prinzip. Der RP6 findet brav die bake, fährt hin, bleibt aber per abfrage der bumper nicht zuverlässig genung stehen. mal tut er das, dann wieder nicht, ich glaube, ich habe nun in dem code die möglichkeiten die bumperabfrage zu plazieren ziemlich ausgeschöpft...

    Code:
                task_checkINT0();
                task_I2CTWI();
               if(bumper_left && bumper_right)
               {
                break;
                stop();
                }
    bzw. am ende der do-while schleife:

    Code:
    while(!bumper_left && !bumper_right);
                        break;
                        stop();
    evtl. liegt dort das problem, die abfrage der beiden task liegt innerhalb (am ende) der do-whileschleife? Könnte sich bitte jemand den code anschauen?

    das wird oberhalb der hauptschleife aufgerufen:

    Code:
    I2CTWI_initMaster(100);
        I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
        I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);


    Code:
    case 3://
                    setLEDs(0b0100);
    
                    writeString_P("suche der bake   \n");
                    writeChar('\n');
                    initRP6Control();
                    initLCD();
                    startStopwatch3();
                    t=0;
    
                    while(true)
                    {
                        do
                        {
    
                            if(getStopwatch3() > 50)
                            {
                                temp = read_IR_value();
    
                                if (temp == 0)
                                {
                                    x = getStopwatch3();
                                    setMultiIOLED3(1);
                                    setMultiIOLED3(0);
                                    if (t<10)
                                    {
                                    t++;
    
                                    if (t == 10)
                                    {
                                    y = getStopwatch3();
                                    z = y-x;
                                    t=0;
                                    setStopwatch3(0);
                                    if (z< 600)
                                    {
                                    move(100, FWD, DIST_MM(100), false);
                                    setStopwatch3(0);
                                    t=0;
                                    mSleep(400);
                                    task_checkINT0();
                                    task_I2CTWI();
                                    if(bumper_left && bumper_right)
                                    {
                                    break;
                                    stop();
                                    }
    
                                    }
    
                                    }
    
                                    }
    
    
                                }
    
                                else
                                {
                                    setMultiIOLED1(1);
                                    setMultiIOLED1(0);
                                    rotate(80, RIGHT, 1, false);
                                    setStopwatch3(0);
                                }
                                task_checkINT0();
                                task_I2CTWI();
                                if(bumper_left && bumper_right)
                                {
                                break;
                                stop();
                                }
    
                            }
    
                        task_checkINT0();
                        task_I2CTWI();
                        }
                        while(!bumper_left && !bumper_right);
                        break;
                        stop();
    
                        /**************************/
                        uint8_t key_1;
                        mSleep(100);
                        key_1 = getMultiIOPressedButtonNumber();
                        if(key_1 != 0) break;
                        stop();
                        /**************************/
                    }
    
                        break;
    Geändert von inka (03.02.2014 um 14:46 Uhr)
    gruß inka

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Thorben W
    Registriert seit
    17.02.2012
    Ort
    Niedersachsen
    Beiträge
    108
    Muss das break; nicht hinter das stop();?
    Weil bei break wird die Schleife verlassen:
    break

    Mit dem Schlüsselwort break können wir zu jeder Zeit eine Schleife verlassen, ohne auf den Kontrollpunkt warten zu müssen.

    http://www.c-howto.de/tutorial-schleifen-break.html

    gruß Thorben

Ähnliche Themen

  1. IR-Bake
    Von tornado im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 05.07.2007, 17:37
  2. IR-Bake
    Von Bernd-das-Brot im Forum Sensoren / Sensorik
    Antworten: 38
    Letzter Beitrag: 13.12.2005, 16:14
  3. ir-bake
    Von pebisoft im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 8
    Letzter Beitrag: 17.01.2005, 13:41
  4. ir-bake
    Von pebisoft im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.01.2005, 07:01
  5. Bake
    Von techboy im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 02.11.2004, 10:17

Berechtigungen

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

12V Akku bauen