回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【PinPong Board】PinPong Board快速入门教程(2)蜂鸣器 简单

头像 chinaxueyuan 2021.05.07 357 0

上一节我们做的奇葩的blink这个小程序用到了蜂鸣器。不过没有让蜂鸣器能够好好的发出一个声音。那么这一节将带领大家真正的开始用一下蜂鸣器。简单阐述一下蜂鸣器的原理、发出警报声最后用它播放一个歌曲。

步骤1 初识蜂鸣器

这个PinPong Board这个板子上的蜂鸣器就长这样。小小的一个。那么蜂鸣器是什么呢?

project-image

简单理解蜂鸣器就是一个小喇叭,可以用它发出一些声音,一般蜂鸣器分为有源和无源两种蜂鸣器,有源蜂鸣器通电就可以发出声音。而无源就比较麻烦了。在板子上的蜂鸣器是一个无源蜂鸣器,无源蜂鸣器想要发出声音就需要震动。想要控制蜂鸣器震动就需要我们给一个脉冲信号。给脉冲信号其实很简到,只需要让他快速的开关就可以,如果一秒钟让他开关500次那么它就是500Hz的震动频率。先看下500Hz如何发出来。

步骤2 用脉冲信号控制发出声音

脉冲信号简单来说就是高点平加上低电平就是一个脉冲,那么500Hz就是500个脉冲,简单来说就是高低电平500次,参考一下程序。

代码
# -*- coding: utf-8 -*-

#效果:发出500Hz赫兹的声音
#接线:使用windows电脑连接一块PinPong主控板,主控板D5引脚的蜂鸣器
import time
from pinpong.board import Board,Pin

#Board("uno").begin()  #初始化,选择板型和端口号,不输入端口号则进行自动识别
ip =  "192.168.31.128" #网络配置中OLEB屏上显示的ip
port = 8081    #网络配置中OLEB屏上显示的port
Board(ip, port)

sound = Pin(Pin.D5, Pin.OUT) #引脚初始化为电平输出
while True:
  sound.value(1) #输出高电平
  time.sleep(0.001) #等待1秒 保持状态
  sound.value(0) #输出低电平
  time.sleep(0.001) #等待1秒 保持状态

步骤3 使用Tone函数

原来发出声音这么简单。不过用着一种方法如果想发出一个261Hz的声音就有点难了。那怎么搞呢?其实我们可以用pinpong库当中的Tone函数就可以非常方便的使用了。.freq是设定频率 .on()播放 .off()关闭声音。下面这个程序就是简单播放一个261Hz的声音。

代码
# -*- coding: utf-8 -*-

#效果:发出261Hz声音
#接线:使用windows电脑连接一块PinPong主控板,主控板D5引脚的蜂鸣器
import time
from pinpong.board import Board,Pin,Tone

ip =  "192.168.31.128" #网络配置中OLEB屏上显示的ip
port = 8081    #网络配置中OLEB屏上显示的port
Board(ip, port)

sound = Tone(Pin(Pin.D5)) #将Pin传入Tone中实现模拟输出
sound.freq(200) #按照设置的频率播放

while True:
  sound.on()  #打开蜂鸣器

使用Tone函数后发现我想要什么频率就可以有什么频率非常简单,由此我可以做一个简单的报警器的效果。也就是声音频率从200Hz开始慢慢的到5000Hz然后再慢慢降到200Hz。

代码
# -*- coding: utf-8 -*-
#接线:使用windows电脑连接一块PinPong主控板,主控板D5引脚的蜂鸣器
import time
from pinpong.board import Board,Pin,Tone

ip =  "192.168.31.128" #网络配置中OLEB屏上显示的ip
port = 8081    #网络配置中OLEB屏上显示的port
Board(ip, port)

sound = Tone(Pin(Pin.D5)) #将Pin传入Tone中实现模拟输出
sound.freq(200) #按照设置的频率播放

while True:
    
    for my_variable in range(200, 5001, 1):
        sound.freq(my_variable)
        sound.on()  #打开蜂鸣器
        time.sleep(0.001)
    pass
    for my_variable in range(5001, 199, -1):
        sound.freq(my_variable)
        sound.on()  #打开蜂鸣器
        time.sleep(0.001)
    pass

步骤4 播放小星星

接下来我们尝试用PinPong Board来播放一个音乐。先来看看一个简单的歌曲,《小星星》作为例子。当然我的程序只是写了一个简单的前两个小节内容,有兴趣的可以接着往下写。或者用更简单的方法写出来。我在这里只是抛砖引玉简单的举例说明一下怎么来用蜂鸣器。


代码
# -*- coding: utf-8 -*-
#接线:使用windows电脑连接一块PinPong主控板,主控板D5引脚的蜂鸣器
import time
from pinpong.board import Board,Pin,Tone

ip =  "192.168.31.128" #网络配置中OLEB屏上显示的ip
port = 8081    #网络配置中OLEB屏上显示的port
Board(ip, port)

sound = Tone(Pin(Pin.D5)) #将Pin传入Tone中实现模拟输出
while True:
  sound.on()  #打开蜂鸣器
  for my_variable in range(2, 201):
    sound.freq(261)
    sound.on()  #打开蜂鸣器
    time.sleep(1)
    sound.off()
    time.sleep(0.2) 

    sound.freq(261)
    sound.on()  #打开蜂鸣器
    time.sleep(1)
    sound.off()
    time.sleep(0.2) 
    
    sound.freq(392)
    sound.on()  #打开蜂鸣器
    time.sleep(1)
    sound.off()
    time.sleep(0.2)

    sound.freq(392)
    sound.on()  #打开蜂鸣器
    time.sleep(1)
    sound.off()
    time.sleep(0.2)
    
    sound.freq(440)
    sound.on()  #打开蜂鸣器
    time.sleep(1)
    sound.off()
    time.sleep(0.2)
    
    sound.freq(440)
    sound.on()  #打开蜂鸣器
    time.sleep(1)
    sound.off()
    time.sleep(0.2)

    sound.freq(392)
    sound.on()  #打开蜂鸣器
    time.sleep(2)
    sound.off()
    time.sleep(0.2)
    pass
project-image

各个音符所对应的频率的就在以下表格中。

project-image

因为python语言不熟可能有些程序可能不够严谨,欢迎留言更正。

CC BY-NC-SA

评论

user-avatar