US, Vjezba 5 Stol 3, Amer Surkovic, Almir Hamza Zadatak 1

Dependencies:   mbed

main.cpp

Committer:
2016US_AmerSurkovic
Date:
2016-04-01
Revision:
0:ef0f3fd77065

File content as of revision 0:ef0f3fd77065:

#include "mbed.h"
#define dp23 P0_0
 
DigitalOut enable(dp14);

DigitalOut D2(dp23); // 7 segmentni displej
DigitalOut D3(dp24);
DigitalOut D4(dp25);
DigitalOut A(dp26);
DigitalOut B(dp27);
DigitalOut C(dp5);
DigitalOut D(dp6);
DigitalOut E(dp28);
DigitalOut F(dp4);
DigitalOut G(dp18);
DigitalOut DP(dp17);

InterruptIn taster1(dp1);
InterruptIn taster2(dp2);

Ticker tiker;
Timer tajmer;
Timer debounce1; // reakcije na vanjske asinhrone dogadjaje (titranje kontakta tastera)
Timer debounce2;

int aktivno = 0;
int zastoj = 0;

void ispisiCifru(int cifra1, int druga)
{        
    if(cifra1==0)
    {
        A=B=C=D=E=F=0;
        G=1;
        if(druga==1) DP=0;
    }
    else if(cifra1==1)
    {
        B=C=0;
        A=E=D=F=G=1;
        if(druga==1) DP=0;
    }
    else if(cifra1==2)
    {
        F=C=1;
        G=E=D=B=A=0;
        if(druga==1) DP=0;
    }
    else if(cifra1==3)
    {
        F=E=1;
        G=D=C=B=A=0;
        if(druga==1) DP=0;
    }
    else if(cifra1==4)
    {
        E=D=A=1;
        G=F=C=B=0;
        if(druga==1) DP=0;
    }
    else if(cifra1==5)
    {
        E=B=1;
        G=F=D=C=A=0;
        if(druga==1) DP=0;
    }
    else if(cifra1==6)
    {
        B = 1;
        G=F=E=D=C=A=0;
        if(druga==1) DP=0;
    }
    else if(cifra1==7)
    {
        G=F=E=D=1;
        C=B=A=0;  
        if(druga==1) DP=0;
    }
    else if(cifra1==8)
    {
        G=F=E=D=C=B=A=0;
        if(druga==1) DP=0;
    }
    else if(cifra1==9)
    {
        E=1;
        G=F=D=C=B=A=0;
        if(druga==1) DP=0;
    }
}

int osvjezavanje = 0;

void ispisiBroj()
{
        int broj = tajmer.read() * 10;
        
        int cifra1 = broj%10;
        broj /= 10;
        int cifra2 = broj%10;
        broj /= 10;
        int cifra3 = broj%10;
        D4=D2=D3=1;
            
        if(osvjezavanje==0){
            A=B=C=D=E=F=G=DP=1;
            D4=0;
            ispisiCifru(cifra1,0);
            osvjezavanje++;
        }
        else if(osvjezavanje==1){
            A=B=C=D=E=F=G=DP=1;
            D3=0;
            ispisiCifru(cifra2,1);
            osvjezavanje++;
        }
        else if(osvjezavanje==2){
            A=B=C=D=E=F=G=DP=1;
            D2=0;
            ispisiCifru(cifra3,0);
            osvjezavanje=0;
        }
 
}

void stopaj()
{   
    if(debounce1.read_ms()>100)
    {
        if(aktivno && !zastoj){
            aktivno = 0;
            zastoj = 1;
            tajmer.stop();
        }
        else if(!aktivno && !zastoj){
            aktivno = 1;
            tajmer.start();          
        }
        else{
            aktivno = 0;
            zastoj = 0;
            tajmer.start();
        }
        debounce1.reset();
    }
   
}

void reset(){
    if(debounce2.read_ms()>100){
        tajmer.reset();
        debounce2.reset();
    }
}

int main() {
    enable = 1;
    
    tiker.attach(&ispisiBroj,0.001); // Prosljedujemo adresu interapt rutine i T
    
    debounce1.start();
    debounce2.start();
    taster1.rise(&stopaj);
    taster2.rise(&reset);

    while(1)
    {
       
    }
}