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

Dependencies:   mbed

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)
+    {
+       
+    }
+}