两个按键(微动不带自锁的)如控制直流电机正反转
RT:使用的是arduino uno*1块
L298N*1块
直流电机*1个
按键*2个
程序如下,按下任意一个按键后,电机总是往一个方向转,各位大大看看这是什么问题,最好能给出参考程序^^
int lock=3; //lock button3#
int unlock=4;//unlock button4#
int pinI1=5;//定义I1接口5#
int pinI2=6;//定义I2接口6#
void setup()
{
pinMode(lock,INPUT); //按钮lock端子作为输入
pinMode(unlock,INPUT); //按钮unlock端子作为输入
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
}
void loop()
{
if(digitalRead(lock)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
delay(10); //然后延时一段时间,
if(digitalRead(lock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,HIGH);//电机正转
digitalWrite(6,LOW);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
}
if(digitalRead(unlock)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
delay(10); //然后延时一段时间,
if(digitalRead(unlock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,LOW);//电机反转
digitalWrite(6,HIGH);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
}
}
在lock和nolock加個下拉電阻吧~ TTTTTTT33 发表于 2013-8-1 13:22 static/image/common/back.gif
在lock和nolock加個下拉電阻吧~
下拉加了,硬件连接是参考http://www.geek-workshop.com/thread-1054-1-1.html;只是多增加了块电驱 你是想按按钮a正转,按b反转是吧。
试试中断
qptimus 发表于 2013-8-1 13:45 static/image/common/back.gif
你是想按按钮a正转,按b反转是吧。
试试中断
恩是的,小弟初涉程序这块,大多都是在别人基础上改的,还请能详细点,谢谢 nolock和lock初始你都給LOW吧,因為程式執行有先後順序,所以會一直執行第一個if跳不出來,所以會一直正轉,你如果把程式上下對調應該換變一直反轉吧??
改成這樣試試看
int lock=3; //lock button3#
int unlock=4;//unlock button4#
int pinI1=5;//定义I1接口5#
int pinI2=6;//定义I2接口6#
void setup()
{
pinMode(lock,INPUT); //按钮lock端子作为输入
pinMode(unlock,INPUT); //按钮unlock端子作为输入
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
}
void loop()
{
if(digitalRead(lock)==LOW || digitalRead(unlock)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
delay(10); //然后延时一段时间,
if(digitalRead(lock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,HIGH);//电机正转
digitalWrite(6,LOW);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
else if(digitalRead(unlock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,LOW);//电机反转
digitalWrite(6,HIGH);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
}
TTTTTTT33 发表于 2013-8-1 13:52 static/image/common/back.gif
nolock和lock初始你都給LOW吧,因為程式執行有先後順序,所以會一直執行第一個if跳不出來,所以會一直正轉, ...
恩,确实是遇到跳不出第一个if这个问题:Q,我试试看:$ 可以了嗎??我也想知道~~!! TTTTTTT33 发表于 2013-8-1 15:03 static/image/common/back.gif
可以了嗎??我也想知道~~!!
回家试试看{:soso_e120:} TTTTTTT33 发表于 2013-8-1 15:03 static/image/common/back.gif
可以了嗎??我也想知道~~!!
刚试过,还是有问题,
按3号按键时,电机正转,按4号键时,电机没有反应;
将程序改成
int lock=3; //lock button3#
int unlock=4;//unlock button4#
int pinI1=5;//定义I1接口5#
int pinI2=6;//定义I2接口6#
void setup()
{
pinMode(lock,INPUT); //按钮lock端子作为输入
pinMode(unlock,INPUT); //按钮unlock端子作为输入
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
}
void loop()
{
if(digitalRead(lock)==LOW || digitalRead(unlock)==LOW)//由于本例检测上升沿触发,所以先检测输入是否低电平,
{
delay(10); //然后延时一段时间,
if(digitalRead(lock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,LOW);//电机反转
digitalWrite(6,HIGH);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
else if(digitalRead(unlock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,HIGH);//电机正转
digitalWrite(6,LOW);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
}
}
后,按3按键,电机正转,按4号键电机没有反应;
希望一起在看下这是什么问题?? 馬達規格是..?? ARDUINOD可以驅動嗎?? 本帖最后由 TTTTTTT33 于 2013-8-1 21:34 编辑
改這樣吧,第一個if是多餘的
int lock=3; //lock button3#
int unlock=4;//unlock button4#
int pinI1=5;//定义I1接口5#
int pinI2=6;//定义I2接口6#
void setup()
{
pinMode(lock,INPUT); //按钮lock端子作为输入
pinMode(unlock,INPUT); //按钮unlock端子作为输入
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
}
void loop()
{
if(digitalRead(lock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,LOW);//电机反转
digitalWrite(6,HIGH);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
else if(digitalRead(unlock)==HIGH) //然后检测是不是电平变为高了。是的话,就是刚好按钮按下了。
{
delay(500);
digitalWrite(5,HIGH);//电机正转
digitalWrite(6,LOW);
delay(100);
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
else
{
digitalWrite(5,LOW);//电机stop
digitalWrite(6,LOW);
}
} TTTTTTT33 发表于 2013-8-1 21:00 static/image/common/back.gif
改這樣吧,第一個if是多餘的
int lock=3; //lock button3#
还是按任意一个键只往同一个方向转,是不是要把使能端也加进去?呢 TTTTTTT33 发表于 2013-8-1 20:56 static/image/common/back.gif
馬達規格是..?? ARDUINOD可以驅動嗎??
普通直流电机,用红外可以控制正反转 使能端是???有些你們的用語我沒聽過~
页:
[1]
2