Milos Novakovic
/
19E042PIM_T2_2020_0425
Milos Novakovic 2020/0425
main.cpp
- Committer:
- mlos55
- Date:
- 2021-11-13
- Revision:
- 0:b341edd1e54c
File content as of revision 0:b341edd1e54c:
// Milos Novakovic 2020/0425 /*Prikazana vrijednost ne odgovara onome sto se moze cuti u prvi i poslednjih 10% jer piezzo zahtjeva paljenje i gasenje tj konsantno smjenjivanje 0 i 1, sto npr na 99% skoro sve je visok napon i ne dobijamo zvuk*/ //Uvoz biblioteka i def. direktiva #include "mbed.h" //Globalne promjenljive PwmOut buzzer(PA_11); AnalogIn pot2(PA_1); AnalogIn pot1(PA_0); InterruptIn sw1(PC_9); DigitalOut SEL2(PC_7); DigitalOut SEL1(PB_6); BusOut display1(PA_10, PA_9,PA_8,PB_10,PB_5,PB_4,PB_3); BusOut display2(PA_10, PA_9,PA_8,PB_10,PB_5,PB_4,PB_3); static float x; static int x1; static int flag=0; static int postotak, desetice,jedinice; static char i=0; //deklaracija pomocnih f-ja void ISR_sw1(void); void display(void); //glavni program int main(){ SEL1=1; SEL2=1; sw1.fall(&ISR_sw1); while(1){ buzzer=pot1; if(pot1==0) buzzer=0.01f; if(flag==1) display(); x=pot2*20000; if(x==0) x=0.01f*20000; if(x<1000){ x1=1000/x; buzzer.period_ms(x1); } else{ x1=1000000/x; buzzer.period_us(x1); } wait_ms(30); } } void ISR_sw1(){ flag = 1; } void display(){ postotak=pot1*100; desetice=postotak/10; jedinice=postotak-(desetice*10); while(i<100){ SEL1=0; switch(desetice){ case 1: display2=0xF9; break; case 2: display2=0xA4; break; case 3: display2=0xB0; break; case 4: display2=0x99; break; case 5: display2=0x92; break; case 6: display2=0x82; break; case 7: display2=0xF8; break; case 8: display2=0x80; break; case 9: display2=0x90; break; default: SEL1=1; break; } wait_ms(5); SEL1=1; SEL2=0; switch(jedinice){ case 0: SEL1=1;display2=0x40; break; case 1: display2=0xF9; break; case 2: display2=0xA4; break; case 3: display2=0xB0; break; case 4: display2=0x99; break; case 5: display2=0x92; break; case 6: display2=0x82; break; case 7: display2=0xF8; break; case 8: display2=0x80; break; case 9: display2=0x90; break; } wait_ms(5); i++; SEL2=1; } SEL1=1; SEL2=1; flag=0; i=0; }