一起玩转树莓派(10)——触控激光灯

原创
2021/08/12 22:36
阅读数 115

一起玩转树莓派(10)——触控激光灯

      如果你已经阅读并且练习了本系列博客前面实验,那么我相信你已经能够使用树莓派做很多有趣的事情。本博客将要介绍的内容就是一个例子。

      你在小时候有玩过激光灯么?其模样类似于一个小型的手电筒,只是其光线十分集中,亮度强,并且通过不同的滤片,可以在墙上或地上打射出不同的图案,十分有趣。本实验,我们将找回童趣,使用触摸传感器和激光灯传感器来实现一个简易的触控激光灯。

      本实验的原理非常简单,无非是通过树莓派的GPIO引脚来读取触摸传感器的数据,之后将其用于操作激光传感器的开关控制上。本次实验使用的触摸传感器如下图所示:

此触摸传感器有3个引脚,除了正负极引脚外,最外侧的引脚用来输出信号,当手指触摸传感器上的圆形区域时,其信号引脚会输出高电平,否则输出低电平。对于这种类型的传感器,我们可以直接使用GPIO的下拉电阻功能,将其默认设置为低电平,轮询等待高电平信号。

      首先,先来体验下触摸传感器的应用,连线如下:

触摸传感器 树莓派
GND GND
VCC 3.3V
SIG BCM编码17的引脚(对应物理引脚为11)

编写如下测试代码:

#coding:utf-8

import RPi.GPIO as GPIO
import time

touchPin = 11

GPIO.setmode(GPIO.BOARD)
GPIO.setup(touchPin,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

while True:
    swi = GPIO.input(touchPin)
    print(swi)
    time.sleep(0.5)

在树莓派上运行上面代码。通过触摸传感器,可以看到控制台上打印出对应的电平信息。

      下面,我们再来看一下本次实验所使用的激光模块,如下图所示:

此激光模块也有3个引脚,其中“-”号一侧的引脚接地,中间引脚接3.3V电压,“S”一侧引脚接GPIO信号引脚。当S信号引脚输入高电平时,激光模块被激活发射激光,当S信号引脚输入低电平时,激光发射关闭。激光模块的接线如下:

激光模块 树莓派
- GND
--- ---
中间引脚 3.3V
--- ---
S BCM编码18的引脚(对应物理引脚为12)
--- ---

 修改上面的示例代码如下:

#coding:utf-8

import RPi.GPIO as GPIO
import time

# 触摸传感器的信号引脚
touchPin = 11
# 激光模块的信号引脚
lightPin = 12

# 设置采用物理编码
GPIO.setmode(GPIO.BOARD)
# 对触摸传感器的引脚进行初始化
GPIO.setup(touchPin,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# 对激光传感器的引脚进行初始化
GPIO.setup(lightPin,GPIO.OUT)

while True:
    swi = GPIO.input(touchPin)
    # 当触摸发生时,触摸传感器的引脚输入高电平 
    if swi == 1:
        # 向激光模块的引脚输出高电平,发射激光
        GPIO.output(lightPin, GPIO.HIGH)
    else:
        # 与上面相反,关闭激光
        GPIO.output(lightPin, GPIO.LOW)
    time.sleep(0.5)

在树莓派上运行上面代码,体验下这个自制的激光灯玩具吧!

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部