我玩出来的奇葩问题~
本帖最后由 弘毅 于 2012-12-19 17:21 编辑#include <IRremote.h>// 使用IRRemote函数库
const int irReceiverPin = 2;// 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600); // 开启串口,波特率为9600
irrecv.enableIRIn(); // 启动红外解码
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
}
void loop()
{
if (irrecv.decode(&results)) { // 解码成功,把数据放入results变量中
// 把数据输入到串口
Serial.print("irCode: ");
Serial.print(results.value, HEX); // 显示红外编码
Serial.print(",bits: ");
Serial.println(results.bits); // 显示红外编码位数
if(results.value==0xFFE01F)
{
digitalWrite(10,HIGH);
delay(50);
digitalWrite(10,LOW);
}
else if(results.value==0xFFA857)
{
digitalWrite(11,HIGH);
delay(50);
digitalWrite(11,LOW);
}
irrecv.resume(); // 继续等待接收下一组信号
}
}
这个是一个小小红外接收的程序,看出来了10脚还有11脚我用LED来反馈接收情况~先注意这里!
接下来是一个双超声波的程序:
const int TrigPin = 2;
const int EchoPin = 3;
const int Tri = 4;
const int Ech = 5;
float cm1;
float cm2;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(Tri, OUTPUT);
pinMode(Ech, INPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
int i;
for(i=1;i<=2;i++)
{
if(i=1)
{
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm1 = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm1 = (int(cm1 * 100.0)) / 100.0; //保留两位小数
Serial.print(cm1);
Serial.print("cm1");
Serial.println();
delay(10);
if(cm1<5)
{
digitalWrite(7, HIGH);
}
else
{
digitalWrite(7, LOW);
}
}
delay(50);
if(i=2)
{
digitalWrite(Tri, LOW); //低高低电平发一个短时间脉冲去Tri
delayMicroseconds(2);
digitalWrite(Tri, HIGH);
delayMicroseconds(10);
digitalWrite(Tri, LOW);
cm2 = pulseIn(Ech, HIGH) / 58.0; //将回波时间换算成cm
cm2 = (int(cm2* 100.0)) / 100.0; //保留两位小数
Serial.print(cm2);
Serial.print("cm2");
Serial.println();
delay(10);
if(cm2<5)
{
digitalWrite(8, HIGH);
}
else
{
digitalWrite(8, LOW);
}
}
}
}
注意这里的7脚和8脚,和红外一起看的话,就是满足条件让led亮而已,当电路接完之后,串口打开能看到超声波和红外接收的值,灯呢?好吧,灯没坏,重点是第一个灯会正常亮,也就是10脚或7脚,他们之后的11脚或8脚不会正常亮,我不知道是什么原因,估计是程序的问题,我不知道这个先后顺序到底闹啥样?小弟不才,求指导!!! 看着程序没有问题诶 应该把串口的log 贴出来就好了~~ phoenixshen 发表于 2012-12-19 17:16 static/image/common/back.gif
看着程序没有问题诶 应该把串口的log 贴出来就好了~~
把串口的log 贴出来????什么意思? 本帖最后由 Ansifa 于 2012-12-19 18:26 编辑
第一个去掉else试试、延时时间设500毫秒试试。第二个if(i==1)不是if(i=1) 貌似会干扰11?
页:
[1]