光敏电阻控制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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值