BertlTemplate3

Dependencies:   BertlLib mbed

BertlPingPongBlink.cpp

Committer:
Wizo
Date:
2018-11-15
Revision:
0:5fd8e02b1e0e

File content as of revision 0:5fd8e02b1e0e:

#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 BlinkTask();
int direction = 0; //0 = zrueck und 1 = vorwaerts
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_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 ForW ()
{
    pex.ClearLeds();
    mL.SetPow(-0.3);
    mR.SetPow(-0.3);
    direction = 1;
      
    
    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 BlinkTask() 
{
        if( t1.read_ms()>100 ) // alle 100ms = 10Hz
        { 
            t1.reset(); // timer neu starten

            if(direction == 0) 
            {
                pex.ToggleLeds(LED_BL1| LED_BR1);
                pex.ToggleLeds(LED_BL2| LED_BR2);
                
            } else 
            {
                pex.ToggleLeds(LED_FL1| LED_FR1);
                pex.ToggleLeds(LED_FL2| LED_FR2);
            }
        }
    }