树莓派3b强行驱动无源蜂鸣器

发布于 / 树莓派 / Comments Off on 树莓派3b强行驱动无源蜂鸣器

有源蜂鸣器:自带高频振荡,直接上电并加信号即可蜂鸣,一般引线有3根

无源蜂鸣器:不带高频振荡,需要外加震荡才能工作,一般引线有两根。

如果你想给树莓派加上个蜂鸣器但是又不想购买,从贺卡或闹钟拆下的蜂鸣器一般就是无源蜂鸣器。我们可以利用树莓派的GPIO驱动它发出蜂鸣声。

蜂鸣器:

2D0F800BE0C0B8D46DC389ECAEBA1D61.jpg

以下是树莓派GPIO的参考图

blob.png

首先把无源蜂鸣器负极接地,正极接一个输出GPIO,这里我选择的是GPIO17(11管脚)和GND(20管脚)

22BB027630B144AC1D961F12111034EA.jpg

接着打开Python3,(必须实现装好RPi.GPIO的库,详情百度)

接着初始化GPIO:

import RPi.GPIO as GPIO
import os
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)

定义一个蜂鸣函数:

def beep(frq):
    GPIO.output(17, GPIO.HIGH)
    time.sleep(1 / frq)
    GPIO.output(17, GPIO.LOW)
    time.sleep(1 / frq)

frq为频率。注意这里频率不是特别稳定,一般会偏低,受CPU运行速度、负载和函数执行效率等等有关。

接着输入:

while True:
    beep(6000)

如果你的蜂鸣器发出了声音,说明ojbk了。6000是我测得蜂鸣器发出人耳感觉最刺耳的频率,你也可以根据你的感觉调整。

下面是一个摩斯电码的例子:

def short():
    for i in range(50):
        beep(6000)
def long():
    for i in range(100):
        beep(6000)
def speak(string):
    for i in string:
        if i == '.':
            short()
        elif i == '-':
            long()
        time.sleep(0.05)
        
stri = '''
..-./..-/-.-./-.-/-....-
'''
speak(stri)

你可以根据自己的想法来进行编程,比如整点报时、闹钟、天气提醒等等

转载原创文章请注明,转载自: 斐斐のBlog » 树莓派3b强行驱动无源蜂鸣器
评论已关闭