![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
controller
Diff: main.cpp
- Revision:
- 0:8dc46da67c9f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Nov 01 13:07:59 2016 +0000 @@ -0,0 +1,125 @@ +// 28BYJ-48 stepper motor example +// showing how to control a unipolar stepper motor by mbed digital output ports. +// Tested on the Nucleo F103RB Board +// Based on http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino +// Using the ULN2003A Driver. + +#include "mbed.h" +Serial pc(USBTX,USBRX); +Ticker t0; +Ticker t7; + +volatile bool fn0_go = false; +void fn0_activate(){ fn0_go = true; }; //Activates the go−flag +volatile bool fn7_go = false; +void fn7_activate(){ fn7_go = true; }; //Activates the go−flag + +BusOut motor_out(D0, D1, D2, D3); // blue - pink - yellow - orange + +int up = 1; +int down = 0; + +int begin_step = 0; +int teller = 0; + +int motor3_direction = up; // direction + +void motor3_position() +{ + switch(begin_step) + { + case 0: motor_out = 0x1; break; // 0001 + case 1: motor_out = 0x3; break; // 0011 + case 2: motor_out = 0x2; break; // 0010 + case 3: motor_out = 0x6; break; // 0110 + case 4: motor_out = 0x4; break; // 0100 + case 5: motor_out = 0xC; break; // 1100 + case 6: motor_out = 0x8; break; // 1000 + case 7: motor_out = 0x9; break; // 1001 + + default: motor_out = 0x0; break; // 0000 + } + + if(motor3_direction==1) + { + begin_step++; + teller++; + } + else + { + begin_step--; + teller--; + } + if(begin_step>7)begin_step=0; + if(begin_step<0)begin_step=7; + pc.printf("steps = %i/n/r",teller); + + // if(teller<=-10000)//WANNEER DE FUNCTIE VAN RICHTING VERANDERD(MOET NOG STOPPEN WORDEN) + //{ + //motor3_direction=1; + // } +} + +void motor3_clean() +{ + switch(begin_step) + { + case 0: motor_out = 0x1; break; // 0001 + case 1: motor_out = 0x3; break; // 0011 + case 2: motor_out = 0x2; break; // 0010 + case 3: motor_out = 0x6; break; // 0110 + case 4: motor_out = 0x4; break; // 0100 + case 5: motor_out = 0xC; break; // 1100 + case 6: motor_out = 0x8; break; // 1000 + case 7: motor_out = 0x9; break; // 1001 + + default: motor_out = 0x0; break; // 0000 + } + + if(motor3_direction==1) + { + begin_step++; + teller++; + } + else + { + begin_step--; + teller--; + } + if(begin_step>7)begin_step=0; + if(begin_step<0)begin_step=7; + pc.printf("steps = %i/n/r",teller); + + if(teller<=-1000)//WANNEER DE FUNCTIE VAN RICHTING VERANDERD(MOET NOG STOPPEN WORDEN) + { + motor3_direction=up; + } + if(teller>=1000)//WANNEER DE FUNCTIE VAN RICHTING VERANDERD(MOET NOG STOPPEN WORDEN) + { + motor3_direction=down; + } + +} + +int main() +{ + t0.attach(&fn0_activate, 0.0014f); + //t7.attach(&fn7_activate, 0.0014f); +pc.baud(115200); + while(1) + { + if(fn0_go) + { + fn0_go = false; + motor3_position(); + } + //if(fn7_go) + //{ + //fn7_go = false; + //motor3_clean(); + //} + } +} + + + \ No newline at end of file