Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: uStep.cpp
- Revision:
- 4:c80c7ea50a3c
- Parent:
- 2:627a47c7f619
--- a/uStep.cpp Sat Jan 14 18:19:52 2017 +0000
+++ b/uStep.cpp Sat Jan 21 09:25:49 2017 +0000
@@ -1,10 +1,12 @@
#include "uStep.h"
#include "mbed.h"
-int motorbrzina; // BRZINA STEP MOTORA
-Ticker steptick;
uStep::uStep(PinName FAZ1, PinName FAZ2, PinName FAZ3, PinName FAZ4) : _FAZ1(FAZ1), _FAZ2(FAZ2), _FAZ3(FAZ3), _FAZ4(FAZ4) //DEFINICIJA PINOVA MOTORA
{
+ i = 0;
+ trenutniKorak = 0;
+ maxKoraci = 0;
+ busy = false;
_FAZ1=0;
_FAZ2=0;
_FAZ3=0;
@@ -66,102 +68,84 @@
_FAZ3=0;
_FAZ4=1;
}
+
+void uStep::motorStop()
+{
+ _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: {
- steptick.attach(this,&uStep::step1 ,motorbrzina);
- }
- break;
- case 1: {
- steptick.attach(this,&uStep::step2 ,motorbrzina);
- }
- break;
- case 2: {
- steptick.attach(this,&uStep::step3,motorbrzina);
- }
- break;
- case 3: {
- steptick.attach(this,&uStep::step4,motorbrzina);
- }
- break;
- case 4: {
- steptick.attach(this,&uStep::step5 ,motorbrzina);
- }
- break;
- case 5: {
- steptick.attach(this,&uStep::step6 ,motorbrzina);
- }
- break;
- case 6: {
- steptick.attach(this,&uStep::step7 ,motorbrzina);
- }
- break;
- case 7: {
- steptick.attach(this,&uStep::step8 ,motorbrzina);
- }
- break;
- }
- steptick.detach();
+ switch(i) {
+ case 0: step1(); break;
+ case 1: step2(); break;
+ case 2: step3(); break;
+ case 3: step4(); break;
+ case 4: step5(); break;
+ case 5: step6(); break;
+ case 6: step7(); break;
+ case 7: step8(); break;
}
+ zbrojiZaJedan();
}
void uStep::skz() // ROTIRAJ MOTOR JEDNOM U SMJERU KAZALJKE NA SATU
{
- for (int i = 0; i <= 7; i++) {
-
- switch (i) {
- case 0: {
- steptick.attach(this,&uStep::step8 ,motorbrzina);
- }
- break;
- case 1: {
- steptick.attach(this,&uStep::step7 ,motorbrzina);
- }
- break;
- case 2: {
- steptick.attach(this,&uStep::step6 ,motorbrzina);
- }
- break;
- case 3: {
- steptick.attach(this,&uStep::step5 ,motorbrzina);
- }
- break;
- case 4: {
- steptick.attach(this,&uStep::step4 ,motorbrzina);
- }
- break;
- case 5: {
- steptick.attach(this,&uStep::step3 ,motorbrzina);
- }
- break;
- case 6: {
- steptick.attach(this,&uStep::step2 ,motorbrzina);
- }
- break;
- case 7: {
- steptick.attach(this,&uStep::step1 ,motorbrzina);
- }
- break;
- }
- steptick.detach();
+ switch(i) {
+ case 0: step8(); break;
+ case 1: step7(); break;
+ case 2: step6(); break;
+ case 3: step5(); break;
+ case 4: step4(); break;
+ case 5: step3(); break;
+ case 6: step2(); break;
+ case 7: step1(); break;
+ }
+ zbrojiZaJedan();
+}
+void uStep::zbrojiZaJedan()
+{
+ if (i < 7)
+ i++;
+ else {
+ i = 0;
+ trenutniKorak++;
+ }
+
+ if (trenutniKorak >= maxKoraci)
+ {
+ steptick.detach();
+ motorStop();
+ trenutniKorak = 0;
+ busy = false;
}
}
-void uStep::step(int koraci, int smjer, int brzina) // FUNKCIJA STEP MOTORA (BROJ KORAKA, SMJER VRTNJE, BRZINA VRTNJE)
+void uStep::step(int koraci, int smjer, float 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
+ motorStop();
+ i = 0;
+ trenutniKorak = 0;
+ busy = true;
+ maxKoraci = koraci;
+ motorbrzina = brzina; //POSTAVLJANJE BRZINE MOTORA
+ if (smjer == 0) // OKRETANJE U SMJERU KAZALJKE NA SATU
+ {
+ steptick.attach(this, &uStep::skz, motorbrzina);
+ skz();
+ }
else if (smjer==1)// OKRETANJE OBRNUTO OD KAZALJKE NA SATU
- do {
- ooskz();
- count++;
- } while (count<koraci);// IZVODI ODABRANI BROJ KORAKA
+ {
+ steptick.attach(this, &uStep::ooskz, motorbrzina);
+ ooskz();
+ }
+}
+
+bool uStep::isRunning()
+{
+ return busy;
}
\ No newline at end of file