Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 /* 00002 * Nikola Aničić 2019/0099 00003 * ETF Beograd 00004 * napisano 06/11/2021 00005 */ 00006 // Prilikom objave: Ime, Prezime, Broj indeksa (all caps) 00007 00008 // Skinuti JP1 i JP2; JP3 mora da bude na mestu. 00009 00010 /* 00011 * Uvoz biblioteka 00012 */ 00013 #include "mbed.h" 00014 00015 /* 00016 * Definicije 00017 */ 00018 #define POLLING_TIME 5 // Dva poliranja po promeni radi multipleksiranja displeja za T1 00019 #define INITIAL_WAIT 1 00020 00021 #define FREQ_SCALE 5000 00022 00023 #define ZERO 0xC0 00024 #define ONE 0xF9 00025 #define TWO 0xA4 00026 #define THREE 0xB0 00027 #define FOUR 0x99 00028 #define FIVE 0x92 00029 #define SIX 0x82 00030 #define SEVEN 0xF8 00031 #define EIGHT 0x80 00032 #define NINE 0x90 00033 00034 /* 00035 * Globalne promenljive 00036 */ 00037 00038 // abcdefg = PA_10, PA_9, PA_8, PB_10, PB_5, PB_4, PB_3 00039 // SEL1 = PB_6 00040 // SEL2 = PC_7 00041 00042 // FREQ je u opsegu {5 ms, 5 us} 00043 00044 // a b c d e f g = gfedcba ; Na celu je DP uvek 1 00045 BusOut display(PA_10, PA_9, PA_8, PB_10, PB_5, PB_4, PB_3); 00046 DigitalOut SEL1 = PB_6; 00047 DigitalOut SEL2 = PC_7; 00048 00049 AnalogIn POT1(PA_0); 00050 AnalogIn POT2(PA_1); 00051 00052 PwmOut buzz (PA_11); 00053 00054 InterruptIn SW1(PC_9); // SW1 00055 //DigitalIn SW2(PC_8); // SW2 00056 00057 // static int tracker = 0; 00058 static bool showResult = 0; 00059 00060 int sec_digit = 0; 00061 int prim_digit = 0; 00062 00063 /* 00064 * Deklaracija funkcija 00065 */ 00066 00067 void ISR_SW1(void); 00068 00069 int main() { 00070 // Inicijalizacija 00071 SEL2.write(1); 00072 SEL1.write(1); 00073 SW1.fall(&ISR_SW1); 00074 00075 wait(INITIAL_WAIT); 00076 00077 // Petlja 00078 while(true){ 00079 00080 float freq = POT2.read() * FREQ_SCALE + 30; 00081 00082 buzz.period_us(freq); 00083 buzz.write(POT1.read()); 00084 00085 // Potenciometar 1 uopste ne reaguje na promene fizickog potenciometra. 00086 // Proverio sam za PA_0 zadatak Z2_02 i ocitavanje se slicno ne menja. 00087 00088 // POT1 je proradio nakon dodatnog pritiska na plocu 00089 // kontakt izmedju ploce i maticne je ranije (pre vadjenja JP1 i 2) pravio probleme 00090 // za povezanost displeja i zahtevao slicne mere. 00091 00092 printf("\r%2.2f%% %.2f us", POT1.read()*100, freq); 00093 00094 int curr_percentage = POT1.read()*100; 00095 00096 00097 if (showResult){ 00098 00099 sec_digit = curr_percentage/10; 00100 prim_digit = curr_percentage%10; 00101 00102 showResult = 0; 00103 } 00104 00105 00106 SEL1.write(1); 00107 00108 //ispis na displej 00109 switch (prim_digit){ 00110 case 0: 00111 00112 SEL2.write(0); 00113 display.write(ZERO); 00114 wait_ms(POLLING_TIME); 00115 00116 break; 00117 case 1: 00118 00119 SEL2.write(0); 00120 display.write(ONE); 00121 wait_ms(POLLING_TIME); 00122 00123 break; 00124 case 2: 00125 00126 SEL2.write(0); 00127 display.write(TWO); 00128 wait_ms(POLLING_TIME); 00129 00130 break; 00131 case 3: 00132 00133 SEL2.write(0); 00134 display.write(THREE); 00135 wait_ms(POLLING_TIME); 00136 00137 break; 00138 case 4: 00139 00140 SEL2.write(0); 00141 display.write(FOUR); 00142 wait_ms(POLLING_TIME); 00143 00144 break; 00145 case 5: 00146 00147 SEL2.write(0); 00148 display.write(FIVE); 00149 wait_ms(POLLING_TIME); 00150 00151 break; 00152 case 6: 00153 00154 SEL2.write(0); 00155 display.write(SIX); 00156 wait_ms(POLLING_TIME); 00157 00158 break; 00159 case 7: 00160 00161 SEL2.write(0); 00162 display.write(SEVEN); 00163 wait_ms(POLLING_TIME); 00164 00165 break; 00166 case 8: 00167 00168 SEL2.write(0); 00169 display.write(EIGHT); 00170 wait_ms(POLLING_TIME); 00171 00172 break; 00173 case 9: 00174 00175 SEL2.write(0); 00176 display.write(NINE); 00177 wait_ms(POLLING_TIME); 00178 00179 break; 00180 } 00181 00182 SEL2.write(1); 00183 00184 switch (sec_digit){ 00185 case 0: 00186 00187 SEL1.write(1); 00188 break; 00189 case 1: 00190 00191 SEL1.write(0); 00192 display.write(ONE); 00193 wait_ms(POLLING_TIME); 00194 00195 break; 00196 case 2: 00197 00198 SEL1.write(0); 00199 display.write(TWO); 00200 wait_ms(POLLING_TIME); 00201 00202 break; 00203 case 3: 00204 00205 SEL1.write(0); 00206 display.write(THREE); 00207 wait_ms(POLLING_TIME); 00208 00209 break; 00210 case 4: 00211 00212 SEL1.write(0); 00213 display.write(FOUR); 00214 wait_ms(POLLING_TIME); 00215 00216 break; 00217 case 5: 00218 00219 SEL1.write(0); 00220 display.write(FIVE); 00221 wait_ms(POLLING_TIME); 00222 00223 break; 00224 case 6: 00225 00226 SEL1.write(0); 00227 display.write(SIX); 00228 wait_ms(POLLING_TIME); 00229 00230 break; 00231 case 7: 00232 00233 SEL1.write(0); 00234 display.write(SEVEN); 00235 wait_ms(POLLING_TIME); 00236 00237 break; 00238 case 8: 00239 00240 SEL1.write(0); 00241 display.write(EIGHT); 00242 wait_ms(POLLING_TIME); 00243 00244 break; 00245 case 9: 00246 00247 SEL1.write(0); 00248 display.write(NINE); 00249 wait_ms(POLLING_TIME); 00250 00251 break; 00252 } 00253 } 00254 } 00255 00256 /* 00257 * Funkcije 00258 */ 00259 00260 void ISR_SW1(){ 00261 showResult = 1; 00262 //here 00263 } 00264
Generated on Mon Feb 13 2023 14:22:02 by
1.7.2