Milos Novakovic 2020/0425

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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     }