guqi 发表于 2013-8-1 22:06:26

TTTTTTT33 发表于 2013-8-1 22:00 static/image/common/back.gif
使能端是???有些你們的用語我沒聽過~

去掉末尾else后的,按3,4按键,电机均正转;保留else部分则按4键电机正转,按3电机没反应

qptimus 发表于 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

guqi 发表于 2013-8-2 11:52:28

qptimus 发表于 2013-8-1 22:49 static/image/common/back.gif
先看看你接线对不对啊,驱动板是能够直接控制正反转的啊
按键接d2和d3,用中断,uno只有这两个脚有外部中断 ...

哥们,在编译的时候有问题,

qptimus 发表于 2013-8-2 12:34:35

guqi 发表于 2013-8-2 11:52 static/image/common/back.gif
哥们,在编译的时候有问题,

我手上没板子,不能仔细看,有什么问题?

qptimus 发表于 2013-8-2 12:36:15

guqi 发表于 2013-8-2 11:52 static/image/common/back.gif
哥们,在编译的时候有问题,

不要直接复制我的代码,有可能有些符号是全角的,会报语法错误

guqi 发表于 2013-8-2 12:47:03

qptimus 发表于 2013-8-2 12:36 static/image/common/back.gif
不要直接复制我的代码,有可能有些符号是全角的,会报语法错误

手动输了遍,该是格式问题,先谢谢 咯
页: 1 [2]
查看完整版本: 两个按键(微动不带自锁的)如控制直流电机正反转