Ivan Novak / uStep1

uStep.cpp

Committer:
inovak1
Date:
2017-01-09
Revision:
0:1b66f1ca8dd2

File content as of revision 0:1b66f1ca8dd2:

#include "uStep.h"
#include "mbed.h"
Ticker mtick;
int motorbrzina; // BRZINA STEP MOTORA
uStep::uStep(PinName FAZ1, PinName FAZ2, PinName FAZ3, PinName FAZ4) : _FAZ1(FAZ1), _FAZ2(FAZ2), _FAZ3(FAZ3), _FAZ4(FAZ4)   //DEFINICIJA PINOVA MOTORA
{
    _FAZ1=0;
    _FAZ2=0;
    _FAZ3=0;
    _FAZ4=0;
}
void uStep::ooskz()   // ROTIRAJ MOTOR U SMJERU OBRNUTOM D KAZALJKE NA SATU
{
    for (int i = 0; i <= 7; i++) {
        switch (i) { // AKTIVIRAJTE FAZE ( FAZ1, FAZ3, FAZ4, FAZ4)  U BINARNOJ SEKVENCI ZA KORAKE
            case 0: {
                _FAZ1=0;
                _FAZ2=0;
                _FAZ3=0;
                _FAZ4=1;
            }
            break;
            case 1: {
                _FAZ1=0;
                _FAZ2=0;
                _FAZ3=1;
                _FAZ4=1;
            }
            break;
            case 2: {
                _FAZ1=0;
                _FAZ2=0;
                _FAZ3=1;
                _FAZ4=0;
            }
            break;
            case 3: {
                _FAZ1=0;
                _FAZ2=1;
                _FAZ3=1;
                _FAZ4=0;
            }
            break;
            case 4: {
                _FAZ1=0;
                _FAZ2=1;
                _FAZ3=0;
                _FAZ4=0;
            }
            break;
            case 5: {
                _FAZ1=1;
                _FAZ2=1;
                _FAZ3=0;
                _FAZ4=0;
            }
            break;
            case 6: {
                _FAZ1=1;
                _FAZ2=0;
                _FAZ3=0;
                _FAZ4=0;
            }
            break;
            case 7: {
                _FAZ1=1;
                _FAZ2=0;
                _FAZ3=0;
                _FAZ4=1;
            }
            break;
        }


        wait_us(motorbrzina); // VRIJEME CEKANJA DEFINIRA BRZINU OKRETANJA MOTORA
    }
}

void uStep::skz()   // ROTIRAJ MOTOR JEDNOM U SMJERU KAZALJKE NA SATU
{
    for (int i = 0; i <= 7; i++) {

        switch (i) {
            case 0: {
                _FAZ1=1;
                _FAZ2=0;
                _FAZ3=0;
                _FAZ4=1;
            }
            break;
            case 1: {
                _FAZ1=1;
                _FAZ2=0;
                _FAZ3=0;
                _FAZ4=0;
            }
            break;
            case 2: {
                _FAZ1=1;
                _FAZ2=1;
                _FAZ3=0;
                _FAZ4=0;
            }
            break;
            case 3: {
                _FAZ1=0;
                _FAZ2=1;
                _FAZ3=0;
                _FAZ4=0;
            }
            break;
            case 4: {
                _FAZ1=0;
                _FAZ2=1;
                _FAZ3=1;
                _FAZ4=0;
            }
            break;
            case 5: {
                _FAZ1=0;
                _FAZ2=0;
                _FAZ3=1;
                _FAZ4=0;
            }
            break;
            case 6: {
                _FAZ1=0;
                _FAZ2=0;
                _FAZ3=1;
                _FAZ4=1;
            }
            break;
            case 7: {
                _FAZ1=0;
                _FAZ2=0;
                _FAZ3=0;
                _FAZ4=1;
            }
            break;
        }


        wait_us(motorbrzina); // VRIJEME CEKANJA DEFINIRA BRZINU OKRETANJA MOTORA
    }
}
void uStep::step(int koraci, int smjer, int brzina)  // FUNKCIJA STEP MOTORA (BROJ KORAKA, SMJER VRTNJE, BRZINA VRTNJE)
{
    int count=0; // INICIJALIZCIJA BROJACA KORAKA
    motorbrzina=brzina; //POSTAVLJANJE BRZINE MOTORA
    if (smjer==0) // OKRETANJE U SMJERU KAZALJKE NA SATU
        do {
            skz();
            count++;
        } while (count<koraci); // turn number of steps applied
    else if (smjer==1)// OKRETANJE OBRNUTO OD KAZALJKE NA SATU
        do {
            ooskz();
            count++;
        } while (count<koraci);// IZVODI ODABRANI BROJ KORAKA

}