Amer Šurković
/
Lab5_Zadatak1
US, Vjezba 5 Stol 3, Amer Surkovic, Almir Hamza Zadatak 1
Diff: main.cpp
- Revision:
- 0:ef0f3fd77065
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Apr 01 13:12:35 2016 +0000 @@ -0,0 +1,170 @@ +#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) + { + + } +}