Ivan Novak / uStep
Committer:
inovak1
Date:
Wed Jan 04 00:00:07 2017 +0000
Revision:
0:b6a7b972fbee
PURS SEMINAR

Who changed what in which revision?

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