Interrupt In btn fall und rise

Dependencies:   mbed

main.cpp

Committer:
gigo2191
Date:
2020-01-11
Revision:
0:92d206ce2036

File content as of revision 0:92d206ce2036:

#include "mbed.h"
 
BusOut leds (D12, D11, D10, D9);
InterruptIn btn (A0);

bool linkslauf = true;  //aktiviert den linkslauf
bool rechtslauf = false; //aktiviert den rechtslauf
uint8_t led = 0; //Variable für die Led
Ticker t1;  

void left() // wenn der linkslauf aktiviert ist
{
    if(led == 0)
    led = 1;
    
    leds = led;
    led = led << 1;
    rechtslauf = false;
    linkslauf = false;
    }
    
    void right() // wenn der rechtslauf aktiviert ist
    {
    if(led == 0)
    led = 8;
    
    leds = led;
    led = led >> 1;
    linkslauf = true;
    rechtslauf = false;
    }

void timer1()
{
    if(linkslauf) //wenn der linkslauf aktiviert ist
    t1.attach(callback(&left), 1.0f);
    else
    rechtslauf = true;  //sonst wird der rechtslauf aktiviert
    }
    
void timer2()
{
    if(rechtslauf) //wenn gerade linkslauf aktiviert ist, wird der rechtslauf aktiviert, reagiert auf btn.fall
    t1.attach((right), 1.0f);
    }
    
int main()
{
    btn.rise(timer1);  //für den linkslauf
    btn.fall(timer2);  //für den rechtslauf
    }