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: FermeCantileverMotor.cpp
- Revision:
- 0:151100d6a376
diff -r 000000000000 -r 151100d6a376 FermeCantileverMotor.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/FermeCantileverMotor.cpp Mon Jan 11 10:52:25 2021 +0000
@@ -0,0 +1,226 @@
+#include "FermeCantileverMotor.h"
+
+#include "mbed.h"
+
+int CantilevermotorSpeed; // Steper speed
+
+cantileverMotor::cantileverMotor(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 cantileverMotor::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=1;
+ _A3=0;
+ }
+ break;
+ case 1: {
+ _A0=0;
+ _A1=0;
+ _A2=0;
+ _A3=0;
+ }
+ break;
+ case 2: {
+ _A0=0;
+ _A1=0;
+ _A2=0;
+ _A3=1;
+ }
+ break;
+ case 3: {
+ _A0=0;
+ _A1=1;
+ _A2=0;
+ _A3=1;
+ }
+ break;
+ case 4: {
+ _A0=0;
+ _A1=1;
+ _A2=1;
+ _A3=1;
+ }
+ break;
+ case 5: {
+ _A0=1;
+ _A1=1;
+ _A2=1;
+ _A3=1;
+ }
+ break;
+ case 6: {
+ _A0=1;
+ _A1=0;
+ _A2=1;
+ _A3=1;
+ }
+ break;
+ case 7: {
+ _A0=1;
+ _A1=0;
+ _A2=1;
+ _A3=0;
+ }
+ break;
+ }
+
+
+ wait_us(CantilevermotorSpeed); // wait time defines the speed
+ }
+}
+
+void cantileverMotor::clockwise() { // rotate the motor 1 step clockwise
+ for (int i = 7; i>= 0; i--) {
+
+ switch (i) {
+ case 0: {
+ _A0=0;
+ _A1=0;
+ _A2=1;
+ _A3=0;
+ }
+ break;
+ case 1: {
+ _A0=0;
+ _A1=0;
+ _A2=0;
+ _A3=0;
+ }
+ break;
+ case 2: {
+ _A0=0;
+ _A1=0;
+ _A2=0;
+ _A3=1;
+ }
+ break;
+ case 3: {
+ _A0=0;
+ _A1=1;
+ _A2=0;
+ _A3=1;
+ }
+ break;
+ case 4: {
+ _A0=0;
+ _A1=1;
+ _A2=1;
+ _A3=1;
+ }
+ break;
+ case 5: {
+ _A0=1;
+ _A1=1;
+ _A2=1;
+ _A3=1;
+ }
+ break;
+ case 6: {
+ _A0=1;
+ _A1=0;
+ _A2=1;
+ _A3=1;
+ }
+ break;
+ case 7: {
+ _A0=1;
+ _A1=0;
+ _A2=1;
+ _A3=0;
+ }
+ break;
+
+ /* 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(CantilevermotorSpeed); // wait time defines the speed
+ }
+}
+void cantileverMotor::cantileverstep(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
+
+ CantilevermotorSpeed=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