PURS / uStep
Committer:
inovak1
Date:
Sat Jan 21 09:25:49 2017 +0000
Revision:
4:c80c7ea50a3c
Parent:
2:627a47c7f619
PURS project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inovak1 2:627a47c7f619 1 #include "uStep.h"
inovak1 2:627a47c7f619 2 #include "mbed.h"
inovak1 2:627a47c7f619 3
inovak1 2:627a47c7f619 4 uStep::uStep(PinName FAZ1, PinName FAZ2, PinName FAZ3, PinName FAZ4) : _FAZ1(FAZ1), _FAZ2(FAZ2), _FAZ3(FAZ3), _FAZ4(FAZ4) //DEFINICIJA PINOVA MOTORA
inovak1 2:627a47c7f619 5 {
inovak1 4:c80c7ea50a3c 6 i = 0;
inovak1 4:c80c7ea50a3c 7 trenutniKorak = 0;
inovak1 4:c80c7ea50a3c 8 maxKoraci = 0;
inovak1 4:c80c7ea50a3c 9 busy = false;
inovak1 2:627a47c7f619 10 _FAZ1=0;
inovak1 2:627a47c7f619 11 _FAZ2=0;
inovak1 2:627a47c7f619 12 _FAZ3=0;
inovak1 2:627a47c7f619 13 _FAZ4=0;
inovak1 2:627a47c7f619 14 }
inovak1 2:627a47c7f619 15 void uStep::step1()
inovak1 2:627a47c7f619 16 {
inovak1 2:627a47c7f619 17 _FAZ1=0;
inovak1 2:627a47c7f619 18 _FAZ2=0;
inovak1 2:627a47c7f619 19 _FAZ3=0;
inovak1 2:627a47c7f619 20 _FAZ4=1;
inovak1 2:627a47c7f619 21 }
inovak1 2:627a47c7f619 22 void uStep::step2()
inovak1 2:627a47c7f619 23 {
inovak1 2:627a47c7f619 24 _FAZ1=0;
inovak1 2:627a47c7f619 25 _FAZ2=0;
inovak1 2:627a47c7f619 26 _FAZ3=1;
inovak1 2:627a47c7f619 27 _FAZ4=1;
inovak1 2:627a47c7f619 28 }
inovak1 2:627a47c7f619 29 void uStep::step3()
inovak1 2:627a47c7f619 30 {
inovak1 2:627a47c7f619 31 _FAZ1=0;
inovak1 2:627a47c7f619 32 _FAZ2=0;
inovak1 2:627a47c7f619 33 _FAZ3=1;
inovak1 2:627a47c7f619 34 _FAZ4=0;
inovak1 2:627a47c7f619 35 }
inovak1 2:627a47c7f619 36 void uStep::step4()
inovak1 2:627a47c7f619 37 {
inovak1 2:627a47c7f619 38 _FAZ1=0;
inovak1 2:627a47c7f619 39 _FAZ2=1;
inovak1 2:627a47c7f619 40 _FAZ3=1;
inovak1 2:627a47c7f619 41 _FAZ4=0;
inovak1 2:627a47c7f619 42 }
inovak1 2:627a47c7f619 43 void uStep::step5()
inovak1 2:627a47c7f619 44 {
inovak1 2:627a47c7f619 45 _FAZ1=0;
inovak1 2:627a47c7f619 46 _FAZ2=1;
inovak1 2:627a47c7f619 47 _FAZ3=0;
inovak1 2:627a47c7f619 48 _FAZ4=0;
inovak1 2:627a47c7f619 49 }
inovak1 2:627a47c7f619 50 void uStep::step6()
inovak1 2:627a47c7f619 51 {
inovak1 2:627a47c7f619 52 _FAZ1=1;
inovak1 2:627a47c7f619 53 _FAZ2=1;
inovak1 2:627a47c7f619 54 _FAZ3=0;
inovak1 2:627a47c7f619 55 _FAZ4=0;
inovak1 2:627a47c7f619 56 }
inovak1 2:627a47c7f619 57 void uStep::step7()
inovak1 2:627a47c7f619 58 {
inovak1 2:627a47c7f619 59 _FAZ1=1;
inovak1 2:627a47c7f619 60 _FAZ2=0;
inovak1 2:627a47c7f619 61 _FAZ3=0;
inovak1 2:627a47c7f619 62 _FAZ4=0;
inovak1 2:627a47c7f619 63 }
inovak1 2:627a47c7f619 64 void uStep::step8()
inovak1 2:627a47c7f619 65 {
inovak1 2:627a47c7f619 66 _FAZ1=1;
inovak1 2:627a47c7f619 67 _FAZ2=0;
inovak1 2:627a47c7f619 68 _FAZ3=0;
inovak1 2:627a47c7f619 69 _FAZ4=1;
inovak1 2:627a47c7f619 70 }
inovak1 4:c80c7ea50a3c 71
inovak1 4:c80c7ea50a3c 72 void uStep::motorStop()
inovak1 4:c80c7ea50a3c 73 {
inovak1 4:c80c7ea50a3c 74 _FAZ1=0;
inovak1 4:c80c7ea50a3c 75 _FAZ2=0;
inovak1 4:c80c7ea50a3c 76 _FAZ3=0;
inovak1 4:c80c7ea50a3c 77 _FAZ4=0;
inovak1 4:c80c7ea50a3c 78 }
inovak1 4:c80c7ea50a3c 79
inovak1 2:627a47c7f619 80 void uStep::ooskz() // ROTIRAJ MOTOR U SMJERU OBRNUTOM D KAZALJKE NA SATU
inovak1 2:627a47c7f619 81 {
inovak1 4:c80c7ea50a3c 82 switch(i) {
inovak1 4:c80c7ea50a3c 83 case 0: step1(); break;
inovak1 4:c80c7ea50a3c 84 case 1: step2(); break;
inovak1 4:c80c7ea50a3c 85 case 2: step3(); break;
inovak1 4:c80c7ea50a3c 86 case 3: step4(); break;
inovak1 4:c80c7ea50a3c 87 case 4: step5(); break;
inovak1 4:c80c7ea50a3c 88 case 5: step6(); break;
inovak1 4:c80c7ea50a3c 89 case 6: step7(); break;
inovak1 4:c80c7ea50a3c 90 case 7: step8(); break;
inovak1 2:627a47c7f619 91 }
inovak1 4:c80c7ea50a3c 92 zbrojiZaJedan();
inovak1 2:627a47c7f619 93 }
inovak1 2:627a47c7f619 94
inovak1 2:627a47c7f619 95 void uStep::skz() // ROTIRAJ MOTOR JEDNOM U SMJERU KAZALJKE NA SATU
inovak1 2:627a47c7f619 96 {
inovak1 4:c80c7ea50a3c 97 switch(i) {
inovak1 4:c80c7ea50a3c 98 case 0: step8(); break;
inovak1 4:c80c7ea50a3c 99 case 1: step7(); break;
inovak1 4:c80c7ea50a3c 100 case 2: step6(); break;
inovak1 4:c80c7ea50a3c 101 case 3: step5(); break;
inovak1 4:c80c7ea50a3c 102 case 4: step4(); break;
inovak1 4:c80c7ea50a3c 103 case 5: step3(); break;
inovak1 4:c80c7ea50a3c 104 case 6: step2(); break;
inovak1 4:c80c7ea50a3c 105 case 7: step1(); break;
inovak1 4:c80c7ea50a3c 106 }
inovak1 4:c80c7ea50a3c 107 zbrojiZaJedan();
inovak1 4:c80c7ea50a3c 108 }
inovak1 4:c80c7ea50a3c 109 void uStep::zbrojiZaJedan()
inovak1 4:c80c7ea50a3c 110 {
inovak1 4:c80c7ea50a3c 111 if (i < 7)
inovak1 4:c80c7ea50a3c 112 i++;
inovak1 4:c80c7ea50a3c 113 else {
inovak1 4:c80c7ea50a3c 114 i = 0;
inovak1 4:c80c7ea50a3c 115 trenutniKorak++;
inovak1 4:c80c7ea50a3c 116 }
inovak1 4:c80c7ea50a3c 117
inovak1 4:c80c7ea50a3c 118 if (trenutniKorak >= maxKoraci)
inovak1 4:c80c7ea50a3c 119 {
inovak1 4:c80c7ea50a3c 120 steptick.detach();
inovak1 4:c80c7ea50a3c 121 motorStop();
inovak1 4:c80c7ea50a3c 122 trenutniKorak = 0;
inovak1 4:c80c7ea50a3c 123 busy = false;
inovak1 2:627a47c7f619 124 }
inovak1 2:627a47c7f619 125 }
inovak1 2:627a47c7f619 126
inovak1 4:c80c7ea50a3c 127 void uStep::step(int koraci, int smjer, float brzina) // FUNKCIJA STEP MOTORA (BROJ KORAKA, SMJER VRTNJE, BRZINA VRTNJE)
inovak1 2:627a47c7f619 128 {
inovak1 4:c80c7ea50a3c 129 motorStop();
inovak1 4:c80c7ea50a3c 130 i = 0;
inovak1 4:c80c7ea50a3c 131 trenutniKorak = 0;
inovak1 4:c80c7ea50a3c 132 busy = true;
inovak1 4:c80c7ea50a3c 133 maxKoraci = koraci;
inovak1 4:c80c7ea50a3c 134 motorbrzina = brzina; //POSTAVLJANJE BRZINE MOTORA
inovak1 4:c80c7ea50a3c 135 if (smjer == 0) // OKRETANJE U SMJERU KAZALJKE NA SATU
inovak1 4:c80c7ea50a3c 136 {
inovak1 4:c80c7ea50a3c 137 steptick.attach(this, &uStep::skz, motorbrzina);
inovak1 4:c80c7ea50a3c 138 skz();
inovak1 4:c80c7ea50a3c 139 }
inovak1 2:627a47c7f619 140 else if (smjer==1)// OKRETANJE OBRNUTO OD KAZALJKE NA SATU
inovak1 4:c80c7ea50a3c 141 {
inovak1 4:c80c7ea50a3c 142 steptick.attach(this, &uStep::ooskz, motorbrzina);
inovak1 4:c80c7ea50a3c 143 ooskz();
inovak1 4:c80c7ea50a3c 144 }
inovak1 2:627a47c7f619 145
inovak1 4:c80c7ea50a3c 146 }
inovak1 4:c80c7ea50a3c 147
inovak1 4:c80c7ea50a3c 148 bool uStep::isRunning()
inovak1 4:c80c7ea50a3c 149 {
inovak1 4:c80c7ea50a3c 150 return busy;
inovak1 2:627a47c7f619 151 }