Arduino使用红外避障传感器

本文介绍37款传感器套件中的红外避障传感器,它的原理其实和超声波测距类似,一个是发送、接收超声波,另外一个是发送、接收红外线。红外避障传感器的实物图如下所示:
Arduino使用红外避障传感器 - gc_2299 - gc_2299的博客
它的左边包含一个红外发射装置和一个接收装置,中间有两个可调电阻用于调节测量距离和频率,后面有四个引脚,从上向下分别为[1]:
GND:接电源负极
OUT:信号输出引脚,输出1表示前方没有障碍,输出0表示有障碍
VCC:接电源正极
EN:使能引脚,是个输入引脚,输入高电平时传感器不工作,输入低电平时传感器工作,传感器中包含一个跳线,插上跳线后,EN引脚默认为低电平。
  测试代码使用的是参考文献2中的代码,代码如下:

int led = 8;
int input = 4;
int oldStat = LOW;


void setup() {
pinMode(led, OUTPUT);
pinMode(input, INPUT);
Serial.begin(9600);
}

void loop() {
int newStat = digitalRead(input);
Serial.println(newStat);
if(newStat!=oldStat){
if(newStat==HIGH){
digitalWrite(led, LOW);
}else{
digitalWrite(led, HIGH);
}
}
oldStat = newStat;
delay(200);
}

实物连接图如下:
Arduino使用红外避障传感器 - gc_2299 - gc_2299的博客
 
最后是一个演示视频:

 
PS:刚开始接线完成,然后将程序下载到Arduino上,红外避障传感器没有反应,模块上自带的led灯也不亮,后来将调节频率的可调电阻顺时针拧到头,然后将调节距离的可调电阻也顺时针拧,拧到某一位置后,模块上的灯开始闪烁,这时红外避障传感器才正常工作。卖家给的资料中没有任何的介绍,在百度中找这个型号的资料也没有多少。

参考文献
[1]http://jayarduino.blogspot.jp/2012/11/infrared-track-sensor-ir-08h.html
[2]http://www.eda360.net/forum.php?mod=viewthread&tid=349
好的,我可以为您提供相关的帮助和指导。首先,您需要准备以下材料: - Arduino主板 - 红外避障传感器模块 - 步进电机驱动模块 - 布进电机 接下来,您可以按照以下步骤进行操作: 1.将红外避障传感器模块连接到Arduino主板上。将传感器的VCC引脚连接到Arduino的5V引脚,GND引脚连接到GND引脚,信号引脚连接到任意数字引脚(如D2)。 2.将步进电机驱动模块连接到Arduino主板上。将驱动模块的VCC引脚连接到Arduino的5V引脚,GND引脚连接到GND引脚,步进电机的A+、A-、B+、B-引脚连接到驱动模块的对应引脚(如IN1、IN2、IN3、IN4)。 3.将布进电机连接到驱动模块的轴上。 4.编写Arduino程序,实现红外避障传感器检测到障碍物时,自动控制步进电机驱动布进电机避开障碍物。下面是一个简单的示例程序,您可以根据需要进行修改和优化: ``` int irPin = 2; // 红外传感器信号引脚 int motorPins[4] = {3, 4, 5, 6}; // 步进电机引脚 int motorSeq[8][4] = { {HIGH, LOW, LOW, HIGH}, {HIGH, LOW, LOW, LOW}, {HIGH, HIGH, LOW, LOW}, {LOW, HIGH, LOW, LOW}, {LOW, HIGH, HIGH, LOW}, {LOW, LOW, HIGH, LOW}, {LOW, LOW, HIGH, HIGH}, {LOW, LOW, LOW, HIGH} }; // 步进电机转动时的引脚状态 void setup() { // 初始化引脚 pinMode(irPin, INPUT); for (int i = 0; i < 4; i++) { pinMode(motorPins[i], OUTPUT); } } void loop() { // 检测红外传感器信号 if (digitalRead(irPin) == HIGH) { // 避开障碍物 for (int i = 0; i < 512; i++) { for (int j = 0; j < 8; j++) { for (int k = 0; k < 4; k++) { digitalWrite(motorPins[k], motorSeq[j][k]); } delayMicroseconds(1000); } } } else { // 前进 for (int i = 0; i < 512; i++) { for (int j = 7; j >= 0; j--) { for (int k = 0; k < 4; k++) { digitalWrite(motorPins[k], motorSeq[j][k]); } delayMicroseconds(1000); } } } } ``` 请注意,上述示例程序仅为参考,具体实现可能需要根据实际情况进行调整和优化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值