个人认为增加一个全局变量判断是不是初始化状态并稍微改动一下主函数就可以啦
int int_state = 0; //0表示初始,1表示已经工作了
void loop(){
val = digitalRead(BUTTON); //读取按钮状态并储存
//检查按钮的变化情况
if(val==0&&old_val==0&&int_state==0)
{
digitalWrite(input1,LOW);
digitalWrite(input2,LOW); //给低电平
}
else if((val == HIGH)&&(old_val == LOW))
{
state =1-state;
delay(20); //延时简单抗抖动
int_state=1;
}
old_val = val; //val下载已经是旧的了,让我们暂存一下
if (state == 1&&int_state==1)
{
//电机正转
digitalWrite(input1,HIGH); //给高电平
digitalWrite(input2,LOW); //给低电平
}
else if (state == 0&&int_state==1)
{
//电机反转
digitalWrite(input1,LOW); //给高电平
digitalWrite(input2,HIGH); //给低电平
}
else
{
digitalWrite(input1,LOW);
digitalWrite(input2,LOW); //给低电平
}