例子程序:
# define EN 8 //步进电机使能端,低电平有效
# define X _ DIR 5 // X 轴步进电机方向控制
# define Y _ DIR 6 // y 轴步进电机方向控制
# define Z _ DIR 7 // z 轴步进电机方向控制
# define X _ STP 2 // x 轴步进控制
# define Y _ STP 3 // y 轴步进控制
# define Z _ STP 4 // z 轴步进控制
/*
//函数: step 功能:控制步进电机方向,步数。
//参数: dir 方向控制, dirPin 对应步进电机的 DIR 引脚, stepperPin 对应步进电机的 step 引
脚, steps 步进的步数
//无返回值
*/
void step ( boolean dir , byte dirPin , byte stepperPin , int steps )
{
digitalWrite ( dirPin , dir );
delay ( 50 );
for ( int i = 0; i < steps; i ++) {
digitalWrite ( stepperPin , HIGH );
delayMicroseconds ( 800 );
digitalWrite ( stepperPin , LOW );
delayMicroseconds ( 800 );
}
}
void setup (){//将步进电机用到的 IO 管脚设置成输出
pinMode ( X _ DIR , OUTPUT ); pinMode ( X _ STP , OUTPUT );
pinMode ( Y _ DIR , OUTPUT ); pinMode ( Y _ STP , OUTPUT );
pinMode ( Z _ DIR , OUTPUT ); pinMode ( Z _ STP , OUTPUT );
pinMode ( EN , OUTPUT );
digitalWrite ( EN , LOW );
}
void loop (){
step ( false , X _ DIR , X _ STP , 200 ); // X 轴电机反转 1 圈, 200 步为一圈
step ( false , Y _ DIR , Y _ STP , 200 ); // y 轴电机反转 1 圈, 200 步为一圈
step ( false , Z _ DIR , Z _ STP , 200 ); // z 轴电机反转 1 圈, 200 步为一圈
delay ( 1000 );
step ( true , X _ DIR , X _ STP , 200 ); // X 轴电机正转 1 圈, 200 步为一圈
step ( true , Y _ DIR , Y _ STP , 200 ); // y 轴电机正转 1 圈, 200 步为一圈
step ( true , Z _ DIR , Z _ STP , 200 ); // z 轴电机正转 1 圈, 200 步为一圈
delay ( 1000 );
}
|