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
sMotor.cpp
00001 /* 00002 ############################################ 00003 ## sMotor v0.1 Library ## 00004 ## created by Samuel Matildes ## 00005 ############################################ 00006 ---- sam.naeec@gmail.com ----- 00007 This library was made for 4-Phase Stepper Motors 00008 I don't take any resposability for the damage caused to your equipment. 00009 00010 */ 00011 00012 #include "sMotor.h" 00013 00014 #include "mbed.h" 00015 00016 int motorSpeed; // Steper speed 00017 00018 sMotor::sMotor(PinName A0, PinName A1, PinName A2, PinName A3) : _A0(A0), _A1(A1), _A2(A2), _A3(A3) { // Defenition of motor pins 00019 _A0=0; 00020 _A1=0; 00021 _A2=0; 00022 _A3=0; 00023 } 00024 00025 00026 void sMotor::anticlockwise() { // rotate the motor 1 step anticlockwise 00027 for (int i = 0; i < 8; i++) { 00028 00029 switch (i) { // activate the ports A0, A2, A3, A3 in a binary sequence for steps 00030 case 0: { 00031 _A0=0; 00032 _A1=0; 00033 _A2=0; 00034 _A3=1; 00035 } 00036 break; 00037 case 1: { 00038 _A0=0; 00039 _A1=0; 00040 _A2=1; 00041 _A3=1; 00042 } 00043 break; 00044 case 2: { 00045 _A0=0; 00046 _A1=0; 00047 _A2=1; 00048 _A3=0; 00049 } 00050 break; 00051 case 3: { 00052 _A0=0; 00053 _A1=1; 00054 _A2=1; 00055 _A3=0; 00056 } 00057 break; 00058 case 4: { 00059 _A0=0; 00060 _A1=1; 00061 _A2=0; 00062 _A3=0; 00063 } 00064 break; 00065 case 5: { 00066 _A0=1; 00067 _A1=1; 00068 _A2=0; 00069 _A3=0; 00070 } 00071 break; 00072 case 6: { 00073 _A0=1; 00074 _A1=0; 00075 _A2=0; 00076 _A3=0; 00077 } 00078 break; 00079 case 7: { 00080 _A0=1; 00081 _A1=0; 00082 _A2=0; 00083 _A3=1; 00084 } 00085 break; 00086 } 00087 00088 00089 wait_us(motorSpeed); // wait time defines the speed 00090 } 00091 } 00092 00093 void sMotor::clockwise() { // rotate the motor 1 step clockwise 00094 for (int i = 7; i >= 0; i--) { 00095 00096 switch (i) { 00097 case 0: { 00098 _A0=0; 00099 _A1=0; 00100 _A2=0; 00101 _A3=1; 00102 } 00103 break; 00104 case 1: { 00105 _A0=0; 00106 _A1=0; 00107 _A2=1; 00108 _A3=1; 00109 } 00110 break; 00111 case 2: { 00112 _A0=0; 00113 _A1=0; 00114 _A2=1; 00115 _A3=0; 00116 } 00117 break; 00118 case 3: { 00119 _A0=0; 00120 _A1=1; 00121 _A2=1; 00122 _A3=0; 00123 } 00124 break; 00125 case 4: { 00126 _A0=0; 00127 _A1=1; 00128 _A2=0; 00129 _A3=0; 00130 } 00131 break; 00132 case 5: { 00133 _A0=1; 00134 _A1=1; 00135 _A2=0; 00136 _A3=0; 00137 } 00138 break; 00139 case 6: { 00140 _A0=1; 00141 _A1=0; 00142 _A2=0; 00143 _A3=0; 00144 } 00145 break; 00146 case 7: { 00147 _A0=1; 00148 _A1=0; 00149 _A2=0; 00150 _A3=1; 00151 } 00152 break; 00153 } 00154 00155 00156 wait_us(motorSpeed); // wait time defines the speed 00157 } 00158 } 00159 void sMotor::step(int num_steps, int direction, int speed) {// steper function: number of steps, direction (0- right, 1- left), speed (default 1200) 00160 int count=0; // initalize step count 00161 motorSpeed=speed; //set motor speed 00162 if (direction==0) // turn clockwise 00163 do { 00164 clockwise(); 00165 count++; 00166 } while (count<num_steps); // turn number of steps applied 00167 else if (direction==1)// turn anticlockwise 00168 do { 00169 anticlockwise(); 00170 count++; 00171 } while (count<num_steps);// turn number of steps applied 00172 00173 }
Generated on Thu Jul 14 2022 12:07:50 by 1.7.2