LV9_Grupa7_Tim004_Zadatak2 Bašić Amar Sarajčić Ensar

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
pai2015ensarsarajcic
Date:
Thu May 14 17:58:33 2015 +0000
Commit message:
Ba?i? Amar; Saraj?i? Ensar

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 14 17:58:33 2015 +0000
@@ -0,0 +1,206 @@
+#include "mbed.h"
+
+#define MAX_BRZINA 1230
+#define MIN_BRZINA 500
+#define CLOCKWISE true
+#define COUNTERCLOCKWISE false
+#define POZ1 8
+#define POZ2 12
+#define POZ3 4
+#define POZ4 6
+#define POZ5 2
+#define POZ6 3
+#define POZ7 1
+#define POZ8 9
+
+Serial pc(USBTX, USBRX);
+
+BusOut IN(dp13, dp11, dp10, dp9);
+DigitalOut myled(LED1);
+
+float brzina = MIN_BRZINA;
+bool smjer = CLOCKWISE;
+bool pokrenut = false;
+int pozicija = 0;
+int ugaoPoz = 0;
+
+void start();
+void stop(); 
+void postaviUgao(int ugao);
+void postaviPoziciju(int pozicija);
+void rotirajCW();
+void rotirajCC();
+void citajPoziciju();
+void citajBrzinu();
+void rotiraj();
+void ucitaj();
+
+int main() {
+    pc.printf("TESTIRANJE!");
+    wait(2);
+    pc.printf("Unesi U### za podesavanje pozicije, P za pokretanje, Z za zaustavljanje, B#### za podesavanje brzine i S za promjenu smjera kretanja!\n");
+    pc.attach(&ucitaj);//, 1/brzina);
+    while(1) {
+        rotiraj();
+    }
+}
+
+void ucitaj()
+{
+    if(pc.readable())
+    {
+        char znak = pc.getc();
+        if(znak == 'U' || znak == 'u')
+            citajPoziciju();
+        else if (znak == 'P' || znak == 'p')
+            start();
+        else if (znak == 'Z' || znak == 'z')
+            stop();
+        else if (znak == 'B' || znak == 'b')
+            citajBrzinu();
+        else if (znak == 'S' || znak == 's')
+            smjer = !smjer;   
+    }
+     
+}
+
+void start()
+{
+    pokrenut = true;
+}
+
+void stop()
+{
+    pokrenut = false;
+}
+
+void postaviUgao(int ugao)
+{
+    start();
+    if(ugao < 0 || ugao > 360)
+        return;
+    while(ugaoPoz != int(4096./(360. / ugao))){rotiraj();}
+    stop();   
+}
+
+void postaviPoziciju(int pozicija)
+{
+    IN = pozicija;
+}
+
+void rotirajCW()
+{
+    pozicija++;
+    ugaoPoz++;
+    if(pozicija > 7)
+        pozicija = 0;
+    if(ugaoPoz > 4096)
+        ugaoPoz = 0;
+    switch(pozicija)
+    {
+        case 0:
+            postaviPoziciju(POZ1);
+            break;
+        case 1:
+            postaviPoziciju(POZ2);
+            break;
+        case 2:
+            postaviPoziciju(POZ3);
+            break;
+        case 3:
+            postaviPoziciju(POZ4);
+            break;
+        case 4:
+            postaviPoziciju(POZ5);
+            break;
+        case 5:
+            postaviPoziciju(POZ6);
+            break;
+        case 6:
+            postaviPoziciju(POZ7);
+            break;
+        case 7:
+            postaviPoziciju(POZ8);
+            break;  
+    }
+}
+
+void rotirajCC()
+{
+    pozicija--;
+    ugaoPoz--;
+    if(pozicija < 0)
+        pozicija = 7;
+    if(ugaoPoz <= 0)
+        ugaoPoz = 4096;
+    switch(pozicija)
+    {
+        case 0:
+            postaviPoziciju(POZ1);
+            break;
+        case 1:
+            postaviPoziciju(POZ2);
+            break;
+        case 2:
+            postaviPoziciju(POZ3);
+            break;
+        case 3:
+            postaviPoziciju(POZ4);
+            break;
+        case 4:
+            postaviPoziciju(POZ5);
+            break;
+        case 5:
+            postaviPoziciju(POZ6);
+            break;
+        case 6:
+            postaviPoziciju(POZ7);
+            break;
+        case 7:
+            postaviPoziciju(POZ8);
+            break;  
+    }
+}
+
+void rotiraj()
+{
+    if(!pokrenut)
+        return;
+    if(smjer == CLOCKWISE)
+        rotirajCW();
+    else if(smjer == COUNTERCLOCKWISE)
+        rotirajCC();
+    wait(1/brzina);
+}
+
+void citajPoziciju()
+{
+    char znak;
+    int ugao = 0;
+    for(int i = 0; i < 3; i++)
+    {
+        while(!pc.readable()){rotiraj();}
+        znak = pc.getc();
+        if(znak < '0' || znak > '9')
+            break;
+        ugao = ugao*10 + (znak-'0');
+    } 
+    postaviUgao(ugao);
+}
+
+void citajBrzinu()
+{
+    char znak;
+    int broj = 0;
+    for(int i = 0; i < 4; i++)
+    {
+        while(!pc.readable()){rotiraj();}
+        znak = pc.getc();
+        if(znak < '0' || znak > '9')
+            break;
+        broj = broj*10 + (znak - '0');
+    }
+    pc.printf("%d", broj);
+    if(broj >= MIN_BRZINA && broj <= MAX_BRZINA)
+        brzina = broj;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu May 14 17:58:33 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/dbbf35b96557
\ No newline at end of file