我需要实现按下开关,即开关为HIGH时,步进电机旋转一圈然后停止。在按一下开关电机即为LOW 时,执行宁外一个操作。我用的时电源开关。
int x;
int buttonState;
void abc();
static int D=0;
void setup()
{
pinMode(14,OUTPUT); // 电机脉冲Step
pinMode(15,OUTPUT); // 电机旋转方向Dir
pinMode(16,INPUT);//开关状态
}
void loop()
{
abc();
}
void abc()
{
buttonState=digitalRead(16); //读取开关状态
if(buttonState==HIGH)
{
delay(50);
if(buttonState==HIGH&&D==0)//为了当开关从LOW变为HIGH的时候 电机只旋转一次 所以加了一个变量D
{
digitalWrite(15,HIGH); //电机正转一圈
for(x = 0; x < 200; x++) // Loop 200 times
{
digitalWrite(14,HIGH); // Output high
delayMicroseconds(1000); // Wait 1/2 a ms
digitalWrite(14,LOW); // Output low
delayMicroseconds(1000); // Wait 1/2 a ms
D=1;
}
delay(1000); // pause one second
}
}
if(buttonState==LOW){//当开关为LOW的时候 D变为1 为下一次旋转做准备,加了按键防抖也没用
D=0;
}
}//这个程序能正常的烧进板子,问题就是当电机启动时旋转一圈 然后就会时不时不固定的旋转的一圈,
//如果将if(buttonState==LOW){ D=0;}屏蔽 电机就只会旋转一圈 然后在怎么按开关就没反应了
|