求大家帮忙看一段easydriver步进控制的程序
需要功能:当按键BUTTON_ZERO 6为按下时,步进电机运行,直到零点开关为1,怎么我写的程序有问题吗?怎么多不执行。。
#define DIR_PIN 3 //定义脚2为方向控制,名称为DIR_PIN
#define STEP_PIN 5 //定义脚3为步进控制,名称为STEP_PIN
#define BUTTON_ZERO 6//定义脚6为回零按钮信号,名称为ZERO_PIN 9
#define ZERO_PIN 9 //定义脚5为零点信号,名称为ZERO_PIN 9
void setup() {
pinMode(DIR_PIN,OUTPUT);
pinMode(STEP_PIN,OUTPUT);
pinMode(BUTTON_ZERO,INPUT);
pinMode(ZERO_PIN,INPUT);
}
void loop(){
if(BUTTON_ZERO==HIGH)
{
do{
zero(0.5);
}
while(ZERO_PIN==HIGH);
}
}
void zero(float speed)//速度为0.01到1的任意数,最快速度为1
{
digitalWrite(DIR_PIN,1); //
float usDelay = (1/speed) * 70; //(定义等待时间为(1/speed) * 70实数)
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
} void loop()
{
zero(0.5);
}
如果执行和一段电机是运行的。 为毛这个程序也没有加速度呀???
#define DIR_PIN 3 //定义脚2为方向控制,名称为DIR_PIN
#define STEP_PIN 5 //定义脚3为步进控制,名称为STEP_PIN
#define BUTTON_ZERO 6//定义脚6为回零按钮信号,名称为ZERO_PIN 9
#define ZERO_PIN 9 //定义脚5为零点信号,名称为ZERO_PIN 9
int speed=0;
void setup() {
pinMode(DIR_PIN,OUTPUT);
pinMode(STEP_PIN,OUTPUT);
pinMode(BUTTON_ZERO,INPUT);
pinMode(ZERO_PIN,INPUT);
}
void loop()
{
zero(0.01,0.5);
}
void zero(float speedMIN,float speedMAX)//速度为0.01到1的任意数,最快速度为1
{
digitalWrite(DIR_PIN,1); //
speed=speedMIN+0.01;
if(speed>=speedMAX)
{
speed=speedMAX;
}
float usDelay = (1/speed) * 70; //(定义等待时间为(1/speed) * 70实数)
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
想要加速度一般都用库。。。或者自己写加速度。。。对于低速的雕刻机来说。。。加速度不重要。。。保证每一个脉冲都被执行了不丢步才重要。。。
关于这段程序。。。同学你的开关加上拉电阻了么…… 没有加呀,省事。不过估计加了也没有毛用吧。不可能给了5V不是5V吧。 有人帮我解答一下吗?》谢谢。 void setup() {
pinMode(DIR_PIN,OUTPUT);
pinMode(STEP_PIN,OUTPUT);
pinMode(BUTTON_ZERO,INPUT);
pinMode(ZERO_PIN,INPUT);
}
没有串口通信速率,你的程序编译不过吧
页:
[1]