Luka Ristic 2020/0331

Dependencies:   mbed

Committer:
lukan
Date:
Sat Nov 13 09:18:49 2021 +0000
Revision:
0:5b666eb8448e
Luka Ristic 2020/0331;

Who changed what in which revision?

UserRevisionLine numberNew 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