Miroljub Micić
/
19E042PIM_T2_2018_0514
Miroljub Micic 514/2018
Diff: main.cpp
- Revision:
- 0:2a2e6c8ba676
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Nov 13 09:09:28 2021 +0000 @@ -0,0 +1,316 @@ +//Bonus 3: Prikazana vrednost na displeju odgovara glasnoci koju mozemo cuti, ali ne odgovara frekvenciji. Frekvencija se podesava sa POT2. + +//Sekcija za uvoz biblioteka +#include "mbed.h" + +//Definisanje direktiva +#define ukljucen 0 +#define iskljucen 1 + +//Glavne promenljive +AnalogIn POT1 (PA_0); //potenciometar jacina zvuka +AnalogIn POT2 (PA_1); //potenciometar frekvencija zvuka +InterruptIn SW1 (PC_9); //taster +PwmOut zujalica (PA_11); //zujalica +DigitalOut SEL1 (PB_6); //levi displej +DigitalOut SEL2 (PC_7); //desni displej +DigitalOut a (PA_10); +DigitalOut b (PA_9); +DigitalOut c (PA_8); +DigitalOut d (PB_10); +DigitalOut e (PB_5); +DigitalOut f (PB_4); +DigitalOut g (PB_3); + +void ISR_SW1(void); + +//Glavna funkcija +int main() +{ + SW1.fall(&ISR_SW1); + while (true) + { + zujalica.period_us((POT2.read()*5000)); //Okretanjem POT2 frekvencija (50 - 5000 us) (20kHz - 200Hz) + zujalica.write(1-POT1.read()); //Okretanjem POT1 jacina zvuka + SEL1.write(iskljucen); + SEL2.write(iskljucen); + //Na pritisak tastera ispisuje se trenutna vrednost POT1 + if (!SW1) + { + if (POT1.read()==0) + { + //Ispisi 0 + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0) && (POT1.read()<=0.1)) + { + //Ispisi 10 + //Ispis 1 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(iskljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(iskljucen); + e.write(iskljucen); + f.write(iskljucen); + g.write(iskljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.1) && (POT1.read()<=0.2)) + { + //Ispisi 20 + //Ispis 2 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(ukljucen); + c.write(iskljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(iskljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.2) && (POT1.read()<=0.3)) + { + //Ispisi 30 + //Ispis 3 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(iskljucen); + f.write(iskljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.3) && (POT1.read()<=0.4)) + { + //Ispisi 40 + //Ispis 4 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(iskljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(iskljucen); + e.write(iskljucen); + f.write(ukljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.4) && (POT1.read()<=0.5)) + { + //Ispisi 50 + //Ispis 5 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(iskljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(iskljucen); + f.write(ukljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.5) && (POT1.read()<=0.6)) + { + //Ispisi 60 + //Ispis 6 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(iskljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.6) && (POT1.read()<=0.7)) + { + //Ispisi 70 + //Ispis 7 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(iskljucen); + e.write(iskljucen); + f.write(iskljucen); + g.write(iskljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.7) && (POT1.read()<=0.8)) + { + //Ispisi 80 + //Ispis 8 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.8) && (POT1.read()<=0.9)) + { + //Ispisi 90 + //Ispis 9 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(iskljucen); + f.write(ukljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 0 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(ukljucen); + f.write(ukljucen); + g.write(iskljucen); + } + if ((POT1.read()>0.9) && (POT1.read()<=1)) + { + //Ispisi 99 + //Ispis 9 na levom ekranu + SEL1.write(ukljucen); //ukljucen prvi displej + SEL2.write(iskljucen); //iskljucen drugi displej + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(iskljucen); + f.write(ukljucen); + g.write(ukljucen); + wait_ms(10); + SEL1.write(iskljucen); //iskljucen prvi displej + SEL2.write(ukljucen); //ukljucen drugi displej + //Ispis 9 na desnom ekranu + a.write(ukljucen); + b.write(ukljucen); + c.write(ukljucen); + d.write(ukljucen); + e.write(iskljucen); + f.write(ukljucen); + g.write(ukljucen); + } + } + wait_ms(10); + } +} + +//Korisnicke funkcije +void ISR_SW1() +{ + +}