首页资讯科技 多途径实现Arduino“红外感应灯”

多途径实现Arduino“红外感应灯”

牟晓东在Arduino开源硬件编程中,常规实现方法是在Arduino IDE环境中进行C语言(包括C++)式的代码编程,代码精简、效率比较高。中小学生通常是从图形化编程入手,通过将高度集成编译好的“积木”式模块进行组合来实现同样的编程效果,…

牟东

在Arduino开源硬件编程中,常规的方法是在Arduino IDE环境下用C语言(包括C++)编写代码,简单高效。中小学生通常从图形化编程开始,通过结合高度集成和编译的“积木”模块,如Mind+、Mixly等,达到同样的编程效果。另外,我们可以借助PinPong库模块用Python编写代码,也可以让Arduino控制各种外设,实现非常丰富的功能。以“红外感应灯”为例——当有物体靠近时(默认值为2 ~ 30cm),Arduino控制LED灯发光;否则,LED灯保持熄灭。1.实验设备和电路连接

实验器材:Arduino UNO主板一个,红外线传感器一个,红色LED灯一支,三色公对母杜邦线各一根。首先将LED灯长腿(正极)插入13号引脚,短腿(负极)插入与之相邻的GND接地引脚;接着将三根杜邦线一端与红外传感器相连,红色线将VCC引脚与Arduino的5V引脚连接,黑色线负责接地(两端均连接GND),黄色线将红外传感器的OUT信号输出端与Arduino的7号引脚相连;最后,通过数据线将Arduino与计算机USB接口连接,准备开始编程(如图1)。

设备:Arduino UNO主板一块,红外传感器一块,红色LED灯一块,三色公母杜邦线一块。首先,将LED灯的长腿(阳极)插入13号针脚,短腿(阴极)插入相邻的GND接地针脚;然后,三根杜棒线的一端接红外传感器,红线连接VCC管脚与Arduino的5V管脚,黑线负责接地(两端接GND),黄线连接红外传感器的OUT信号输出端与Arduino的7号管脚;最后通过数据线将Arduino与电脑的USB接口连接,准备开始编程(如图1)。

2.常规Arduino IDE代码编程实现“红外感应灯”

首先,用语句“int led = 13”在Arduino IDE中定义并分配两个变量红色LED灯插入第13针,说明“int irSensorPin = 7;”插入7号插脚的红外传感器;然后,在setup()函数中写两条语句:“pinMode(led,OUTPUT);”的作用是声明LED灯的引脚(13号)为输出模式,以及“pinMode(irSensorPin,INPUT);”的功能是将红外传感器引脚(7号)声明为输入模式。

最后,在loop()函数中写入一个“if…else…”选择结构,其中的判断条件是“digitalRead(irSensorPin) == HIGH”,即判断从红外传感器中读取的数字信号是否为HIGH高电平;高电平是对应“没有物体进入检测范围”的情况,因此后面要写一个“digitalWrite(led,LOW);”语句,控制LED灯处于低电平的熄灭状态;如果条件不成立,说明红外传感器检测到“有物体进入”,则在else后面写一个“digitalWrite(led,HIGH);”语句,控制LED灯处于高电平的发光状态(如图2)。

最后在loop()函数中写一个“if…else…”选择结构,其中判断条件为“digitalRead(irSensorPin) == HIGH”,即判断从红外传感器读取的数字信号是否为HIGH;高电平对应的是“没有物体进入检测范围”的情况,所以一个“digitalWrite(led,低);”控制LED灯处于低电平关闭状态的语句;如果条件不成立,说明红外传感器检测到“有物体进入”,那么在else后面写一个“digitalWrite(led,HIGH)”。语句,控制LED灯处于高位点亮状态(如图2)。

将程序编译并上传,对红外感应灯进行检测:当没有物体靠近时,LED灯熄灭;而当有物体进入检测范围时,LED灯开始发光(如图3),直到物体移出后又熄灭。

