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