本文我们用声音传感器来制作一个简易的声控灯。
最终效果
视频演示:
http://v.youku.com/v_show/id_XOTYyMjQ4MTUy.html?spm=a2hzp.8253869.0.0
硬件
- 面包板
- 杜邦线
- LED发光二极管一只
- 声音传感器一只
原理说明
声音传感器有3根引脚,电源正极,电源负极,数据OUT,分别接到树莓派的VCC,GND和任意一个GPIO口上(输入模式)。
当声音传感器检测到有声音就会从OUT口输出低电平,注意低电平并不会持续,声音一旦结束传感器也会马上停止输出低电平。
另外,在传感器上有一个电位器,上面有一个十字形的旋钮,用小螺丝刀或小刀可以旋转十字,调整声音敏感度。(触发音量的阈值)
LED的短针负极脸上GND,长针连上另一个GPIO口(输出模式),当树莓派接收到传感器发出的低电平信号时,输出高/低电平,打开/关闭LED灯。
硬件连接
- 声音传感器电源正极 - 树莓派的VCC
- 声音传感器电源负极 - 树莓派的GND
- 声音传感器数据OUT - 树莓派的GPIO4
- LED长针 - 树莓派的GPIO17
- LED短针 - 树莓派的GND
代码(Python)
#!/usr/bin/env python
# encoding: utf-8
import RPi.GPIO
import time
# LED正极连接的GPIO口
LED = 17
# 声音感应器OUT口连接的GPIO口
SENSOR = 4
# 当前LED灯的开关状态
flg = False
RPi.GPIO.setmode(RPi.GPIO.BCM)
# 指定GPIO4(声音感应器的OUT口连接的GPIO口)的模式为输入模式
# 默认拉高到高电平,低电平表示OUT口有输出
RPi.GPIO.setup(SENSOR, RPi.GPIO.IN, pull_up_down=RPi.GPIO.PUD_UP)
# 指定GPIO17(LED长针连接的GPIO针脚)的模式为输出模式
RPi.GPIO.setup(LED, RPi.GPIO.OUT)
try:
while True:
# 检测声音感应器是否输出低电平,若是低电平,表示声音被检测到,点亮或关闭LED灯
if (RPi.GPIO.input(SENSOR) == 0):
flg = not flg
RPi.GPIO.output(LED, flg)
# 稍微延时一会,避免刚点亮就熄灭,或者刚熄灭就点亮。
time.sleep(0.5)
except KeyboardInterrupt:
pass
RPi.GPIO.cleanup()
资源下载
系列文章
- 树莓派GPIO入门01-使用GPIO接口控制发光二极管闪烁
- 树莓派GPIO入门02-GPIO控制LED亮度,制作呼吸灯效果
- 树莓派GPIO入门03-GPIO控制RGB彩色LED灯
- 树莓派GPIO入门04-使用按钮
- 树莓派GPIO入门05-驱动数码管显示数字
- 树莓派GPIO入门06-跟数字湿温度计DHT11通信
- 树莓派GPIO入门07-利用声音传感器制作声控灯【当前文章】
- 树莓派GPIO入门08-使用74HC595芯片驱动数码管(一)
- 树莓派GPIO入门08-使用74HC595芯片驱动数码管(二)
- 树莓派GPIO入门09-使用MAX7219芯片驱动8位数码管
- 树莓派GPIO入门10-使用TLC5940芯片输出多路PWM
- 树莓派GPIO入门11-驱动液晶屏幕(一)
- 树莓派GPIO入门11-驱动液晶屏幕(二)