Tarik Demirović, Enil Pajić

Dependencies:   mbed

Committer:
tim003
Date:
Mon Mar 24 08:48:18 2014 +0000
Revision:
0:1ef51efe94e2
LV4-Grupa1-Tim003-Zadatak2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tim003 0:1ef51efe94e2 1 #include "mbed.h"
tim003 0:1ef51efe94e2 2 DigitalOut ENBL = dp14;
tim003 0:1ef51efe94e2 3 BusOut bDISP (dp23, dp24, dp25);
tim003 0:1ef51efe94e2 4 BusOut dDISP[3] = {dp23, dp24, dp25};
tim003 0:1ef51efe94e2 5
tim003 0:1ef51efe94e2 6 BusOut bDIGIT(dp2, dp1, dp28, dp6, dp5, dp27, dp26); // (dp26, dp27, dp5, dp6, dp28, dp1, dp2);
tim003 0:1ef51efe94e2 7 DigitalOut dDIGIT[7] = {dp2, dp1, dp28, dp6, dp5, dp27, dp26};
tim003 0:1ef51efe94e2 8 DigitalOut DECP (dp4);
tim003 0:1ef51efe94e2 9 DigitalOut eA(dp26), eB(dp27), eC(dp5), eD(dp6), eE(dp28), eF(dp1), eG(dp2);
tim003 0:1ef51efe94e2 10
tim003 0:1ef51efe94e2 11 typedef unsigned long T;
tim003 0:1ef51efe94e2 12 template <T N>
tim003 0:1ef51efe94e2 13 class eBIN
tim003 0:1ef51efe94e2 14 {
tim003 0:1ef51efe94e2 15 public:
tim003 0:1ef51efe94e2 16 enum {VAL = (N % 8) + (eBIN<N/8>::VAL << 1)};
tim003 0:1ef51efe94e2 17 };
tim003 0:1ef51efe94e2 18 template <>
tim003 0:1ef51efe94e2 19 class eBIN<0>
tim003 0:1ef51efe94e2 20 {
tim003 0:1ef51efe94e2 21 public:
tim003 0:1ef51efe94e2 22 enum {VAL = 0};
tim003 0:1ef51efe94e2 23 };
tim003 0:1ef51efe94e2 24 #define BIN(N) eBIN<0##N>::VAL
tim003 0:1ef51efe94e2 25
tim003 0:1ef51efe94e2 26 enum Keys {N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, A, B, C, D, Star, Hash, None = -1};
tim003 0:1ef51efe94e2 27 enum Diodes {D1 = 6, D2 = 5, D3 = 3};
tim003 0:1ef51efe94e2 28 void Display (Keys Key, Diodes Diode, bool DisplayPoint)
tim003 0:1ef51efe94e2 29 {
tim003 0:1ef51efe94e2 30 if (Key == None) return;
tim003 0:1ef51efe94e2 31
tim003 0:1ef51efe94e2 32 DECP = DisplayPoint ? 0 : 1;
tim003 0:1ef51efe94e2 33 switch (Key)
tim003 0:1ef51efe94e2 34 {
tim003 0:1ef51efe94e2 35 case N0:
tim003 0:1ef51efe94e2 36 bDIGIT = BIN(0000001); //1
tim003 0:1ef51efe94e2 37 break;
tim003 0:1ef51efe94e2 38 case N1:
tim003 0:1ef51efe94e2 39 bDIGIT = BIN(1001111); //79
tim003 0:1ef51efe94e2 40 break;
tim003 0:1ef51efe94e2 41 case N2:
tim003 0:1ef51efe94e2 42 bDIGIT = BIN(0010010); //18
tim003 0:1ef51efe94e2 43 break;
tim003 0:1ef51efe94e2 44 case N3:
tim003 0:1ef51efe94e2 45 bDIGIT = BIN(0000110); //6
tim003 0:1ef51efe94e2 46 break;
tim003 0:1ef51efe94e2 47 case N4:
tim003 0:1ef51efe94e2 48 bDIGIT = BIN(1001100); //76
tim003 0:1ef51efe94e2 49 break;
tim003 0:1ef51efe94e2 50 case N5:
tim003 0:1ef51efe94e2 51 bDIGIT = BIN(0100100); //36
tim003 0:1ef51efe94e2 52 break;
tim003 0:1ef51efe94e2 53 case N6:
tim003 0:1ef51efe94e2 54 bDIGIT = BIN(0100000); //32
tim003 0:1ef51efe94e2 55 break;
tim003 0:1ef51efe94e2 56 case N7:
tim003 0:1ef51efe94e2 57 bDIGIT = BIN(0001111); //15
tim003 0:1ef51efe94e2 58 break;
tim003 0:1ef51efe94e2 59 case N8:
tim003 0:1ef51efe94e2 60 bDIGIT = BIN(0000000); //0
tim003 0:1ef51efe94e2 61 break;
tim003 0:1ef51efe94e2 62 case N9:
tim003 0:1ef51efe94e2 63 bDIGIT = BIN(0000100); //4
tim003 0:1ef51efe94e2 64 break;
tim003 0:1ef51efe94e2 65 case A:
tim003 0:1ef51efe94e2 66 bDIGIT = BIN(0001000); //A //8
tim003 0:1ef51efe94e2 67 break;
tim003 0:1ef51efe94e2 68 case B:
tim003 0:1ef51efe94e2 69 bDIGIT = BIN(1100000); //b //96
tim003 0:1ef51efe94e2 70 break;
tim003 0:1ef51efe94e2 71 case C:
tim003 0:1ef51efe94e2 72 bDIGIT = BIN(1110010); //c //114
tim003 0:1ef51efe94e2 73 break;
tim003 0:1ef51efe94e2 74 case D:
tim003 0:1ef51efe94e2 75 bDIGIT = BIN(0000010); //d //2
tim003 0:1ef51efe94e2 76 break;
tim003 0:1ef51efe94e2 77 case Star:
tim003 0:1ef51efe94e2 78 //xD ovo je 'e' slovo. Za gornje 'o' slovo je 0011100, za 'u' je 1100011 a za donje 'o' je 1100010
tim003 0:1ef51efe94e2 79 bDIGIT = BIN(0010000); // 16 //za 'P' = 0011000
tim003 0:1ef51efe94e2 80 break;
tim003 0:1ef51efe94e2 81 case Hash:
tim003 0:1ef51efe94e2 82 bDIGIT = BIN(1001000); //slovo H kao HASH :D //72
tim003 0:1ef51efe94e2 83 break;
tim003 0:1ef51efe94e2 84 case None:
tim003 0:1ef51efe94e2 85 bDIGIT = BIN(1111111); //127
tim003 0:1ef51efe94e2 86 break;
tim003 0:1ef51efe94e2 87 }
tim003 0:1ef51efe94e2 88 bDISP = (int)Diode;
tim003 0:1ef51efe94e2 89
tim003 0:1ef51efe94e2 90 }
tim003 0:1ef51efe94e2 91 void DisplayKeys (Keys K1, Keys K2, Keys K3, unsigned int Point, int DelayMS = 10)
tim003 0:1ef51efe94e2 92 {
tim003 0:1ef51efe94e2 93 Display (K1, D1, Point == 1);
tim003 0:1ef51efe94e2 94 if (K1 != None) wait_ms (DelayMS);
tim003 0:1ef51efe94e2 95 Display (K2, D2, Point == 2);
tim003 0:1ef51efe94e2 96 if (K2 != None) wait_ms (DelayMS);
tim003 0:1ef51efe94e2 97 Display (K3, D3, Point == 3);
tim003 0:1ef51efe94e2 98 if (K3 != None) wait_ms (DelayMS);
tim003 0:1ef51efe94e2 99 }
tim003 0:1ef51efe94e2 100 double Zaokruzi (double broj) //Na 2 dec
tim003 0:1ef51efe94e2 101 {
tim003 0:1ef51efe94e2 102 return double(int(broj * 100.0 + .5) / 100.0);
tim003 0:1ef51efe94e2 103 }
tim003 0:1ef51efe94e2 104 double Zaokruzi2 (double broj) //Na 3 dec
tim003 0:1ef51efe94e2 105 {
tim003 0:1ef51efe94e2 106 return double(int(broj * 1000.0 + .5) / 1000.0);
tim003 0:1ef51efe94e2 107 }
tim003 0:1ef51efe94e2 108 void DajCifre (double N, int &Cio, int &PrvaDec, int &DrugaDec) //broj u #.## formatu
tim003 0:1ef51efe94e2 109 {
tim003 0:1ef51efe94e2 110 double dec = (N - (int)N);
tim003 0:1ef51efe94e2 111 dec = Zaokruzi(dec * 100.);
tim003 0:1ef51efe94e2 112 DrugaDec = (int)dec % 10;
tim003 0:1ef51efe94e2 113 PrvaDec = ((int)dec / 10) % 10;
tim003 0:1ef51efe94e2 114 Cio = (int)N;
tim003 0:1ef51efe94e2 115 }
tim003 0:1ef51efe94e2 116
tim003 0:1ef51efe94e2 117 void DajCifre (double N, int &Cio, int &PrvaDec, int &DrugaDec, int &TrecaDec) //broj u #.### formatu
tim003 0:1ef51efe94e2 118 {
tim003 0:1ef51efe94e2 119 double dec = (N - (int)N);
tim003 0:1ef51efe94e2 120 dec = Zaokruzi2(dec * 1000.);
tim003 0:1ef51efe94e2 121 TrecaDec = (int)dec % 10;
tim003 0:1ef51efe94e2 122 DrugaDec = ((int)dec / 10) % 10;
tim003 0:1ef51efe94e2 123 PrvaDec = ((int)dec / 100) % 10;
tim003 0:1ef51efe94e2 124 Cio = (int)N;
tim003 0:1ef51efe94e2 125 }
tim003 0:1ef51efe94e2 126 AnalogIn aIN (dp9);
tim003 0:1ef51efe94e2 127 //LV4-Grupa1-Tim003-Zadatak2
tim003 0:1ef51efe94e2 128 int main() { //Zadatak 1.
tim003 0:1ef51efe94e2 129 ENBL = 1; //Provjeri
tim003 0:1ef51efe94e2 130 int C = 0, PD = 0, DD = 0, b = 0;
tim003 0:1ef51efe94e2 131 double Napon = 0.;
tim003 0:1ef51efe94e2 132 while(1)
tim003 0:1ef51efe94e2 133 {
tim003 0:1ef51efe94e2 134 if (b == 500) {Napon = 1. - aIN ; b = 0;}
tim003 0:1ef51efe94e2 135 b++;
tim003 0:1ef51efe94e2 136 DajCifre (Napon < 0 ? -Napon : Napon, C, PD, DD);
tim003 0:1ef51efe94e2 137 DisplayKeys ((Keys)C, (Keys)PD, (Keys)DD, 0, 1);
tim003 0:1ef51efe94e2 138 //wait (0.2);
tim003 0:1ef51efe94e2 139 }
tim003 0:1ef51efe94e2 140 }
tim003 0:1ef51efe94e2 141 int main_2()
tim003 0:1ef51efe94e2 142 {
tim003 0:1ef51efe94e2 143
tim003 0:1ef51efe94e2 144 }