hi,

jetzt bleibt der RP 6 zumindest stehen, wenn er mit dem bumper an der bake angekommen ist , das video muss noch ein bischen warten, die lichtverhältnisse sind beim bedeckten himmel nicht gut genug

nun möchte ich weitermachen und in dem beispiel "RP6Control_10_Move2.c" habe ich ein dankbares objekt zum experimentieren gefunden. Komplett verstanden habe ich es noch nicht, aber deshalb will ich ja experimentieren...

dort wird auch auf einen niedrigen batteriestand reagiert:

Code:
// Behaviour check low Battery:

#define BATTERY_LOW 1
behaviour_command_t checkLowBattery = {0, 0, FWD,
                                    false, false, 0, IDLE};

/**
 * In this behaviour routine, we have nothing to do
 */
void behaviour_checkLowBattery(void)
{
}

/**
 * This is a new Event Handler and it gets called when the Battery Voltage
 * is getting low! The Parameter isVoltageLow is true, when the voltage
 * is low and false, when the voltage is OK.
 */
void batteryVoltageLow(uint8_t isVoltageLow)
{
    if(isVoltageLow)
        checkLowBattery.state = BATTERY_LOW;
        bake_suche();
}
die abfrage "if(isVoltageLow)" habe ich um die funktion bake_suche() ergänzt:
Code:
void bake_suche(void)
{

//        accuzustand();


        setLEDs(0b0100);

        writeString_P("bake_suche_1  \n");
        writeChar('\n');
        initRP6Control();
        initLCD();
        startStopwatch3();
        t=0;

        do
        {
            if(getStopwatch3() > 50)
            {
                temp = read_IR_value();

                if (temp !=0)
                {
                    setMultiIOLED1(1);
                    setMultiIOLED1(0);
                    rotate(80, RIGHT, 5, false);
                    temp = read_IR_value();
                    if (temp == 0) stop(); //break;
                    if(bumper_left && bumper_right) //stop();//break;
                    {
                        stop();
//                        break;

                    }

                }
                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;

                            writeInteger(x, DEC);
                            writeChar('\n');
                            writeInteger(y, DEC);
                            writeChar('\n');
                            writeInteger(z, DEC);
                            writeChar('\n');

                            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)
                                {
                                    stop();
//                                    move(100, BWD, DIST_MM(200), false);
//                                    break;
                                }

                            }

                        }

                    }


                }
            }

            task_checkINT0();
            task_I2CTWI();
        }
        while(!bumper_left && !bumper_right);
        stop();

    }
das ganze lässt sich auch kompilieren, also von daher steht dem experimentieren nur eines im weg: auf welchem weg holt sich das "Behaviour check low Battery:" die batteriewerte? Das habe ich leider nicht gefunden...
Um nicht so lange warten zu müssen bis der akku wirklich leer ist, möchte ich die abfrage irgendwie beeinflussen...