BertlTemplate4

Dependencies:   BertlLib mbed

BertlPingPongDirection.cpp

Committer:
Wizo
Date:
2018-11-15
Revision:
0:7b2a14b523de

File content as of revision 0:7b2a14b523de:

#include "mbed.h"
#include "Serial_HL.h"
#include "Bertl14.h"
#include "BertlObjects.h"

//              main=2^0  LS    ENC 2^2
BusOut boardPow(p30, P1_6, P1_7);

// ls5 nur beim Betrl15
// AnalogInHL ls1(p18), ls2(p16), ls3(p19), ls4(p17); // B14

//AnalogInHL ls1(p18), ls2(p16), ls3(p20), ls4(p19), ls5(p17); // B15
//void ButonBlinker();

//void MotorTest ();

//void BackW();
void ForW();
void Left();
void Right();
void BlinkTask();
int direction = 0; //0= zurück, 1 = vorwärts
Timer t1;





int main(void)
{
    boardPow = 1; wait_ms(10);
    InitBertl();
    pex.useISR = 0; leds = 9;
    pex.ClearLeds();
    t1.start();
    pex.WaitUntilButtonPressed();
    while (1)
    {
        //ButonBlinker();
        //MotorTest ();
        //BackW();
        //wait_ms(1000);
        ForW();
        wait_ms(1000);
    }

    return 1;
}
/*
void ButonBlinker()
{
pex.ReadButtons();

if (pex.IsButton(BTN_FLL))
{
pex.SetLeds(LED_FL1|LED_FL2);
}

if (pex.IsButton(BTN_FRR))
{
pex.SetLeds(LED_FR1|LED_FR2);
}
wait_ms(100);
pex.ClearLeds();
wait_ms(100);
}
*/

/*
void MotorTest ()
{
if (pex.IsButton(BTN_FRR||BTN_FLL))
{
mL.SetPow(-0.2);
mR.SetPow(-0.2);
}


else if (pex.IsButton(BTN_BR||BTN_BL))
{
mL.SetPow(0.2);
mR.SetPow(0.2);
}

//mL.SetPow(0.2);
//mR.SetPow(0.2);

//wait_ms(2000);

//mL.SetPow(-0.2);
//mR.SetPow(-0.2);

//wait_ms(2000);




}
*/

//void BackW()
//{
//  pex.ClearLeds();
//  mL.SetPow(0.3);
//  mR.SetPow(0.3);
//  direction = 0;
//
//  //  pex.SetLeds(LED_BL1 | LED_BL2);
//  //  pex.SetLeds(LED_BR1 | LED_BR2);
//
//  while (1)
//  {
//      pex.ReadButtons();
//      BlinkTask();
//
//      if (pex.IsAnyBackButton())
//      {
//          break;
//      }
//
//  }
//  mL.SetPow(0);
//  mR.SetPow(0);
//
//
//}


void ForW()
{
    pex.ClearLeds();
    mL.SetPow(-0.3);
    mR.SetPow(-0.3);
    direction = 1;

    //  pex.SetLeds(LED_FL1 | LED_FL2);
    //  pex.SetLeds(LED_FR1 | LED_FR2);

    while (1)
    {
        pex.ReadButtons();
        BlinkTask();

        if (pex.IsRightFrontButton())
        {
            mL.SetPow(-0.3);
            mR.SetPow(-0.5);
            //break;
        }
        else if (pex.IsLeftFrontButton())
        {
            mL.SetPow(-0.5);
            mR.SetPow(-0.3);
        }
        else if (pex.IsMiddleFrontButton())
        {
            mL.SetPow(-0.5);
            mR.SetPow(-0.5);
        }

    }
    mL.SetPow(0);
    mR.SetPow(0);

}

/*void Right()
{
    pex.ClearLeds();
    mL.SetPow(-0.3);
    mR.SetPow(-0.3);
    direction = 1;

    //  pex.SetLeds(LED_FL1 | LED_FL2);
    //  pex.SetLeds(LED_FR1 | LED_FR2);

    while (1)
    {
        pex.ReadButtons();
        BlinkTask();

        if (pex.IsAnyFrontButton())
        {
            break;
        }

    }
    mL.SetPow(0);
    mR.SetPow(0);

}*/

void Left()
{
    pex.ClearLeds();
    mL.SetPow(-0.3);
    mR.SetPow(-0.3);
    direction = 1;

    //  pex.SetLeds(LED_FL1 | LED_FL2);
    //  pex.SetLeds(LED_FR1 | LED_FR2);

    while (1)
    {
        pex.ReadButtons();
        BlinkTask();

        if (pex.IsAnyFrontButton())
        {
            break;
        }

    }
    mL.SetPow(0);
    mR.SetPow(0);

}

void BlinkTask()
{
    if (t1.read_ms()>100) // alle 100ms = 10Hz
    {
        t1.reset(); // timer neu starten
        if (direction == 0)
        {
            pex.ToggleLeds(LED_BL1 | LED_BL2);
            pex.ToggleLeds(LED_BR1 | LED_BR2);
        }
        else
        {
            pex.ToggleLeds(LED_FL1 | LED_FL2);
            pex.ToggleLeds(LED_FR1 | LED_FR2);
        }
    }
}