Milos Novakovic 2020/0425
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 // Milos Novakovic 2020/0425 00002 00003 /*Prikazana vrijednost ne odgovara onome sto se moze cuti u prvi i poslednjih 10% jer 00004 piezzo zahtjeva paljenje i gasenje tj konsantno smjenjivanje 0 i 1, 00005 sto npr na 99% skoro sve je visok napon i ne dobijamo zvuk*/ 00006 00007 //Uvoz biblioteka i def. direktiva 00008 00009 #include "mbed.h" 00010 00011 //Globalne promjenljive 00012 00013 PwmOut buzzer(PA_11); 00014 AnalogIn pot2(PA_1); 00015 AnalogIn pot1(PA_0); 00016 InterruptIn sw1(PC_9); 00017 DigitalOut SEL2(PC_7); 00018 DigitalOut SEL1(PB_6); 00019 BusOut display1(PA_10, PA_9,PA_8,PB_10,PB_5,PB_4,PB_3); 00020 BusOut display2(PA_10, PA_9,PA_8,PB_10,PB_5,PB_4,PB_3); 00021 static float x; 00022 static int x1; 00023 static int flag=0; 00024 static int postotak, desetice,jedinice; 00025 static char i=0; 00026 00027 00028 //deklaracija pomocnih f-ja 00029 00030 void ISR_sw1(void); 00031 void display(void); 00032 00033 //glavni program 00034 00035 int main(){ 00036 00037 SEL1=1; SEL2=1; 00038 sw1.fall(&ISR_sw1); 00039 00040 while(1){ 00041 buzzer=pot1; 00042 if(pot1==0) buzzer=0.01f; 00043 00044 00045 00046 if(flag==1) display(); 00047 00048 00049 00050 x=pot2*20000; 00051 if(x==0) x=0.01f*20000; 00052 if(x<1000){ 00053 x1=1000/x; 00054 buzzer.period_ms(x1); 00055 } 00056 else{ 00057 x1=1000000/x; 00058 buzzer.period_us(x1); 00059 } 00060 00061 wait_ms(30); 00062 } 00063 00064 } 00065 00066 00067 00068 void ISR_sw1(){ 00069 flag = 1; 00070 } 00071 00072 00073 void display(){ 00074 postotak=pot1*100; 00075 desetice=postotak/10; 00076 jedinice=postotak-(desetice*10); 00077 00078 while(i<100){ 00079 SEL1=0; 00080 switch(desetice){ 00081 00082 case 1: display2=0xF9; break; 00083 case 2: display2=0xA4; break; 00084 case 3: display2=0xB0; break; 00085 case 4: display2=0x99; break; 00086 case 5: display2=0x92; break; 00087 case 6: display2=0x82; break; 00088 case 7: display2=0xF8; break; 00089 case 8: display2=0x80; break; 00090 case 9: display2=0x90; break; 00091 default: SEL1=1; break; 00092 } 00093 wait_ms(5); 00094 SEL1=1; 00095 SEL2=0; 00096 switch(jedinice){ 00097 case 0: SEL1=1;display2=0x40; break; 00098 case 1: display2=0xF9; break; 00099 case 2: display2=0xA4; break; 00100 case 3: display2=0xB0; break; 00101 case 4: display2=0x99; break; 00102 case 5: display2=0x92; break; 00103 case 6: display2=0x82; break; 00104 case 7: display2=0xF8; break; 00105 case 8: display2=0x80; break; 00106 case 9: display2=0x90; break; 00107 } 00108 wait_ms(5); 00109 i++; 00110 SEL2=1; 00111 } 00112 00113 SEL1=1; SEL2=1; 00114 flag=0; 00115 i=0; 00116 }
Generated on Thu Aug 18 2022 02:22:33 by
1.7.2
Milos Novakovic