编译上传程序检测红外感应灯:当附近没有物体时,LED灯熄灭;当有物体进入检测范围时,LED灯开始发光(如图3所示),物体移开后熄灭。

3.Python代码编程实现“红外感应灯”

借助PinPong第三方库模块,我们可以非常方便地用Python编写Arduino代码。首先你需要在Python的脚本安装目录下安装PinPong库模块(例如:C:\ users \ zyyz-bj \ appdata \ local \ programs \ Python

on\Python38\Scripts)中按住Shift键的同时,在空白处点击右键并选择“在此处打开命令窗口”;接着在弹出的CMD窗口中输入命令“pip install pinpong”,回车后即可开始安装,成功后会显示“Successfully installed”的提示信息(如图4)。

On \ python38 \ scripts),按住Shift键的同时,在空白色处点击右键,选择“在此打开命令窗口”;然后在弹出的CMD窗口中输入命令“pip install pinpong”,然后按enter键开始安装。成功后会显示提示信息“安装成功”(如图4)。

首先,进入Python空闲编程环境后,新建一个Python文件,导入时间和PinPong库模块:“导入时间”和“从pinpong.board导入board,pin”;然后,声明“董事会(“uno”)。begin()”用于初始化Arduino uno的板卡类型,端口号(如COM9)会被自动识别。然后,建立两个变量,led和irSensor。语句“led = Pin(Pin。D13,引脚。OUT)”用于将连接到第13个管脚的LED设置为信号输出端,语句“irSensor = Pin(Pin。D7,引脚。IN)”用于将连接到第7个数字引脚的红外传感器设置为信号输入端子。

最后在“while True:”的循环结构中建立变量Sensor_Value,赋值为“irSensor.read_digital()”,用来读取红外传感器监测到的数字信号。然后建立“if…else…”选择结构,判断变量Sensor_Value的值是否等于1。如果满足条件,说明没有检测到物体,那么执行语句“led.write_digital(0)”,将低电平0写入led灯的第13脚,即LED灯保持关闭状态;否则,通过语句“LED.write_digital(1)”向第13个引脚写入高电平1,控制LED灯发光。“time.sleep(0.1)”语句的作用是控制每个循环操作0.1秒的延迟,防止系统资源过度消耗导致“崩溃”。

保存程序后,按功能键F5运行程序,Arduino红外感应灯开始“工作”:当有物体靠近时,点亮;反之,走出去。4.思维+图形化编程实现“红外感应灯”

运行Mind+进入图形化编程界面相对困难。您可以直接拖动和组合“构建块”语句:

首先在左侧通过点击“扩展”项添加“主控板”下的“Arduino Uno”,返回后在“循环执行”中建立一个“如果…那么执行…否则…”选择结构,同样是对插接在7号引脚的红外传感器进行数字信号读取;如果值为1,说明没有物体进入有效检测范围,则控制插接在13号引脚的LED灯熄灭——“输出为低电平”;反之,则“输出为高电平”,即控制LED灯发光(如图5)。

首先通过点击左侧的“展开”在“主控板”下添加“Arduino Uno”,然后返回后在“循环执行”中设置一个“如果…则执行…否则…”的选择结构,同样用来读取插在7号针上的红外传感器的数字信号;如果值为1,说明没有物体进入有效探测范围,那么控制插入13号管脚的LED熄灭——“输出为低电平”;否则“输出为高电平”,即控制LED灯发光(如图5)。

程序编写完成后,点击“上传到设备”项。当出现“上传成功”的提示时,Arduino红外感应灯可以根据对物体的监测自动切换“关闭和点亮”,与之前使用Arduino IDE和Python代码编程达到的效果完全一致。你不妨试一试。

本文来自网络,不代表管理窝立场。转载请注明出处: https://www.guanliwo.com/a/zx/26488.html
上一篇成语接龙
下一篇 奥运会来了,精彩赛事这样看(中)
管理窝

作者: 管理窝

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部