Miroljub Micic 514/2018

Dependencies:   mbed

Revision:
0:2a2e6c8ba676
diff -r 000000000000 -r 2a2e6c8ba676 main.cpp
--- /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()
+{
+    
+}