PURS / uStep
Committer:
inovak1
Date:
Sat Jan 14 18:03:55 2017 +0000
Revision:
2:627a47c7f619
Child:
4:c80c7ea50a3c
Sve ukupno

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 int motorbrzina; // BRZINA STEP MOTORA
inovak1 2:627a47c7f619 4 Ticker steptick;
inovak1 2:627a47c7f619 5
inovak1 2:627a47c7f619 6 uStep::uStep(PinName FAZ1, PinName FAZ2, PinName FAZ3, PinName FAZ4) : _FAZ1(FAZ1), _FAZ2(FAZ2), _FAZ3(FAZ3), _FAZ4(FAZ4) //DEFINICIJA PINOVA MOTORA
inovak1 2:627a47c7f619 7 {
inovak1 2:627a47c7f619 8 _FAZ1=0;
inovak1 2:627a47c7f619 9 _FAZ2=0;
inovak1 2:627a47c7f619 10 _FAZ3=0;
inovak1 2:627a47c7f619 11 _FAZ4=0;
inovak1 2:627a47c7f619 12 }
inovak1 2:627a47c7f619 13 void uStep::step1()
inovak1 2:627a47c7f619 14 {
inovak1 2:627a47c7f619 15 _FAZ1=0;
inovak1 2:627a47c7f619 16 _FAZ2=0;
inovak1 2:627a47c7f619 17 _FAZ3=0;
inovak1 2:627a47c7f619 18 _FAZ4=1;
inovak1 2:627a47c7f619 19 }
inovak1 2:627a47c7f619 20 void uStep::step2()
inovak1 2:627a47c7f619 21 {
inovak1 2:627a47c7f619 22 _FAZ1=0;
inovak1 2:627a47c7f619 23 _FAZ2=0;
inovak1 2:627a47c7f619 24 _FAZ3=1;
inovak1 2:627a47c7f619 25 _FAZ4=1;
inovak1 2:627a47c7f619 26 }
inovak1 2:627a47c7f619 27 void uStep::step3()
inovak1 2:627a47c7f619 28 {
inovak1 2:627a47c7f619 29 _FAZ1=0;
inovak1 2:627a47c7f619 30 _FAZ2=0;
inovak1 2:627a47c7f619 31 _FAZ3=1;
inovak1 2:627a47c7f619 32 _FAZ4=0;
inovak1 2:627a47c7f619 33 }
inovak1 2:627a47c7f619 34 void uStep::step4()
inovak1 2:627a47c7f619 35 {
inovak1 2:627a47c7f619 36 _FAZ1=0;
inovak1 2:627a47c7f619 37 _FAZ2=1;
inovak1 2:627a47c7f619 38 _FAZ3=1;
inovak1 2:627a47c7f619 39 _FAZ4=0;
inovak1 2:627a47c7f619 40 }
inovak1 2:627a47c7f619 41 void uStep::step5()
inovak1 2:627a47c7f619 42 {
inovak1 2:627a47c7f619 43 _FAZ1=0;
inovak1 2:627a47c7f619 44 _FAZ2=1;
inovak1 2:627a47c7f619 45 _FAZ3=0;
inovak1 2:627a47c7f619 46 _FAZ4=0;
inovak1 2:627a47c7f619 47 }
inovak1 2:627a47c7f619 48 void uStep::step6()
inovak1 2:627a47c7f619 49 {
inovak1 2:627a47c7f619 50 _FAZ1=1;
inovak1 2:627a47c7f619 51 _FAZ2=1;
inovak1 2:627a47c7f619 52 _FAZ3=0;
inovak1 2:627a47c7f619 53 _FAZ4=0;
inovak1 2:627a47c7f619 54 }
inovak1 2:627a47c7f619 55 void uStep::step7()
inovak1 2:627a47c7f619 56 {
inovak1 2:627a47c7f619 57 _FAZ1=1;
inovak1 2:627a47c7f619 58 _FAZ2=0;
inovak1 2:627a47c7f619 59 _FAZ3=0;
inovak1 2:627a47c7f619 60 _FAZ4=0;
inovak1 2:627a47c7f619 61 }
inovak1 2:627a47c7f619 62 void uStep::step8()
inovak1 2:627a47c7f619 63 {
inovak1 2:627a47c7f619 64 _FAZ1=1;
inovak1 2:627a47c7f619 65 _FAZ2=0;
inovak1 2:627a47c7f619 66 _FAZ3=0;
inovak1 2:627a47c7f619 67 _FAZ4=1;
inovak1 2:627a47c7f619 68 }
inovak1 2:627a47c7f619 69 void uStep::ooskz() // ROTIRAJ MOTOR U SMJERU OBRNUTOM D KAZALJKE NA SATU
inovak1 2:627a47c7f619 70 {
inovak1 2:627a47c7f619 71 for (int i = 0; i <= 7; i++) {
inovak1 2:627a47c7f619 72 switch (i) { // AKTIVIRAJTE FAZE ( FAZ1, FAZ3, FAZ4, FAZ4) U BINARNOJ SEKVENCI ZA KORAKE
inovak1 2:627a47c7f619 73 case 0: {
inovak1 2:627a47c7f619 74 steptick.attach(this,&uStep::step1 ,motorbrzina);
inovak1 2:627a47c7f619 75 }
inovak1 2:627a47c7f619 76 break;
inovak1 2:627a47c7f619 77 case 1: {
inovak1 2:627a47c7f619 78 steptick.attach(this,&uStep::step2 ,motorbrzina);
inovak1 2:627a47c7f619 79 }
inovak1 2:627a47c7f619 80 break;
inovak1 2:627a47c7f619 81 case 2: {
inovak1 2:627a47c7f619 82 steptick.attach(this,&uStep::step3,motorbrzina);
inovak1 2:627a47c7f619 83 }
inovak1 2:627a47c7f619 84 break;
inovak1 2:627a47c7f619 85 case 3: {
inovak1 2:627a47c7f619 86 steptick.attach(this,&uStep::step4,motorbrzina);
inovak1 2:627a47c7f619 87 }
inovak1 2:627a47c7f619 88 break;
inovak1 2:627a47c7f619 89 case 4: {
inovak1 2:627a47c7f619 90 steptick.attach(this,&uStep::step5 ,motorbrzina);
inovak1 2:627a47c7f619 91 }
inovak1 2:627a47c7f619 92 break;
inovak1 2:627a47c7f619 93 case 5: {
inovak1 2:627a47c7f619 94 steptick.attach(this,&uStep::step6 ,motorbrzina);
inovak1 2:627a47c7f619 95 }
inovak1 2:627a47c7f619 96 break;
inovak1 2:627a47c7f619 97 case 6: {
inovak1 2:627a47c7f619 98 steptick.attach(this,&uStep::step7 ,motorbrzina);
inovak1 2:627a47c7f619 99 }
inovak1 2:627a47c7f619 100 break;
inovak1 2:627a47c7f619 101 case 7: {
inovak1 2:627a47c7f619 102 steptick.attach(this,&uStep::step8 ,motorbrzina);
inovak1 2:627a47c7f619 103 }
inovak1 2:627a47c7f619 104 break;
inovak1 2:627a47c7f619 105 }
inovak1 2:627a47c7f619 106 steptick.detach();
inovak1 2:627a47c7f619 107 }
inovak1 2:627a47c7f619 108 }
inovak1 2:627a47c7f619 109
inovak1 2:627a47c7f619 110 void uStep::skz() // ROTIRAJ MOTOR JEDNOM U SMJERU KAZALJKE NA SATU
inovak1 2:627a47c7f619 111 {
inovak1 2:627a47c7f619 112 for (int i = 0; i <= 7; i++) {
inovak1 2:627a47c7f619 113
inovak1 2:627a47c7f619 114 switch (i) {
inovak1 2:627a47c7f619 115 case 0: {
inovak1 2:627a47c7f619 116 steptick.attach(this,&uStep::step8 ,motorbrzina);
inovak1 2:627a47c7f619 117 }
inovak1 2:627a47c7f619 118 break;
inovak1 2:627a47c7f619 119 case 1: {
inovak1 2:627a47c7f619 120 steptick.attach(this,&uStep::step7 ,motorbrzina);
inovak1 2:627a47c7f619 121 }
inovak1 2:627a47c7f619 122 break;
inovak1 2:627a47c7f619 123 case 2: {
inovak1 2:627a47c7f619 124 steptick.attach(this,&uStep::step6 ,motorbrzina);
inovak1 2:627a47c7f619 125 }
inovak1 2:627a47c7f619 126 break;
inovak1 2:627a47c7f619 127 case 3: {
inovak1 2:627a47c7f619 128 steptick.attach(this,&uStep::step5 ,motorbrzina);
inovak1 2:627a47c7f619 129 }
inovak1 2:627a47c7f619 130 break;
inovak1 2:627a47c7f619 131 case 4: {
inovak1 2:627a47c7f619 132 steptick.attach(this,&uStep::step4 ,motorbrzina);
inovak1 2:627a47c7f619 133 }
inovak1 2:627a47c7f619 134 break;
inovak1 2:627a47c7f619 135 case 5: {
inovak1 2:627a47c7f619 136 steptick.attach(this,&uStep::step3 ,motorbrzina);
inovak1 2:627a47c7f619 137 }
inovak1 2:627a47c7f619 138 break;
inovak1 2:627a47c7f619 139 case 6: {
inovak1 2:627a47c7f619 140 steptick.attach(this,&uStep::step2 ,motorbrzina);
inovak1 2:627a47c7f619 141 }
inovak1 2:627a47c7f619 142 break;
inovak1 2:627a47c7f619 143 case 7: {
inovak1 2:627a47c7f619 144 steptick.attach(this,&uStep::step1 ,motorbrzina);
inovak1 2:627a47c7f619 145 }
inovak1 2:627a47c7f619 146 break;
inovak1 2:627a47c7f619 147 }
inovak1 2:627a47c7f619 148 steptick.detach();
inovak1 2:627a47c7f619 149 }
inovak1 2:627a47c7f619 150 }
inovak1 2:627a47c7f619 151
inovak1 2:627a47c7f619 152 void uStep::step(int koraci, int smjer, int brzina) // FUNKCIJA STEP MOTORA (BROJ KORAKA, SMJER VRTNJE, BRZINA VRTNJE)
inovak1 2:627a47c7f619 153 {
inovak1 2:627a47c7f619 154 int count=0; // INICIJALIZCIJA BROJACA KORAKA
inovak1 2:627a47c7f619 155 motorbrzina=brzina; //POSTAVLJANJE BRZINE MOTORA
inovak1 2:627a47c7f619 156 if (smjer==0) // OKRETANJE U SMJERU KAZALJKE NA SATU
inovak1 2:627a47c7f619 157 do {
inovak1 2:627a47c7f619 158 skz();
inovak1 2:627a47c7f619 159 count++;
inovak1 2:627a47c7f619 160 } while (count<koraci); // turn number of steps applied
inovak1 2:627a47c7f619 161 else if (smjer==1)// OKRETANJE OBRNUTO OD KAZALJKE NA SATU
inovak1 2:627a47c7f619 162 do {
inovak1 2:627a47c7f619 163 ooskz();
inovak1 2:627a47c7f619 164 count++;
inovak1 2:627a47c7f619 165 } while (count<koraci);// IZVODI ODABRANI BROJ KORAKA
inovak1 2:627a47c7f619 166
inovak1 2:627a47c7f619 167 }