利用声音传感器控制led灯功能_利用光敏电阻加声音传感器制作声控灯
視頻演示https://www.zhihu.com/video/1145029294962020352
光敏電阻傳感器模塊
模塊參數(shù):
工作電壓:3.3V-5V
光敏電阻模塊對環(huán)境光線敏感,一般用來檢測周圍環(huán)境的光線的亮度。模塊在環(huán)境光線亮度達(dá)不到設(shè)定閾值時(shí),DO端輸出高電平,當(dāng)外界環(huán)境光線亮度超過設(shè)定閾值時(shí),DO端輸出低電平。
線路連接(*連接線路時(shí)樹莓派務(wù)必?cái)嚯姴僮?
根據(jù)聲控?zé)艚坛淘黾庸饷綦娮枘K(查閱上一篇教程),模塊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)
#點(diǎn)亮led檢測是否工作
GPIO.output(40, 1)
time.sleep(0.1)
pass
#燈函數(shù)(這里數(shù)值控制燈亮的時(shí)間)
def beep():
while GPIO.input(18):
GPIO.output(40,GPIO.HIGH)
time.sleep(3)
GPIO.output(40,GPIO.LOW)
time.sleep(0.1)
#感應(yīng)器偵測函數(shù)
def detct():
#因?yàn)槭莾H僅試驗(yàn),所以只讓它循環(huán)運(yùn)行100次
for i in range(1,101):
#如果感應(yīng)器針腳輸出為True,則打印天黑了。
if GPIO.input(18) == True:
print('天黑了!')
beep()
#否則將LED針腳電平設(shè)置為LOW
else:
GPIO.output(40,GPIO.LOW)
print('天亮了!')
time.sleep(2)
time.sleep(3)
init()
detct()
#腳本運(yùn)行完畢執(zhí)行清理工作
GPIO.cleanup()
運(yùn)行程序,開始led燈將點(diǎn)亮0.1秒后熄滅說明開始工作,如果光線充足,led熄滅屏幕上打印出“天亮了”,遮住光敏模塊后led燈點(diǎn)亮并打印出“天黑了”。
增加聲控:編寫程序 soundandlight.py
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
LED = 40 # LED正極連接的GPIO
LIGHT = 18 # 光感
SOUND = 12 # 聲感
flg = False # 當(dāng)前LED燈的開關(guān)狀?
# 指定GPIO4(聲音感應(yīng)器的OUT口連接的GPIO口)的模式為輸入模式
# 默認(rèn)拉高到高電平,低電平表示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
# 當(dāng)內(nèi)部作用域想修改外部作用域的變量時(shí),用到global和nonlocal關(guān)鍵字
num = 0
def callback(channel):
global num
#檢測聲音模塊是否輸出低電平,如果是表示聲音被檢測到,點(diǎn)亮或關(guān)閉LED
print(channel, GPIO.input(LIGHT), GPIO.input(SOUND ))
num += 1
print(num)
#如果沒有燈光,觸發(fā)點(diǎn)亮led
if (GPIO.input(LIGHT) == 1):
GPIO.output(LED, 1)
#稍微延時(shí)一會,避免剛點(diǎn)亮就熄滅,或者剛熄滅就點(diǎn)亮
#這里數(shù)值控制燈亮的時(shí)間
time.sleep(3)
GPIO.output(LED, 0)
# 監(jiān)聽光感
GPIO.add_event_detectLIGHT, GPIO.RISING, callback)
# 監(jiān)聽聲控
GPIO.add_event_detect(SOUND ,GPIO.RISING,callback,bouncetime=200)
while True:
time.sleep(10)
GPIO.cleanup()
運(yùn)行程序,開始led燈將點(diǎn)亮0.1秒后熄滅說明開始工作,如果光線充足LED燈熄滅;遮住光敏模塊后,發(fā)出聲音被聲音傳感器檢測到后LED燈點(diǎn)亮3秒。
總結(jié)
以上是生活随笔為你收集整理的利用声音传感器控制led灯功能_利用光敏电阻加声音传感器制作声控灯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 群组
- 下一篇: 地下城与勇士(DNF)天空之城副本(龙人