将蜂鸣器,光敏,显示屏的代码拼接在一起,当光线暗了的时候蜂鸣器会叫,并且显示屏会显示黑暗,当光线亮了之后显示光明
以下是树莓派的 Python 代码,实现了将蜂鸣器、光敏和显示屏的代码拼接在一起,当光线暗了的时候蜂鸣器会发出声音,并且显示屏会显示黑暗,当光线亮了之后显示光明。
注意:在运行代码之前需要安装 gpiozero、smbus 和 Adafruit_Python_SSD1306 库。
from gpiozero import LED, LightSensor
from time import sleep
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
# 定义 GPIO 引脚
buzzer = LED(17)
light_sensor = LightSensor(18)
# 定义显示屏参数
RST = None # RST 引脚未使用,设置为 None
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
# 初始化显示屏
disp.begin()
disp.clear()
disp.display()
# 显示屏数据
width = disp.width
height = disp.height
image = Image.new('1', (width, height))
draw = ImageDraw.Draw(image)
font = ImageFont.load_default()
# 主循环
while True:
# 读取光线强度
light = light_sensor.value
# 显示光线强度
draw.rectangle((0, 0, width, height), outline=0, fill=0)
draw.text((2, 2), 'Light: {0:.2f}'.format(light), font=font, fill=255)
disp.image(image)
disp.display()
# 如果光线暗了,蜂鸣器响起并显示黑暗
if light < 0.2:
buzzer.on()
draw.text((2, 20), 'Dark', font=font, fill=255)
disp.image(image)
disp.display()
# 如果光线亮了,蜂鸣器停止响起并显示光明
else:
buzzer.off()
draw.text((2, 20), 'Bright', font=font, fill=255)
disp.image(image)
disp.display()
# 休眠一段时间
sleep(1)
树莓派呼吸灯python代码
点灯
from machine import Pin
import time
LED = Pin(25,Pin.OUT)
if __name__ == '__main__':
while True:
LED.value(0)
time.sleep(1)
LED.value(1)
time.sleep(1)
呼吸灯
from machine import Pin, PWM
from time import sleep
pwm = PWM(Pin(25)) #Pico LED Pin
pwm.freq(1000) #设置PWM的频率
while True: #循环
for duty in range(65025):
pwm.duty_u16(duty)
sleep(0.0001) #延迟100us
for duty in range(65025, 0, -1):
pwm.duty_u16(duty)
sleep(0.0001)
将蜂鸣器、光敏电阻和OLED显示屏的代码拼接在一起实现了您的需求:
import RPi.GPIO as GPIO
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
# 初始化GPIO口
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# 设置蜂鸣器GPIO口
buzz_pin = 17
GPIO.setup(buzz_pin, GPIO.OUT)
# 设置光敏电阻GPIO口
ldr_pin = 18
GPIO.setup(ldr_pin, GPIO.IN)
# 设置OLED显示器相关参数
RST = None
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))
disp.begin()
disp.clear()
disp.display()
width = disp.width
height = disp.height
image = Image.new('1', (width, height))
draw = ImageDraw.Draw(image)
draw.rectangle((0,0,width,height), outline=0, fill=0)
font = ImageFont.load_default()
def buzzer_on():
"""
开启蜂鸣器
"""
GPIO.output(buzz_pin, GPIO.HIGH)
def buzzer_off():
"""
关闭蜂鸣器
"""
GPIO.output(buzz_pin, GPIO.LOW)
def check_light():
"""
检测光线亮度
"""
return GPIO.input(ldr_pin)
def display_brightness(is_dark):
"""
显示屏显示亮度信息
"""
draw.rectangle((0,0,width,height), outline=0, fill=0)
if is_dark:
draw.text((25,10), 'Dark!', font=font, fill=255)
else:
draw.text((25,10), 'Bright!', font=font, fill=255)
disp.image(image)
disp.display()
try:
while True:
if check_light():
buzzer_off()
display_brightness(False)
else:
buzzer_on()
display_brightness(True)
time.sleep(0.5)
except KeyboardInterrupt:
GPIO.cleanup()
代码实现了蜂鸣器、光敏电阻和OLED显示屏的基本功能,其中在 check_light() 函数中检测光线亮度,如果亮度较低则开启蜂鸣器并在显示屏上显示黑暗,否则关闭蜂鸣器并显示光明。代码中使用 time.sleep(0.5) 实现了每隔 0.5 秒检测一次光线亮度。
引用chatGPT作答,以下是一个的Python代码,用于将树莓派上的蜂鸣器,光敏传感器和显示屏组合在一起,以便在光线变暗时触发蜂鸣器,并在显示屏上显示“黑暗”,在光线变亮时显示“光明”。
import RPi.GPIO as GPIO
import time
from gpiozero import LightSensor
from luma.core.interface.serial import i2c
from luma.oled.device import ssd1306
# 初始化 GPIO 引脚
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
# 初始化显示屏
serial = i2c(port=1, address=0x3C)
device = ssd1306(serial)
# 初始化光敏传感器
ldr = LightSensor(4)
# 定义函数用于控制蜂鸣器和显示屏
def control_buzzer_display(light):
if light < 0.5: # 光线暗时
GPIO.output(18, GPIO.HIGH) # 开启蜂鸣器
device.clear() # 清空显示屏
device.text('Dark', fill="white") # 显示“黑暗”
else: # 光线亮时
GPIO.output(18, GPIO.LOW) # 关闭蜂鸣器
device.clear() # 清空显示屏
device.text('Bright', fill="white") # 显示“光明”
time.sleep(0.1)
# 无限循环检测光线亮度,并控制蜂鸣器和显示屏
while True:
light = ldr.value
control_buzzer_display(light)
import RPi.GPIO as GPIO
import time
from lcd1602 import LCD1602
from analog import Analog
# 初始化GPIO
GPIO.setmode(GPIO.BCM)
# 初始化蜂鸣器GPIO
buzzer_pin = 17
GPIO.setup(buzzer_pin, GPIO.OUT)
# 初始化光敏电阻GPIO
light_pin = 27
light = Analog(light_pin)
# 初始化LCD1602显示屏
lcd = LCD1602()
# 循环检测光线,并根据光线亮暗控制蜂鸣器和显示屏
while True:
# 读取光线强度
light_value = light.read()
# 判断光线强度
if light_value < 50: # 光线暗
# 控制蜂鸣器鸣叫
GPIO.output(buzzer_pin, GPIO.HIGH)
# 显示黑暗
lcd.clear()
lcd.write(0, 0, 'Dark')
else: # 光线亮
# 控制蜂鸣器停止鸣叫
GPIO.output(buzzer_pin, GPIO.LOW)
# 显示光明
lcd.clear()
lcd.write(0, 0, 'Bright')
# 延时一段时间
time.sleep(0.5)
FROM:肩匣与橘&GPT
提示提示:lcd1602、analog和gpio。lcd1602模块用于控制LCD1602显示屏,analog模块用于读取光敏电阻模拟量信号,gpio模块用于控制GPIO口。(⊙﹏⊙)