tim010 tim010
/
PAI_LV9_Grupa3_Tim010_Zadatak2
Armin, Kenan
Diff: motor.cpp
- Revision:
- 0:3b0e2caa6ad4
diff -r 000000000000 -r 3b0e2caa6ad4 motor.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/motor.cpp Mon May 12 16:01:59 2014 +0000 @@ -0,0 +1,62 @@ +#include "motor.h" +#include "mbed.h" + +int brzinaMotora; // Steper speed + +motor::motor(PinName A0, PinName A1, PinName A2, PinName A3) : _A0(A0), _A1(A1), _A2(A2), _A3(A3) { // Defenition of motor pins + _A0=0; _A1=0; _A2=0; _A3=0; +} + +void motor::postaviPinove(int vr) { + switch (vr) { + case 0: { _A0=0; _A1=0; _A2=0; _A3=1; } + break; + case 1: { _A0=0; _A1=0; _A2=1; _A3=1; } + break; + case 2: { _A0=0; _A1=0; _A2=1; _A3=0; } + break; + case 3: { _A0=0; _A1=1; _A2=1; _A3=0; } + break; + case 4: { _A0=0; _A1=1; _A2=0; _A3=0; } + break; + case 5: { _A0=1; _A1=1; _A2=0; _A3=0; } + break; + case 6: { _A0=1; _A1=0; _A2=0; _A3=0; } + break; + case 7: { _A0=1; _A1=0; _A2=0; _A3=1; } + break; + } + wait_us(brzinaMotora); // wait time defines the speed + } + +void motor::binarniBrojac(bool nazad) { + if (nazad) + for (int i = 7; i >= 0; i--) + postaviPinove(i); + + if (!nazad) + for (int i = 0; i <= 7; i++) + postaviPinove(i); +} + +void motor::nazad() { // rotate the motor 1 step anticlockwise + binarniBrojac(true); +} + +void motor::naprijed() { // rotate the motor 1 step clockwise + binarniBrojac(false); +} +void motor::korak(float broj_koraka, int smjer, int brzina) {// steper function: number of steps, direction (0- right, 1- left), speed (default 1200) + int count=0; // initalize step count + brzinaMotora=brzina; //set motor speed + if (smjer==0) // turn clockwise + do { + naprijed(); + count++; + } while (count<broj_koraka); // turn number of steps applied + else if (smjer==1)// turn anticlockwise + do { + nazad(); + count++; + } while (count<broj_koraka);// turn number of steps applied +} \ No newline at end of file