Masa Kovacevic 2020/0229

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /* Masa Kovacevic
00002 * 2020/0229
00003 * ETF Beograd
00004 */
00005 
00006 
00007 
00008 // Uvoz biblioteka
00009 #include "mbed.h"
00010 
00011 
00012 
00013 // Definisanje makroa
00014 #define SCALE 2900
00015 #define WAIT 2
00016 
00017 
00018 //Globalne promenljive
00019 AnalogIn pot2(PA_1);
00020 AnalogIn pot1(PA_0);
00021 PwmOut buzz(PA_11);
00022 int sound_intensity;
00023 int sound_intensity_first_digit;
00024 int sound_intensity_second_digit;
00025 InterruptIn sw1(PC_9);
00026 DigitalOut SEL2(PC_7); 
00027 DigitalOut SEL1(PB_6);
00028 DigitalIn SW1(PC_9);
00029 BusOut display(PA_10,PA_9,PA_8,PB_10,PB_5,PB_4,PB_3,PA_5);
00030 
00031 
00032 //Prototipi funkcija
00033 void ISR_sw1(void);
00034 void Funkcija2 (int second_digit);  
00035 void Funkcija1 (int first_digit); 
00036 int convert (int digit);
00037 
00038 
00039 
00040 //Glavna funkcija
00041 int main()
00042 {
00043    sw1.fall(&ISR_sw1);
00044    while(1)
00045    {
00046     buzz.period_us(pot1.read()*SCALE + 100);
00047     buzz.write(pot2.read());
00048     wait_ms(WAIT);
00049     sound_intensity = pot2.read()*100;
00050     sound_intensity_first_digit = sound_intensity/10;
00051     sound_intensity_second_digit = sound_intensity%10;
00052     
00053     }
00054 }
00055 
00056 void Funkcija2 (int second_digit){
00057 
00058         SEL2.write(0);
00059         display = convert(second_digit);
00060         wait_ms(20);
00061         SEL2.write(1);
00062         
00063     }
00064  
00065     
00066 void Funkcija1 (int first_digit){
00067         
00068         SEL1.write(0);
00069         display = convert(first_digit); 
00070         wait_ms(20);
00071         SEL1.write(1);
00072   } 
00073   
00074 int convert (int digit) {
00075 
00076    int d;
00077 
00078    switch(digit) {
00079       case 0 :
00080          d = 0xC0;
00081          break;
00082       case 1:
00083          d = 0xF9;
00084       case 2 :
00085          d = 0xA4;
00086          break;
00087       case 3 :
00088          d= 0xB0;
00089          break;
00090       case 4 :
00091          d = 0x99;
00092          break;
00093       case 5 :
00094          d = 0x92;
00095          break;
00096       case 6 :
00097          d = 0x82;
00098          break;
00099       case 7 :
00100          d = 0xF8;
00101          break;
00102       case 8 :
00103          d = 0x80;
00104          break;
00105       case 9 :
00106          d = 0x90;
00107          break;
00108     }
00109     
00110    return d;
00111 }
00112 void ISR_sw1()
00113 {
00114     if (sound_intensity_first_digit != 0)
00115     {
00116         Funkcija1(sound_intensity_first_digit);
00117         Funkcija2(sound_intensity_first_digit);
00118     }
00119     else 
00120     {
00121         Funkcija2(sound_intensity_first_digit);
00122     }
00123 }