Tarik Demirović, Enil Pajić
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 DigitalOut ENBL = dp14; 00003 BusOut bDISP (dp23, dp24, dp25); 00004 BusOut dDISP[3] = {dp23, dp24, dp25}; 00005 00006 BusOut bDIGIT(dp2, dp1, dp28, dp6, dp5, dp27, dp26); // (dp26, dp27, dp5, dp6, dp28, dp1, dp2); 00007 DigitalOut dDIGIT[7] = {dp2, dp1, dp28, dp6, dp5, dp27, dp26}; 00008 DigitalOut DECP (dp4); 00009 DigitalOut eA(dp26), eB(dp27), eC(dp5), eD(dp6), eE(dp28), eF(dp1), eG(dp2); 00010 00011 typedef unsigned long T; 00012 template <T N> 00013 class eBIN 00014 { 00015 public: 00016 enum {VAL = (N % 8) + (eBIN<N/8>::VAL << 1)}; 00017 }; 00018 template <> 00019 class eBIN<0> 00020 { 00021 public: 00022 enum {VAL = 0}; 00023 }; 00024 #define BIN(N) eBIN<0##N>::VAL 00025 00026 enum Keys {N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, A, B, C, D, Star, Hash, None = -1}; 00027 enum Diodes {D1 = 6, D2 = 5, D3 = 3}; 00028 void Display (Keys Key, Diodes Diode, bool DisplayPoint) 00029 { 00030 if (Key == None) return; 00031 00032 DECP = DisplayPoint ? 0 : 1; 00033 switch (Key) 00034 { 00035 case N0: 00036 bDIGIT = BIN(0000001); //1 00037 break; 00038 case N1: 00039 bDIGIT = BIN(1001111); //79 00040 break; 00041 case N2: 00042 bDIGIT = BIN(0010010); //18 00043 break; 00044 case N3: 00045 bDIGIT = BIN(0000110); //6 00046 break; 00047 case N4: 00048 bDIGIT = BIN(1001100); //76 00049 break; 00050 case N5: 00051 bDIGIT = BIN(0100100); //36 00052 break; 00053 case N6: 00054 bDIGIT = BIN(0100000); //32 00055 break; 00056 case N7: 00057 bDIGIT = BIN(0001111); //15 00058 break; 00059 case N8: 00060 bDIGIT = BIN(0000000); //0 00061 break; 00062 case N9: 00063 bDIGIT = BIN(0000100); //4 00064 break; 00065 case A: 00066 bDIGIT = BIN(0001000); //A //8 00067 break; 00068 case B: 00069 bDIGIT = BIN(1100000); //b //96 00070 break; 00071 case C: 00072 bDIGIT = BIN(1110010); //c //114 00073 break; 00074 case D: 00075 bDIGIT = BIN(0000010); //d //2 00076 break; 00077 case Star: 00078 //xD ovo je 'e' slovo. Za gornje 'o' slovo je 0011100, za 'u' je 1100011 a za donje 'o' je 1100010 00079 bDIGIT = BIN(0010000); // 16 //za 'P' = 0011000 00080 break; 00081 case Hash: 00082 bDIGIT = BIN(1001000); //slovo H kao HASH :D //72 00083 break; 00084 case None: 00085 bDIGIT = BIN(1111111); //127 00086 break; 00087 } 00088 bDISP = (int)Diode; 00089 00090 } 00091 void DisplayKeys (Keys K1, Keys K2, Keys K3, unsigned int Point, int DelayMS = 10) 00092 { 00093 Display (K1, D1, Point == 1); 00094 if (K1 != None) wait_ms (DelayMS); 00095 Display (K2, D2, Point == 2); 00096 if (K2 != None) wait_ms (DelayMS); 00097 Display (K3, D3, Point == 3); 00098 if (K3 != None) wait_ms (DelayMS); 00099 } 00100 double Zaokruzi (double broj) //Na 2 dec 00101 { 00102 return double(int(broj * 100.0 + .5) / 100.0); 00103 } 00104 double Zaokruzi2 (double broj) //Na 3 dec 00105 { 00106 return double(int(broj * 1000.0 + .5) / 1000.0); 00107 } 00108 void DajCifre (double N, int &Cio, int &PrvaDec, int &DrugaDec) //broj u #.## formatu 00109 { 00110 double dec = (N - (int)N); 00111 dec = Zaokruzi(dec * 100.); 00112 DrugaDec = (int)dec % 10; 00113 PrvaDec = ((int)dec / 10) % 10; 00114 Cio = (int)N; 00115 } 00116 00117 void DajCifre (double N, int &Cio, int &PrvaDec, int &DrugaDec, int &TrecaDec) //broj u #.### formatu 00118 { 00119 double dec = (N - (int)N); 00120 dec = Zaokruzi2(dec * 1000.); 00121 TrecaDec = (int)dec % 10; 00122 DrugaDec = ((int)dec / 10) % 10; 00123 PrvaDec = ((int)dec / 100) % 10; 00124 Cio = (int)N; 00125 } 00126 AnalogIn aIN (dp9); 00127 //LV4-Grupa1-Tim003-Zadatak2 00128 int main() { //Zadatak 1. 00129 ENBL = 1; //Provjeri 00130 int C = 0, PD = 0, DD = 0, b = 0; 00131 double Napon = 0.; 00132 while(1) 00133 { 00134 if (b == 500) {Napon = 1. - aIN ; b = 0;} 00135 b++; 00136 DajCifre (Napon < 0 ? -Napon : Napon, C, PD, DD); 00137 DisplayKeys ((Keys)C, (Keys)PD, (Keys)DD, 0, 1); 00138 //wait (0.2); 00139 } 00140 } 00141 int main_2() 00142 { 00143 00144 }
Generated on Mon Aug 1 2022 15:07:19 by
1.7.2