为啥树莓派有源蜂鸣器高低电平都响
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥树莓派有源蜂鸣器高低电平都响相关的知识,希望对你有一定的参考价值。
有源蜂鸣器,上面标注的是低电平触发,可是我试过各种写法,只要不在最后执行cleanup()就一直响个不停, 加个cleanup()就只响一下,请问是什么问题啊。。。。 比如我下面的贴图,这是网上最常见的写法,不管7和9行谁在上谁在下,都一样响,调用时传的参数时间也是,调大调小都差不多,无非是响的时间长短有区别,,完全实现不了嘀-嘀-嘀的间隔声音。树莓派3b+
参考技术A VCC 接到 5V 时,蜂鸣器可能会一直响,换 3.3V 试一下树莓派 python驱动蜂鸣器
@Author: Runsen 有问题,底部评论
蜂鸣器分为两种类型:“有源蜂鸣器”和“无源蜂鸣器”。
有源蜂鸣器内部具有多振动器,只需要在外部提供工作电压,它就能发出固定频率的声音。
无源蜂鸣器没有内部振荡源,需要外部驱动电路来提供驱动信号,从而发出特定频率。
我的蜂鸣器由树莓派主板的物理引脚32直接驱动。
树莓派引脚对照表如下图所示。
使用的Python,我采用的是BOARD编码方式。
树莓派 wiringPi库使用及引脚BCM与BOARD编码说明,查看博客
驱动蜂鸣器 连接 32 引脚,然后控制电流输入输出
代码环境选择 Jupyter
脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法。在树莓派上,可以通过对GPIO的编程来实现PWM。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(32, GPIO.OUT)
p = GPIO.PWM(32, 440)
p.start(50)
try:
while 1:
for dc in range(0, 101, 5):
print ('start_1')
# 更改频率:
p.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
print ('start_2')
time.sleep(0.1)
except KeyboardInterrupt:
pass
p.stop()
print("Ending")
GPIO.cleanup()
程序运行之后,我们可以听到蜂鸣器鸣笛。
以上是关于为啥树莓派有源蜂鸣器高低电平都响的主要内容,如果未能解决你的问题,请参考以下文章
将有源蜂鸣器正极接5v电源,负极直接接在stc89c52单片机的一个io口。蜂鸣器就一直响,不受i