【雕爷学编程】Arduino动手做(45) |
您所在的位置:网站首页 › 红外传感器属于io类传感器吗为什么 › 【雕爷学编程】Arduino动手做(45) |
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验四十五:红外壁障模块/避障小车避障传感器/黑白线识别 距离可调 光电开关 红外光电避障传感器模块与实验环境 一、红外光电避障传感器模块 1、模块描述 该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围 2~30cm,工作电压为3.3V-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。
实验的灵敏度比预料高一些,感应到手机,40CM处就可触动开关了。 三、程序三:红外障碍物碰撞检测的实验 1、Arduino参考开源代码 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序三:红外障碍物碰撞检测的实验 */ int LED = 13; // 使用板载 Uno LED int isObstaclePin = 7; // 这是我们的输入引脚 int isObstacle = HIGH; // 高意味着没有障碍 void setup() { pinMode(LED, OUTPUT);//设为输出 pinMode(isObstaclePin, INPUT);//设为输入 Serial.begin(9600); } void loop() { isObstacle = digitalRead(isObstaclePin); if (isObstacle == LOW) { Serial.println("障碍!!,障碍!!"); digitalWrite(LED, HIGH); //点亮LED } else { Serial.println("清除"); digitalWrite(LED, LOW); } delay(200); }2、实验串口返回情况
实验开源仿真编程(Linkboy V4.63)
(1)数字信号输出,检测到物体时输出0,没有检测到物体时输出1,2-30cm可调检测距离,抗干扰能力强; (2)3针接口(VCC,GND,OUT)可直接与MCU I/O口连接,3.3-5V供电; (3)板载工作指示灯,上电红灯亮,检测到物体绿灯亮; (4)广泛应用于智能汽车避障、黑白线跟踪、防坠落、自动剪线系统。 五、程序五:红外避障声光报警 1、Arduino参考开源代码 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序五:红外避障声光报警 */ int IR_Objects = 7; // 红外线接口 int led = 13; // LED接口 int spk = 8; // 蜂鸣器接口 int IR = 0; // 红外线初始值 void setup() { pinMode(IR_Objects, INPUT); // 定义红外线为输入端 pinMode(spk, OUTPUT); // 定义蜂鸣器为输出端 pinMode(led, OUTPUT); // 定义LED为输出端 } void loop() { IR = digitalRead(IR_Objects); // 定义IR_Objects=IR 并为读取红外线状态 if (IR == HIGH) // 假设红外线等于高电平 digitalWrite(spk, 0); // 则蜂鸣器响起 digitalWrite(led, 0); // 点亮LED delay(IR); // 延迟时间等于IR作动时间 digitalWrite(spk, 1); // 关闭蜂鸣器 digitalWrite(led, 1); // 关闭LED灯 }2、实验场景图 六、程序六:简单的红外计数器 1、Arduino参考开源代码 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 程序六:简单的红外计数器 */ int count=0; void setup() { Serial.begin (9600);// 设置串口波特率为9600 pinMode (7, INPUT); // 红外模块连接引脚D7,并设置为输入模式 } void loop() { Serial.print ("计数器= "); if (!digitalRead(7)) { count++; } Serial.println (count); //串口输出计数值 delay (500); //延时0.5秒 }2、这个程序以每0.5秒的速度来计算前面物体出现的次数,如果物体一直停留在那里的话会一直不断地计数,因此如果需要做一个好的计数器,需要再多加一些条件上的判断才行。程式的执行结果如以下的监控视窗所看到的样子:
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |