树莓派求python代码

将蜂鸣器,光敏,显示屏的代码拼接在一起,当光线暗了的时候蜂鸣器会叫,并且显示屏会显示黑暗,当光线亮了之后显示光明

以下是树莓派的 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口。(⊙﹏⊙)