跟着视频学会写流水灯程序了
但是不知道怎么写声控的,想知道声控流水灯程序怎么写。
实现声控流水灯大致可以分为以下几个步骤:
首先,需要对声音传感器进行初始化,包括 GPIO 引脚的设置和一些模拟配置参数的调整。例如,使用 Raspberry Pi 上的 python RPi.GPIO 库进行初始化:
import RPi.GPIO as GPIO
# 设置 GPIO 引脚编号
SENSOR_PIN = 18
LED_PINS = [23, 24, 25]
# 初始化 GPIO 引脚
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
for pin in LED_PINS:
GPIO.setup(pin, GPIO.OUT)
在进入循环之前,需要一直监听传感器的输出:如果检测到声音信号,则控制 LED 灯闪烁。
while True:
if GPIO.input(SENSOR_PIN):
# 声音检测成功,执行 LED 灯的闪烁操作
pass
else:
# 没有声音或声音信号太弱,不采取任何动作
pass
这里可以利用以上已经完成的流水灯代码,加入 2 种闪烁方式来让 LEDs 以特定模式闪烁。
当监测到声音信号时,会触发闪烁操作。具体实现可以根据不同的需求进行不同的优化,例如:
关键字声音检测:定义一个关键字列表(如 "on" 或者 "off"),当声音含有这些关键字的特定频率或强度时,则将LED开/关。实现方式可以采用语言模型、基于频率的信号处理等技术。
基于声音峰值的闪烁:检测传感器感受到的最高音量,将其转换为均匀加速递减的 LED 闪烁次数,从而产生一种 "随声光" 的效果。可以调节闪烁的次数和延迟时间等参数。
def light_blink_by_voice():
ratio = 0.3 # 调整音量与灯光闪烁次数之间的比例系数
duration_sec = 0.1 # 调整每次闪烁所占用的时间
sample_rate = 44100 # 声音采样率,默认使用 44.1kHz
scale = 10 # 调整每个灯泡独立闪烁的时间比例
# 计算需要闪烁的次数(等于音量 * 系数)
max_amplitude = get_max_amplitude()
num_of_blinks = int(max_amplitude * ratio)
if num_of_blinks > 0:
# 计算每次闪烁需要占用的时间
delay_sec = duration_sec / (num_of_blinks + 1)
# 计算每个灯泡独立闪烁的时间比例
states = []
for i in range(len(LED_PINS)):
n = int((i + 1) * scale)
s = [True] * n + [False] * (num_of_blinks - n)
states.append(s)
# 执行闪烁操作
for i in range(num_of_blinks):
for j, pin in enumerate(LED_PINS):
state = states[j][i]
GPIO.output(pin, state)
time.sleep(delay_sec)
上述代码展示了一种利用最大振幅控制闪烁模式的实现。使用该函数来替代流水灯中的固定频率和时长即可。
- 正常运行的电机出现故障一般是三相短路、过载、缺相。
- 本设计使用带电磁脱 扣器的断路器QF做过载和短路保护,
- 使用电流互感器和电流继电器并联做断相保 护。
- 当任何一个电流继电器得电,使得串联在电机控制电路的常开触点断开;
- 串联 在备用电机启动电路的常闭触点闭合(原来线圈带电时是断开的),
- 导致同样在一条 支路的继电器(KM)线圈失电,
- 导致与电机与电网相连的继电器触点断开,故障电 机停止运转
- 同时实现了故障的指示和备用电机的启动功能。