Test 2 Praktikum iz mikrokontrolera Ljubomir Zivkovic ETF 2021
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 /* 00002 * Test 2 iz PIM 00003 * 00004 */ 00005 00006 /* 00007 * Biblioteke za uvoz: 00008 */ 00009 #include "mbed.h" 00010 00011 /* 00012 * Definisanje makroa: 00013 */ 00014 #define A PA_10 00015 #define B PA_9 00016 #define C PA_8 00017 #define D PB_10 00018 #define E PB_5 00019 #define F PB_4 00020 #define G PB_3 00021 #define SEL1 PB_6 00022 #define SEL2 PC_7 00023 #define SW1 PC_9 00024 #define SW2 PC8 00025 00026 /* 00027 * Globalne promenljive: 00028 */ 00029 BusOut display (A,B,C,D,E,F,G); 00030 BusOut select (SEL2,SEL1); 00031 AnalogIn pot2(PA_1); 00032 AnalogIn pot1(PA_0); 00033 PwmOut buzz(PA_11); 00034 InterruptIn button_sw1 (SW1); 00035 00036 int broj; 00037 float frekvencija; 00038 bool ispis = false; 00039 00040 /* 00041 * Deklaracija funkcija: 00042 */ 00043 void SegDisp (int broj); 00044 void ispisi(int num); 00045 void ISR_button_sw1(); 00046 00047 /* 00048 * Glavna funkcija: 00049 */ 00050 int main() 00051 { 00052 00053 00054 // Glavna petlja: 00055 while(true) 00056 { 00057 button_sw1.fall(&ISR_button_sw1); 00058 buzz.write(pot1.read()*0.1); 00059 frekvencija = 200+(pot2.read()*19800); 00060 buzz.period(1.0/frekvencija); 00061 wait_ms(1); 00062 00063 if(ispis == true) 00064 { 00065 ispisi(broj); 00066 } 00067 00068 } 00069 } 00070 00071 00072 /* 00073 * Definicija funkcija: 00074 */ 00075 00076 // ispis cifara na displej 00077 void SegDisp (int broj) 00078 { 00079 switch(broj) 00080 { 00081 case 0: display = 0b1000000; break; 00082 case 1: display = 0b1111001; break; 00083 case 2: display = 0b0100100; break; 00084 case 3: display = 0b0110000; break; 00085 case 4: display = 0b0011001; break; 00086 case 5: display = 0b0010010; break; 00087 case 6: display = 0b0000010; break; 00088 case 7: display = 0b1111000; break; 00089 case 8: display = 0b0000000; break; 00090 case 9: display = 0b0010000; break; 00091 default: display = 0x7f; break; 00092 } 00093 } 00094 00095 00096 //konvertovanje broj u cifre i ispis 00097 void ispisi(int num) 00098 { 00099 int j = num%10,d = num/10; 00100 if(d==0) 00101 SegDisp(-1); 00102 else 00103 SegDisp(d); 00104 00105 select = 0b01; 00106 wait_ms(2); 00107 SegDisp(j); 00108 select = 0b10; 00109 wait_ms(1); 00110 00111 } 00112 00113 //prekidna rutina za SW1 00114 void ISR_button_sw1() 00115 { 00116 ispis = true; 00117 broj = int(pot1.read()*100); 00118 } 00119 00120 00121
Generated on Fri Sep 16 2022 10:58:31 by
1.7.2