Library for 4 Phase Step Motor like 28BYJ-48

Dependents:   Stepper_4 LV9_GRUPA2_TIM008_ZADATAK2 LV9_PAI_Grupa2_Tim003-Zadatak1 LV9_PAI_Grupa2-Tim003 ... more

Files at this revision

API Documentation at this revision

Comitter:
XtaticO
Date:
Thu Jun 14 12:16:40 2012 +0000
Commit message:

Changed in this revision

sMotor.cpp Show annotated file Show diff for this revision Revisions of this file
sMotor.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 4b3b9e047ce3 sMotor.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sMotor.cpp	Thu Jun 14 12:16:40 2012 +0000
@@ -0,0 +1,173 @@
+/*
+############################################
+##           sMotor v0.1 Library          ##
+##          created by Samuel Matildes    ##
+############################################
+        ---- sam.naeec@gmail.com -----
+This library was made for 4-Phase Stepper Motors
+I don't take any resposability for the damage caused to your equipment.
+
+*/
+
+#include "sMotor.h"
+
+#include "mbed.h"
+
+int motorSpeed; // Steper speed
+
+sMotor::sMotor(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 sMotor::anticlockwise() { // rotate the motor 1 step anticlockwise 
+    for (int i = 0; i < 8; i++) {
+
+        switch (i) { // activate the ports A0, A2, A3, A3 in a binary sequence for steps
+            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(motorSpeed); // wait time defines the speed 
+    }
+}
+
+void sMotor::clockwise() { // rotate the motor 1 step clockwise 
+    for (int i = 7; i >= 0; i--) {
+
+        switch (i) {
+            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(motorSpeed); // wait time defines the speed 
+    }
+}
+void sMotor::step(int num_steps, int direction, int speed) {// steper function: number of steps, direction (0- right, 1- left), speed (default 1200)
+    int count=0; // initalize step count
+    motorSpeed=speed; //set motor speed
+    if (direction==0) // turn clockwise
+        do {
+            clockwise();
+            count++;
+        } while (count<num_steps); // turn number of steps applied 
+    else if (direction==1)// turn anticlockwise
+        do {
+            anticlockwise();
+            count++;
+        } while (count<num_steps);// turn number of steps applied 
+
+}
\ No newline at end of file
diff -r 000000000000 -r 4b3b9e047ce3 sMotor.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sMotor.h	Thu Jun 14 12:16:40 2012 +0000
@@ -0,0 +1,35 @@
+/*
+############################################
+##           sMotor v0.1 Library          ##
+##          created by Samuel Matildes    ##
+############################################
+        ---- sam.naeec@gmail.com -----
+This library was made for 4-Phase Stepper Motors
+I don't take any resposability for the damage caused to your equipment.
+
+*/
+#ifndef MBED_SMOTOR_H
+#define MBED_SMOTOR_H
+
+#include "mbed.h"
+
+class sMotor {
+public:
+
+    sMotor(PinName A0, PinName A1, PinName A2, PinName A3); //motor constructor
+
+    void step(int num_steps, int direction, int speed);
+    void anticlockwise();
+    void clockwise();
+
+
+private:
+
+    DigitalOut _A0;
+    DigitalOut _A1;
+    DigitalOut _A2;
+    DigitalOut _A3;
+
+};
+
+#endif
\ No newline at end of file