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

Dependencies:   mbed

Committer:
2016US_AmerSurkovic
Date:
Fri Apr 01 13:12:35 2016 +0000
Revision:
0:ef0f3fd77065
US, Vjezba 5 Stol 3, Amer Surkovic, Almir Hamza Zadatak 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
2016US_AmerSurkovic 0:ef0f3fd77065 1 #include "mbed.h"
2016US_AmerSurkovic 0:ef0f3fd77065 2 #define dp23 P0_0
2016US_AmerSurkovic 0:ef0f3fd77065 3
2016US_AmerSurkovic 0:ef0f3fd77065 4 DigitalOut enable(dp14);
2016US_AmerSurkovic 0:ef0f3fd77065 5
2016US_AmerSurkovic 0:ef0f3fd77065 6 DigitalOut D2(dp23); // 7 segmentni displej
2016US_AmerSurkovic 0:ef0f3fd77065 7 DigitalOut D3(dp24);
2016US_AmerSurkovic 0:ef0f3fd77065 8 DigitalOut D4(dp25);
2016US_AmerSurkovic 0:ef0f3fd77065 9 DigitalOut A(dp26);
2016US_AmerSurkovic 0:ef0f3fd77065 10 DigitalOut B(dp27);
2016US_AmerSurkovic 0:ef0f3fd77065 11 DigitalOut C(dp5);
2016US_AmerSurkovic 0:ef0f3fd77065 12 DigitalOut D(dp6);
2016US_AmerSurkovic 0:ef0f3fd77065 13 DigitalOut E(dp28);
2016US_AmerSurkovic 0:ef0f3fd77065 14 DigitalOut F(dp4);
2016US_AmerSurkovic 0:ef0f3fd77065 15 DigitalOut G(dp18);
2016US_AmerSurkovic 0:ef0f3fd77065 16 DigitalOut DP(dp17);
2016US_AmerSurkovic 0:ef0f3fd77065 17
2016US_AmerSurkovic 0:ef0f3fd77065 18 InterruptIn taster1(dp1);
2016US_AmerSurkovic 0:ef0f3fd77065 19 InterruptIn taster2(dp2);
2016US_AmerSurkovic 0:ef0f3fd77065 20
2016US_AmerSurkovic 0:ef0f3fd77065 21 Ticker tiker;
2016US_AmerSurkovic 0:ef0f3fd77065 22 Timer tajmer;
2016US_AmerSurkovic 0:ef0f3fd77065 23 Timer debounce1; // reakcije na vanjske asinhrone dogadjaje (titranje kontakta tastera)
2016US_AmerSurkovic 0:ef0f3fd77065 24 Timer debounce2;
2016US_AmerSurkovic 0:ef0f3fd77065 25
2016US_AmerSurkovic 0:ef0f3fd77065 26 int aktivno = 0;
2016US_AmerSurkovic 0:ef0f3fd77065 27 int zastoj = 0;
2016US_AmerSurkovic 0:ef0f3fd77065 28
2016US_AmerSurkovic 0:ef0f3fd77065 29 void ispisiCifru(int cifra1, int druga)
2016US_AmerSurkovic 0:ef0f3fd77065 30 {
2016US_AmerSurkovic 0:ef0f3fd77065 31 if(cifra1==0)
2016US_AmerSurkovic 0:ef0f3fd77065 32 {
2016US_AmerSurkovic 0:ef0f3fd77065 33 A=B=C=D=E=F=0;
2016US_AmerSurkovic 0:ef0f3fd77065 34 G=1;
2016US_AmerSurkovic 0:ef0f3fd77065 35 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 36 }
2016US_AmerSurkovic 0:ef0f3fd77065 37 else if(cifra1==1)
2016US_AmerSurkovic 0:ef0f3fd77065 38 {
2016US_AmerSurkovic 0:ef0f3fd77065 39 B=C=0;
2016US_AmerSurkovic 0:ef0f3fd77065 40 A=E=D=F=G=1;
2016US_AmerSurkovic 0:ef0f3fd77065 41 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 42 }
2016US_AmerSurkovic 0:ef0f3fd77065 43 else if(cifra1==2)
2016US_AmerSurkovic 0:ef0f3fd77065 44 {
2016US_AmerSurkovic 0:ef0f3fd77065 45 F=C=1;
2016US_AmerSurkovic 0:ef0f3fd77065 46 G=E=D=B=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 47 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 48 }
2016US_AmerSurkovic 0:ef0f3fd77065 49 else if(cifra1==3)
2016US_AmerSurkovic 0:ef0f3fd77065 50 {
2016US_AmerSurkovic 0:ef0f3fd77065 51 F=E=1;
2016US_AmerSurkovic 0:ef0f3fd77065 52 G=D=C=B=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 53 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 54 }
2016US_AmerSurkovic 0:ef0f3fd77065 55 else if(cifra1==4)
2016US_AmerSurkovic 0:ef0f3fd77065 56 {
2016US_AmerSurkovic 0:ef0f3fd77065 57 E=D=A=1;
2016US_AmerSurkovic 0:ef0f3fd77065 58 G=F=C=B=0;
2016US_AmerSurkovic 0:ef0f3fd77065 59 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 60 }
2016US_AmerSurkovic 0:ef0f3fd77065 61 else if(cifra1==5)
2016US_AmerSurkovic 0:ef0f3fd77065 62 {
2016US_AmerSurkovic 0:ef0f3fd77065 63 E=B=1;
2016US_AmerSurkovic 0:ef0f3fd77065 64 G=F=D=C=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 65 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 66 }
2016US_AmerSurkovic 0:ef0f3fd77065 67 else if(cifra1==6)
2016US_AmerSurkovic 0:ef0f3fd77065 68 {
2016US_AmerSurkovic 0:ef0f3fd77065 69 B = 1;
2016US_AmerSurkovic 0:ef0f3fd77065 70 G=F=E=D=C=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 71 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 72 }
2016US_AmerSurkovic 0:ef0f3fd77065 73 else if(cifra1==7)
2016US_AmerSurkovic 0:ef0f3fd77065 74 {
2016US_AmerSurkovic 0:ef0f3fd77065 75 G=F=E=D=1;
2016US_AmerSurkovic 0:ef0f3fd77065 76 C=B=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 77 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 78 }
2016US_AmerSurkovic 0:ef0f3fd77065 79 else if(cifra1==8)
2016US_AmerSurkovic 0:ef0f3fd77065 80 {
2016US_AmerSurkovic 0:ef0f3fd77065 81 G=F=E=D=C=B=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 82 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 83 }
2016US_AmerSurkovic 0:ef0f3fd77065 84 else if(cifra1==9)
2016US_AmerSurkovic 0:ef0f3fd77065 85 {
2016US_AmerSurkovic 0:ef0f3fd77065 86 E=1;
2016US_AmerSurkovic 0:ef0f3fd77065 87 G=F=D=C=B=A=0;
2016US_AmerSurkovic 0:ef0f3fd77065 88 if(druga==1) DP=0;
2016US_AmerSurkovic 0:ef0f3fd77065 89 }
2016US_AmerSurkovic 0:ef0f3fd77065 90 }
2016US_AmerSurkovic 0:ef0f3fd77065 91
2016US_AmerSurkovic 0:ef0f3fd77065 92 int osvjezavanje = 0;
2016US_AmerSurkovic 0:ef0f3fd77065 93
2016US_AmerSurkovic 0:ef0f3fd77065 94 void ispisiBroj()
2016US_AmerSurkovic 0:ef0f3fd77065 95 {
2016US_AmerSurkovic 0:ef0f3fd77065 96 int broj = tajmer.read() * 10;
2016US_AmerSurkovic 0:ef0f3fd77065 97
2016US_AmerSurkovic 0:ef0f3fd77065 98 int cifra1 = broj%10;
2016US_AmerSurkovic 0:ef0f3fd77065 99 broj /= 10;
2016US_AmerSurkovic 0:ef0f3fd77065 100 int cifra2 = broj%10;
2016US_AmerSurkovic 0:ef0f3fd77065 101 broj /= 10;
2016US_AmerSurkovic 0:ef0f3fd77065 102 int cifra3 = broj%10;
2016US_AmerSurkovic 0:ef0f3fd77065 103 D4=D2=D3=1;
2016US_AmerSurkovic 0:ef0f3fd77065 104
2016US_AmerSurkovic 0:ef0f3fd77065 105 if(osvjezavanje==0){
2016US_AmerSurkovic 0:ef0f3fd77065 106 A=B=C=D=E=F=G=DP=1;
2016US_AmerSurkovic 0:ef0f3fd77065 107 D4=0;
2016US_AmerSurkovic 0:ef0f3fd77065 108 ispisiCifru(cifra1,0);
2016US_AmerSurkovic 0:ef0f3fd77065 109 osvjezavanje++;
2016US_AmerSurkovic 0:ef0f3fd77065 110 }
2016US_AmerSurkovic 0:ef0f3fd77065 111 else if(osvjezavanje==1){
2016US_AmerSurkovic 0:ef0f3fd77065 112 A=B=C=D=E=F=G=DP=1;
2016US_AmerSurkovic 0:ef0f3fd77065 113 D3=0;
2016US_AmerSurkovic 0:ef0f3fd77065 114 ispisiCifru(cifra2,1);
2016US_AmerSurkovic 0:ef0f3fd77065 115 osvjezavanje++;
2016US_AmerSurkovic 0:ef0f3fd77065 116 }
2016US_AmerSurkovic 0:ef0f3fd77065 117 else if(osvjezavanje==2){
2016US_AmerSurkovic 0:ef0f3fd77065 118 A=B=C=D=E=F=G=DP=1;
2016US_AmerSurkovic 0:ef0f3fd77065 119 D2=0;
2016US_AmerSurkovic 0:ef0f3fd77065 120 ispisiCifru(cifra3,0);
2016US_AmerSurkovic 0:ef0f3fd77065 121 osvjezavanje=0;
2016US_AmerSurkovic 0:ef0f3fd77065 122 }
2016US_AmerSurkovic 0:ef0f3fd77065 123
2016US_AmerSurkovic 0:ef0f3fd77065 124 }
2016US_AmerSurkovic 0:ef0f3fd77065 125
2016US_AmerSurkovic 0:ef0f3fd77065 126 void stopaj()
2016US_AmerSurkovic 0:ef0f3fd77065 127 {
2016US_AmerSurkovic 0:ef0f3fd77065 128 if(debounce1.read_ms()>100)
2016US_AmerSurkovic 0:ef0f3fd77065 129 {
2016US_AmerSurkovic 0:ef0f3fd77065 130 if(aktivno && !zastoj){
2016US_AmerSurkovic 0:ef0f3fd77065 131 aktivno = 0;
2016US_AmerSurkovic 0:ef0f3fd77065 132 zastoj = 1;
2016US_AmerSurkovic 0:ef0f3fd77065 133 tajmer.stop();
2016US_AmerSurkovic 0:ef0f3fd77065 134 }
2016US_AmerSurkovic 0:ef0f3fd77065 135 else if(!aktivno && !zastoj){
2016US_AmerSurkovic 0:ef0f3fd77065 136 aktivno = 1;
2016US_AmerSurkovic 0:ef0f3fd77065 137 tajmer.start();
2016US_AmerSurkovic 0:ef0f3fd77065 138 }
2016US_AmerSurkovic 0:ef0f3fd77065 139 else{
2016US_AmerSurkovic 0:ef0f3fd77065 140 aktivno = 0;
2016US_AmerSurkovic 0:ef0f3fd77065 141 zastoj = 0;
2016US_AmerSurkovic 0:ef0f3fd77065 142 tajmer.start();
2016US_AmerSurkovic 0:ef0f3fd77065 143 }
2016US_AmerSurkovic 0:ef0f3fd77065 144 debounce1.reset();
2016US_AmerSurkovic 0:ef0f3fd77065 145 }
2016US_AmerSurkovic 0:ef0f3fd77065 146
2016US_AmerSurkovic 0:ef0f3fd77065 147 }
2016US_AmerSurkovic 0:ef0f3fd77065 148
2016US_AmerSurkovic 0:ef0f3fd77065 149 void reset(){
2016US_AmerSurkovic 0:ef0f3fd77065 150 if(debounce2.read_ms()>100){
2016US_AmerSurkovic 0:ef0f3fd77065 151 tajmer.reset();
2016US_AmerSurkovic 0:ef0f3fd77065 152 debounce2.reset();
2016US_AmerSurkovic 0:ef0f3fd77065 153 }
2016US_AmerSurkovic 0:ef0f3fd77065 154 }
2016US_AmerSurkovic 0:ef0f3fd77065 155
2016US_AmerSurkovic 0:ef0f3fd77065 156 int main() {
2016US_AmerSurkovic 0:ef0f3fd77065 157 enable = 1;
2016US_AmerSurkovic 0:ef0f3fd77065 158
2016US_AmerSurkovic 0:ef0f3fd77065 159 tiker.attach(&ispisiBroj,0.001); // Prosljedujemo adresu interapt rutine i T
2016US_AmerSurkovic 0:ef0f3fd77065 160
2016US_AmerSurkovic 0:ef0f3fd77065 161 debounce1.start();
2016US_AmerSurkovic 0:ef0f3fd77065 162 debounce2.start();
2016US_AmerSurkovic 0:ef0f3fd77065 163 taster1.rise(&stopaj);
2016US_AmerSurkovic 0:ef0f3fd77065 164 taster2.rise(&reset);
2016US_AmerSurkovic 0:ef0f3fd77065 165
2016US_AmerSurkovic 0:ef0f3fd77065 166 while(1)
2016US_AmerSurkovic 0:ef0f3fd77065 167 {
2016US_AmerSurkovic 0:ef0f3fd77065 168
2016US_AmerSurkovic 0:ef0f3fd77065 169 }
2016US_AmerSurkovic 0:ef0f3fd77065 170 }