|
本帖最后由 弘毅 于 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脚不会正常亮,我不知道是什么原因,估计是程序的问题,我不知道这个先后顺序到底闹啥样?小弟不才,求指导!!! |
|