Amer Šurković
/
Lab5_Zadatak1
US, Vjezba 5 Stol 3, Amer Surkovic, Almir Hamza Zadatak 1
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) { } }