|
|
发表于 2013-8-1 22:49:27
|
显示全部楼层
本帖最后由 qptimus 于 2013-8-1 23:03 编辑
先看看你接线对不对啊,驱动板是能够直接控制正反转的啊
按键接d2和d3,用中断,uno只有这两个脚有外部中断
int pinI1=5;//定义I1接口5#
int pinI2=6;//定义I2接口6#
volatile int state = LOW;
volatile int DIR = LOW;
void setup()
{
attachInterrupt(0, function0,CHANGE);//开关是低电平触发:LOW,高电平触发:HIGH,上升沿触发:RISING,下降沿触发:FALLING,跳变触发:CHANGE
attachInterrupt(1, function1,CHANGE);
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
}
void loop()
{
if(state == HIGH && DIR == HIGH)
{
pinI1=HIGH;
pinI2=LOW;
}
else if(state == HIGH && DIR == LOW)
{
pinI1=LOW;
pinI2=HIGH;
}
else
{
pinI1=LOW;
pinI2=LOW;
}
}
void function0()
{
state = !state;//按键按下或松开时状态改变,按下state变为high,松开为low
DIR=LOW;//电机旋转的方向
}
void function1()
{
state = !state;
DIR=HIGH;
}
这段代码可能不适合两个按键同时按下的情况,如果要考虑这种情况,需要为每个按键设置单独的state |
|