Test 2 Praktikum iz mikrokontrolera Ljubomir Zivkovic ETF 2021

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*
00002  * Test 2 iz PIM
00003  *
00004  */
00005  
00006 /*
00007  * Biblioteke za uvoz:
00008  */
00009 #include "mbed.h"
00010  
00011 /*
00012  * Definisanje makroa:
00013  */
00014 #define A PA_10
00015 #define B PA_9
00016 #define C PA_8
00017 #define D PB_10
00018 #define E PB_5
00019 #define F PB_4
00020 #define G PB_3
00021 #define SEL1 PB_6
00022 #define SEL2 PC_7
00023 #define SW1 PC_9
00024 #define SW2 PC8
00025 
00026 /*
00027  * Globalne promenljive:
00028  */
00029 BusOut display (A,B,C,D,E,F,G);
00030 BusOut select (SEL2,SEL1);
00031 AnalogIn pot2(PA_1);
00032 AnalogIn pot1(PA_0);
00033 PwmOut buzz(PA_11);
00034 InterruptIn button_sw1 (SW1);
00035 
00036 int broj;
00037 float frekvencija; 
00038 bool ispis = false;
00039 
00040 /*
00041  * Deklaracija funkcija:
00042  */
00043  void SegDisp (int broj);
00044  void ispisi(int num);
00045  void ISR_button_sw1();
00046 
00047 /*
00048  * Glavna funkcija:
00049  */
00050 int main()
00051 {
00052     
00053     
00054     // Glavna petlja:
00055     while(true)
00056     {
00057         button_sw1.fall(&ISR_button_sw1);
00058         buzz.write(pot1.read()*0.1);
00059         frekvencija = 200+(pot2.read()*19800);
00060         buzz.period(1.0/frekvencija);
00061         wait_ms(1);
00062         
00063         if(ispis == true)
00064         {
00065             ispisi(broj);
00066         }
00067         
00068     }    
00069 }
00070 
00071 
00072 /*
00073  * Definicija funkcija:
00074  */
00075 
00076  // ispis cifara na displej
00077 void SegDisp (int broj)
00078 {
00079     switch(broj)
00080     {
00081         case 0: display = 0b1000000; break;
00082         case 1: display = 0b1111001; break;
00083         case 2: display = 0b0100100; break;
00084         case 3: display = 0b0110000; break;
00085         case 4: display = 0b0011001; break;
00086         case 5: display = 0b0010010; break;
00087         case 6: display = 0b0000010; break;
00088         case 7: display = 0b1111000; break;
00089         case 8: display = 0b0000000; break;
00090         case 9: display = 0b0010000; break;
00091         default: display = 0x7f;     break;
00092     }
00093 }
00094 
00095 
00096 //konvertovanje broj u cifre i ispis
00097 void ispisi(int num)
00098 {
00099     int j = num%10,d = num/10;
00100     if(d==0)
00101         SegDisp(-1);
00102     else
00103         SegDisp(d);
00104          
00105     select = 0b01;
00106     wait_ms(2);
00107     SegDisp(j);
00108     select = 0b10;
00109     wait_ms(1);
00110     
00111 }
00112 
00113 //prekidna rutina za SW1
00114 void ISR_button_sw1()
00115 {
00116     ispis = true;
00117     broj = int(pot1.read()*100);
00118 }
00119 
00120 
00121