verschiedene Funktionen mit Interrupt

Dependencies:   mbed

main.cpp

Committer:
haunsi
Date:
2020-01-22
Revision:
0:1c9547d9c57c

File content as of revision 0:1c9547d9c57c:

#include "mbed.h"

DigitalOut myled(LED1);

//        D13   A6   D12   D11   D9    D6    D3     D2
BusOut lb(PB_3,PA_7,PB_4, PB_5, PA_8, PB_1, PB_0, PA_12);
DigitalOut red (D1), green(D0), blue(D10);

DigitalIn btn1(A1);
DigitalIn btn2(A2);

InterruptIn sw1(A1);

void runlightright();
void runlightleft();
void btntest();
void BtnLedTest1();
void RGB();
void interrupt();
void runlightstep(); 

int main() {
   //runlightright();
   //runlightleft();
   //btntest();
   //RGB();
   /*while(1){
   BtnLedTest1();
   }*/
   sw1.rise(interrupt);
   
   while(1)
   {}
}

//LEDs leuchten abwechselnd von Rechts nach Links
void runlightright()
{
    while(1){
    lb=1;
    for(int i = 0; i <= 8; i++)
    {
        wait_ms(200);
        lb = lb << 1;
    }
    
    }
}

//LEDs leuchten abwechselnd von Links nach Rechts
void runlightleft()
{
    while(1){
    lb=128;
    for(int i = 0; i <= 8; i++)
    {
        wait_ms(200);
        lb = lb >> 1;
    }
    }   
}
void btntest(){
    
    while(1){
    if(btn1.read() == 0)
    {
        lb = lb | 0xFF;
    }
    if(btn2.read() == 0)
    {
        lb = lb | 2;
    }
    else
    {
        lb = 0;
    }
    }
}

void BtnLedTest1()
{    
    if( btn1.read()==0 )        
        lb = lb | 0x0F;
    if( btn2.read()==0 )
        lb = lb | 0xF0;
    wait_ms(200);
    lb = 0;
    wait_ms(200);
}

void RGB()
{
    while(1)
    {
        red =1;
        wait_ms(5); 
        green = 1;
        wait_ms(5);  
        
        red =0;
        wait_ms(5); 
        green = 0;
        wait_ms(5);                
    }
}
void interrupt()
{
    if(sw1.read() == 0)
    runlightstep();
}
void runlightstep()
{
    if(lb==0)
     lb = 1;
    else 
     lb = lb << 1;
    
}