![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Luka Ristic 2020/0331
main.cpp@0:5b666eb8448e, 2021-11-13 (annotated)
- Committer:
- lukan
- Date:
- Sat Nov 13 09:18:49 2021 +0000
- Revision:
- 0:5b666eb8448e
Luka Ristic 2020/0331;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lukan | 0:5b666eb8448e | 1 | /* |
lukan | 0:5b666eb8448e | 2 | *Luka Ristić |
lukan | 0:5b666eb8448e | 3 | *br. indeksa: 2020/0331 |
lukan | 0:5b666eb8448e | 4 | */ |
lukan | 0:5b666eb8448e | 5 | |
lukan | 0:5b666eb8448e | 6 | |
lukan | 0:5b666eb8448e | 7 | //uvoz biblioteka |
lukan | 0:5b666eb8448e | 8 | #include "mbed.h" |
lukan | 0:5b666eb8448e | 9 | |
lukan | 0:5b666eb8448e | 10 | |
lukan | 0:5b666eb8448e | 11 | //Definisanje direktiva: |
lukan | 0:5b666eb8448e | 12 | |
lukan | 0:5b666eb8448e | 13 | |
lukan | 0:5b666eb8448e | 14 | //Definisanje globalnih promenljivih: |
lukan | 0:5b666eb8448e | 15 | BusOut display(PA_10, PA_9, PA_8, PB_10, PB_5, PB_4, PB_3, PA_2); |
lukan | 0:5b666eb8448e | 16 | DigitalOut SEL2(PC_7); |
lukan | 0:5b666eb8448e | 17 | DigitalOut SEL1(PB_6); |
lukan | 0:5b666eb8448e | 18 | PwmOut buzzer (PA_11); |
lukan | 0:5b666eb8448e | 19 | InterruptIn sw1 (PC_9); |
lukan | 0:5b666eb8448e | 20 | AnalogIn pot1 (PA_0); |
lukan | 0:5b666eb8448e | 21 | AnalogIn pot2 (PA_1); |
lukan | 0:5b666eb8448e | 22 | |
lukan | 0:5b666eb8448e | 23 | |
lukan | 0:5b666eb8448e | 24 | //Definisanje pomocnih funkcija: |
lukan | 0:5b666eb8448e | 25 | void isr_sw1(){ |
lukan | 0:5b666eb8448e | 26 | buzzer = 0; |
lukan | 0:5b666eb8448e | 27 | } |
lukan | 0:5b666eb8448e | 28 | |
lukan | 0:5b666eb8448e | 29 | void broj(int x) |
lukan | 0:5b666eb8448e | 30 | { |
lukan | 0:5b666eb8448e | 31 | switch(x) |
lukan | 0:5b666eb8448e | 32 | { |
lukan | 0:5b666eb8448e | 33 | case 0: display = 0xC0; break; |
lukan | 0:5b666eb8448e | 34 | case 1: display = 0xF9; break; |
lukan | 0:5b666eb8448e | 35 | case 2: display = 0xA4; break; |
lukan | 0:5b666eb8448e | 36 | case 3: display = 0xB0; break; |
lukan | 0:5b666eb8448e | 37 | case 4: display = 0x99; break; |
lukan | 0:5b666eb8448e | 38 | case 5: display = 0x92; break; |
lukan | 0:5b666eb8448e | 39 | case 6: display = 0x82; break; |
lukan | 0:5b666eb8448e | 40 | case 7: display = 0xF8; break; |
lukan | 0:5b666eb8448e | 41 | case 8: display = 0x80; break; |
lukan | 0:5b666eb8448e | 42 | case 9: display = 0x90; break; |
lukan | 0:5b666eb8448e | 43 | default: display = 0xFF; |
lukan | 0:5b666eb8448e | 44 | } |
lukan | 0:5b666eb8448e | 45 | } |
lukan | 0:5b666eb8448e | 46 | |
lukan | 0:5b666eb8448e | 47 | |
lukan | 0:5b666eb8448e | 48 | //MAIN: |
lukan | 0:5b666eb8448e | 49 | int main() |
lukan | 0:5b666eb8448e | 50 | { |
lukan | 0:5b666eb8448e | 51 | display = 0xFF; |
lukan | 0:5b666eb8448e | 52 | sw1.fall(&isr_sw1); |
lukan | 0:5b666eb8448e | 53 | |
lukan | 0:5b666eb8448e | 54 | //Petlja |
lukan | 0:5b666eb8448e | 55 | while(1) |
lukan | 0:5b666eb8448e | 56 | { |
lukan | 0:5b666eb8448e | 57 | int x; |
lukan | 0:5b666eb8448e | 58 | buzzer = pot1*0.5f; |
lukan | 0:5b666eb8448e | 59 | buzzer.period_us(pot2*(-4000.0f)+4000.0f); |
lukan | 0:5b666eb8448e | 60 | wait_ms(10); |
lukan | 0:5b666eb8448e | 61 | |
lukan | 0:5b666eb8448e | 62 | |
lukan | 0:5b666eb8448e | 63 | //prikaz procenta na 7-sedmentnom displeju |
lukan | 0:5b666eb8448e | 64 | if(!sw1) |
lukan | 0:5b666eb8448e | 65 | { |
lukan | 0:5b666eb8448e | 66 | x = pot1 * 100; |
lukan | 0:5b666eb8448e | 67 | int jedinice = 0, desetice = 0; |
lukan | 0:5b666eb8448e | 68 | jedinice = x % 10; |
lukan | 0:5b666eb8448e | 69 | desetice = x / 10; |
lukan | 0:5b666eb8448e | 70 | if(desetice==0) |
lukan | 0:5b666eb8448e | 71 | { |
lukan | 0:5b666eb8448e | 72 | SEL1 = 1; |
lukan | 0:5b666eb8448e | 73 | SEL2 = 0; |
lukan | 0:5b666eb8448e | 74 | broj(jedinice); |
lukan | 0:5b666eb8448e | 75 | } |
lukan | 0:5b666eb8448e | 76 | else |
lukan | 0:5b666eb8448e | 77 | { |
lukan | 0:5b666eb8448e | 78 | while(!sw1) |
lukan | 0:5b666eb8448e | 79 | { |
lukan | 0:5b666eb8448e | 80 | SEL1 = 1; |
lukan | 0:5b666eb8448e | 81 | SEL2 = 0; |
lukan | 0:5b666eb8448e | 82 | broj(jedinice); |
lukan | 0:5b666eb8448e | 83 | wait_ms(1); |
lukan | 0:5b666eb8448e | 84 | SEL1 = 0; |
lukan | 0:5b666eb8448e | 85 | SEL2 = 1; |
lukan | 0:5b666eb8448e | 86 | broj(desetice); |
lukan | 0:5b666eb8448e | 87 | wait_ms(1); |
lukan | 0:5b666eb8448e | 88 | } |
lukan | 0:5b666eb8448e | 89 | } |
lukan | 0:5b666eb8448e | 90 | } |
lukan | 0:5b666eb8448e | 91 | } |
lukan | 0:5b666eb8448e | 92 | } |
lukan | 0:5b666eb8448e | 93 | |
lukan | 0:5b666eb8448e | 94 | /*Na zalost nisam uspeo da ispravim kod tako da mi prikazuje |
lukan | 0:5b666eb8448e | 95 | i cifru jedinice i desetice kada vrednost predje 9% na displeju*/ |
lukan | 0:5b666eb8448e | 96 | //Btw kada je sw1 pritisnuto, prikazuju se obe cifre kako treba :/ |
lukan | 0:5b666eb8448e | 97 |