光敏电阻控制led亮度程序_利用光敏电阻加声音传感器制作声控灯

b9105af61fbe324accb40e2d19abe8f4.png

视频演示

561df44649dac094ef287f51de9d5fab.png
https://www.zhihu.com/video/1145029294962020352

光敏电阻传感器模块

a77c041365ce246e59d7d6999f1d9cd6.png

模块参数:

工作电压:3.3V-5V

光敏电阻模块对环境光线敏感,一般用来检测周围环境的光线的亮度。模块在环境光线亮度达不到设定阈值时,DO端输出高电平,当外界环境光线亮度超过设定阈值时,DO端输出低电平。

线路连接(*连接线路时树莓派务必断电操作)

403757c6ebac09c5e24ebd6a0520a0f1.png

根据声控灯教程增加光敏电阻模块(查阅上一篇教程),模块VCC端接树莓派2号(5V)引脚,GND端接25号引脚,DO(OUT)端接18号引脚。

编写程序light.py(只用到光敏模块)

import RPi.GPIO as GPIO

import time

#初始化

def init():

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

GPIO.setup(18,http://GPIO.IN)

GPIO.setup(40,GPIO.OUT)

#点亮led检测是否工作

GPIO.output(40, 1)

time.sleep(0.1)

pass

#灯函数(这里数值控制灯亮的时间)

def beep():

while GPIO.input(18):

GPIO.output(40,GPIO.HIGH)

time.sleep(3)

GPIO.output(40,GPIO.LOW)

time.sleep(0.1)

#感应器侦测函数

def detct():

#因为是仅仅试验,所以只让它循环运行100次

for i in range(1,101):

#如果感应器针脚输出为True,则打印天黑了。

if GPIO.input(18) == True:

print('天黑了!')

beep()

#否则将LED针脚电平设置为LOW

else:

GPIO.output(40,GPIO.LOW)

print('天亮了!')

time.sleep(2)

time.sleep(3)

init()

detct()

#脚本运行完毕执行清理工作

GPIO.cleanup()

运行程序,开始led灯将点亮0.1秒后熄灭说明开始工作,如果光线充足,led熄灭屏幕上打印出“天亮了”,遮住光敏模块后led灯点亮并打印出“天黑了”。

增加声控:编写程序 soundandlight.py

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

LED = 40 # LED正极连接的GPIO

LIGHT = 18 # 光感

SOUND = 12 # 声感

flg = False # 当前LED灯的开关状?

# 指定GPIO4(声音感应器的OUT口连接的GPIO口)的模式为输入模式

# 默认拉高到高电平,低电平表示OUT口有输出

GPIO.setup(LIGHT, GPIO.IN, pull_up_down=GPIO.PUD_UP)

GPIO.setup(SOUND , GPIO.IN, pull_up_down=GPIO.PUD_UP)

# 指定GPIO40(LED长针连接的GPIO针脚)的模式为输出模

GPIO.setup(LED, GPIO.OUT)

GPIO.output(LED, 1)

time.sleep(0.1)

pass

# 当内部作用域想修改外部作用域的变量时,用到global和nonlocal关键字

num = 0

def callback(channel):

global num

#检测声音模块是否输出低电平,如果是表示声音被检测到,点亮或关闭LED

print(channel, GPIO.input(LIGHT), GPIO.input(SOUND ))

num += 1

print(num)

#如果没有灯光,触发点亮led

if (GPIO.input(LIGHT) == 1):

GPIO.output(LED, 1)

#稍微延时一会,避免刚点亮就熄灭,或者刚熄灭就点亮

#这里数值控制灯亮的时间

time.sleep(3)

GPIO.output(LED, 0)

# 监听光感

GPIO.add_event_detectLIGHT, GPIO.RISING, callback)

# 监听声控

GPIO.add_event_detect(SOUND ,GPIO.RISING,callback,bouncetime=200)

while True:

time.sleep(10)

GPIO.cleanup()

运行程序,开始led灯将点亮0.1秒后熄灭说明开始工作,如果光线充足LED灯熄灭;遮住光敏模块后,发出声音被声音传感器检测到后LED灯点亮3秒。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个很有趣的项目。首先,你需要准备以下材料: 1. 声音传感器模块 2. 光敏电阻模块 3. LED 4. 面包板 5. 杜邦线 6. 电位器 7. 电源模块 接下来,我们需要按照以下步骤进行操作: 1. 首先将声音传感器模块和光敏电阻模块连接到面包板上,使用杜邦线进行连接。 2. 将LED连接到面包板上,使用杜邦线连接。 3. 将电源模块连接到面包板上,使用杜邦线连接。 4. 调节电位器,使LED亮度适中。 5. 编写代码,实现声音传感器光敏电阻的读取,并将其转换成LED亮度控制。 下面是代码示例: ```python # 导入所需模块 import RPi.GPIO as GPIO import time # 定义声音传感器光敏电阻的引脚 sound_pin = 16 light_pin = 18 # 初始化GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(sound_pin, GPIO.IN) GPIO.setup(light_pin, GPIO.OUT) # 循环读取声音传感器光敏电阻的值,并将其转换成LED亮度控制 while True: sound = GPIO.input(sound_pin) light = GPIO.input(light_pin) if sound == 1: light = light + 10 else: light = light - 10 if light <= 0: light = 0 if light >= 100: light = 100 GPIO.output(light_pin, light) time.sleep(0.1) ``` 这样,你就可以利用声音传感器控制LED亮度了。当声音传感器检测到声音时,LED会变亮;当声音传感器没有检测到声音时,LED会变暗。同时,光敏电阻模块可以自动调节LED亮度,使LED始终保持在适宜的亮度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值