新人求助-为什么我可以红外遥控LED,但电机不行??
#include <IRremote.h>int RECV_PIN = 11;
int a1=5;
int b1=6;
int a2=7;
int b2=8;
long left = 0x807FD02F;
long forw = 0x807FC837;
long righ = 0x807FC03F;
long ting = 0x807FE01F;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(RECV_PIN, INPUT);
pinMode(a1,OUTPUT);
pinMode(b1,OUTPUT);
pinMode(a2,OUTPUT);
pinMode(b2,OUTPUT);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results))
{
if (results.value == left ){
digitalWrite(b1,HIGH);
digitalWrite(a1,LOW);
digitalWrite(b2,LOW);
digitalWrite(a2,LOW);
Serial.println("1 ");
}
if (results.value == forw ){
digitalWrite(b1,HIGH);
digitalWrite(a1,LOW);
digitalWrite(b2,HIGH);
digitalWrite(a2,LOW);
Serial.println("2 ");
}
if (results.value == righ ){
digitalWrite(b1,LOW);
digitalWrite(a1,LOW);
digitalWrite(b2,HIGH);
digitalWrite(a2,LOW);
Serial.println("3 ");
}
if (results.value == ting ){
digitalWrite(b1,LOW);
digitalWrite(a1,LOW);
digitalWrite(b2,LOW);
digitalWrite(a2,LOW);
Serial.println("4 ");
}
irrecv.resume();
}
}
我在5,6,7,8插LED,遥控完全没问题,然后把5678连接上双L9910的四个脚,怪事来了,只能遥控一次,第二次按键就不予理睬了,为什么啊,百思不得其解啊。。。 int a1=5;
int b1=6;
int a2=7;
int b2=8;
int val;
void setup()
{
Serial.begin(9600);
pinMode(a1,OUTPUT);
pinMode(b1,OUTPUT);
pinMode(a2,OUTPUT);
pinMode(b2,OUTPUT);
}
void loop()
{
val=Serial.read();
if (val == 'L'){
digitalWrite(b1,HIGH);
digitalWrite(a1,LOW);
digitalWrite(b2,LOW);
digitalWrite(a2,LOW);
Serial.println("LEFT ");
}
if (val == 'F'){
digitalWrite(b1,HIGH);
digitalWrite(a1,LOW);
digitalWrite(b2,HIGH);
digitalWrite(a2,LOW);
Serial.println("FORW ");
}
if (val == 'R'){
digitalWrite(b1,LOW);
digitalWrite(a1,LOW);
digitalWrite(b2,HIGH);
digitalWrite(a2,LOW);
Serial.println("RIGH ");
}
if (val == 'S'){
digitalWrite(b1,LOW);
digitalWrite(a1,LOW);
digitalWrite(b2,LOW);
digitalWrite(a2,LOW);
Serial.println("STOP ");
}
}
这样写,电机也控制得非常好。为什么把红外遥控的替换上去就不行了哩??
奇怪的是控制LED时非常完美的啊,为啥不能控制电机?难不成是需要加什么上拉下拉?我晕了,求指点啊。 更晕的出现了,经过测试,“left”键,摁了之后,可以摁“ting”,这样若干次都没问题。
但摁了“righ”或者"forw"后,下一个摁键就不起作用了。
而且,原来要复位UNO才可以停,现在发现把串口监视器关了,再开时,就停下了,相当于重启了一下,又可以摁键了
我已经把5678调成其他口了,也不行。。 本帖最后由 三月的石头 于 2014-12-10 22:57 编辑
是不是和控制电机的模块有关?我用的是YL-86 电机模块:
1 双 L9110S 芯片的电机驱动
2 模块供电电压:2.5-12V
3 适合的电机范围:电机工作电压 2.5v-12V 之间,最大工作电流 0.8A
4 可以同时驱动 2 个直流电机,或者 1 个 4 线 2 相式步进电机。
IA1 输入高电平,IB1 输入低电平, 【OA1 OB1】电机正转;
IA1 输入低电平,IB1 输入高电平, 【OA1 OB1】电机反转;
IA2 输入高电平,IB2 输入低电平, 【OA2 OB2】电机正转;
IA2 输入低电平,IB2 输入高电平, 【OA2 OB2】电机反转; 现在发现是其中一个直流电机的问题,两个直流电机,一个是没问题的,另一个其中一个方向动了之后,就再也不接收其他信号了。
在淘宝买的劣质电机啊。。。 首先,你买的便宜的电机,工作时可能会产生比较大的干扰,如果你使用的是非全隔离的电机驱动板,干扰可能就会影响控制板。
解决办法有两种,1,使用高品质的低干扰电机。
2,使用全隔离的电机驱动板。 本帖最后由 三月的石头 于 2014-12-11 23:30 编辑
非常感谢弘毅老师!
那您说的这两个在哪找或买? 今天又试了一下,单独给UNO和电机供电,可以解决这个问题,看来是电流干扰。
页:
[1]