arduino控制28byj48步进电机
写了一个arduino控制28byj48步进电机的程序。
主要用于下面这种五线四相步进电机:
代码:
#include // 这里设置步进电机旋转一圈是多少步
#define STEPS1 100
#define STEPS2 100
#define STEPS3 100//定义限位开关引脚
//swit1为齿条触碰的限位开关
#define swit1 14
//swit2为升降平台触碰的限位开关
#define swit2 15//设置步进电机的步数和引脚(就是注意点2里面说的驱动板上IN1~IN4连接的四个数字口)。//引脚要互换,电机A
Stepper stepper1(STEPS1, 2, 3, 4, 5);//引脚要互换,电机B
Stepper stepper2(STEPS2, 6, 7, 8, 9);//引脚要互换,电机C
Stepper stepper3(STEPS3, 10, 11, 12, 13);//限位开关判断按钮,如果未触发,返回true,如果触发,返回falsebool swit1_jc(){if(digitalRead(swit1)==HIGH){delay(3);if(digitalRead(swit1)==HIGH){Serial.println("swit 1 on");return true;}else return false;}return false;
}bool swit2_jc(){if(digitalRead(swit2)==HIGH){delay(3);if(digitalRead(swit2)==HIGH){Serial.println("swit 2 on");return true;}else return false;}return false;
}void setup()
{// 初始化串口,用于调试输出信息Serial.begin(9600);for(int i=2;i<=13;i++){pinMode(i,OUTPUT);digitalWrite(i,LOW);}pinMode(swit1,INPUT);pinMode(swit2,INPUT);// 设置电机的转速:每分钟为90转stepper1.setSpeed(90);stepper2.setSpeed(90);stepper3.setSpeed(90);//齿条复位回去,首先把X放到Bwhile(!(swit2_jc())){stepper2.step(1); stepper3.step(-1);delay(10);}//步进电机A复位,C跑到最底层while(!(swit1_jc())){stepper1.step(-1); delay(10);}Serial.println("Init successful!");
}void loop()
{//电机A正转2048步,使得电机C跑到跟B一个平面Serial.println("step 1");stepper1.step(2048); delay(500);Serial.println("step 2");//电机BC同时旋转,把齿条移出来放到C上for(int i=0;i<=2048;i++){stepper2.step(-1); stepper3.step(1);delay(10);}delay(500);Serial.println("step 3");//C跑到顶层stepper1.step(2048); //在顶层停留3秒delay(3000);//把C回来stepper1.step(-2048); Serial.println("step 4");//齿条复位回去,首先把X送回Bwhile(!(swit2_jc())){stepper2.step(-1); stepper3.step(1);delay(10);}Serial.println("step 5");//步进电机A复位,回去while(!(swit1_jc())){stepper1.step(-1); delay(10);}delay(500);
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
