一起玩转树莓派(4)——用开关控制蜂鸣器发声(一)

简介: 一起玩转树莓派(4)——用开关控制蜂鸣器发声

在本系列的前几篇博客中,我们使用桌面软件控制过红绿灯,也编程点亮过炫彩的3色LED 灯。在这些实验的过程中,相信你对树莓派GPIO引脚如何输出高低电平,以及如何使用PWM技术来控制电压输出等都有了了解。本篇博客,我们将再探索一些树莓派编程更多新鲜好玩的领域,来尝试使用硬件来控制硬件。


现在,我们将尝试完成这样一个实验,使用按压开关控制蜂鸣器的发声。将开关元件和蜂鸣器都连接到树莓派,当按下开关时,让蜂鸣器发声,当松开开关时,蜂鸣器停止发声。


一、主角登场


开始动手实验前,我们先来认识一下将要出场的主角们,当然,无论什么实验,树莓派都是当之无愧的第一主角,但我相信你已经对它已经有了足够的了解(如果没有,可以查看本系列的前几篇博客),因此我们将介绍的重点放在两个新登场的“角色”上:蜂鸣器与按压开关。


1.本实验的“主角甲”——有源蜂鸣器


蜂鸣器,顾名思义,其是一种发声元件。广泛应用于计算机、打印机、电话、玩具等电子设备中。


蜂鸣器可以分为“有源蜂鸣器”和“无源蜂鸣器”。其中的源并非指电源,而是指蜂鸣器内部是否有震荡源。有源蜂鸣器自带一个震荡源模块,其使用起来非常简单,只要接通直流电,其就会自动发出声音。而无源蜂鸣器内部没有震荡源,需要外接使用一定频率的方波来驱动其发声。关于无源蜂鸣器更多深入的用法,我们后续博客再专门介绍。这里,我们先着重理解有源蜂鸣器的工作原理。


本实验中,我们采用的是低电平触发的有源蜂鸣器,元件如下图所示:

image.png



其有3个引脚,GND引脚用来接地,VCC引脚用来接3.3V的电源,I/O引脚用来进行蜂鸣器是否播放声音的控制。你可能有些疑惑,为什么低电平也可以触发元件的“开”状态,这要归功于PNP型三极管的功劳,对于PNP型三极光,当输入管脚为低电平时,三极管处于导通状态,使得蜂鸣器被加电压,当输入管脚为高电平时,三极管处于截止状态,蜂鸣器无电压。原理如下图所示:

image.png



现在,我们先来编写一段简单的Python程序,来使蜂鸣器发出声音。


2. 触发蜂鸣器播放声音


我们使用的蜂鸣器的3个引脚,其中VCC接电源,GND接地,I/O引脚我们可以选择树莓派BCM编码为27的GPIO引脚,通过查表,可以得到其物理编码为13。连线示意如下:


image.png


编写Python程序代码如下:


#coding:utf-8


# 导入GPIO控制薄块

import RPi.GPIO as GPIO

# 导入time模块

import time


# 定义引脚

fm = 13

# 设置使用的引脚编码模式

GPIO.setmode(GPIO.BOARD)

# 进行引脚的初始化,因为是低电平触发,初始时设置为高电平

GPIO.setup(fm,GPIO.OUT, initial=GPIO.HIGH)


# 进行一长两短的声音播放

# 播放1秒声音

GPIO.output(fm, GPIO.LOW)

time.sleep(1)

GPIO.output(fm, GPIO.HIGH)

time.sleep(0.1)

# 播放0.5秒声音

GPIO.output(fm, GPIO.LOW)

time.sleep(0.5)

GPIO.output(fm, GPIO.HIGH)

time.sleep(0.1)

# 播放0.5秒声音

GPIO.output(fm, GPIO.LOW)

time.sleep(0.5)

# 停止蜂鸣器播放

GPIO.output(fm, GPIO.HIGH)

GPIO.cleanup()

在树莓派上运行代码,你应该已经可以听到蜂鸣器发出一长两短的鸣叫声了。

目录
相关文章
|
机器学习/深度学习 编解码 算法
yolov1到v8的变化
yolov1到v8的变化
374 1
|
网络安全 网络架构 数据安全/隐私保护
树莓派通过网线连接电脑(校园网也能连接),实现SSH连接
树莓派通过网线连接电脑(校园网也能连接),实现SSH连接
|
IDE 程序员 开发工具
IDEA插件-IKun Progress 坤坤成IDEA进度条了
"IKun Progress"是一款适用于JetBrains IntelliJ IDEA等IDE的插件,该插件能够将标准的进度条替换为一个有趣且独特的篮球动画,其中的角色名为坤坤(Kun Kun)。它旨在为您的IDE使用过程增添一些娱乐和轻松的氛围。 该插件让您可以在执行IDE中的任务时享受到更加视觉上吸引人的进度指示器,例如构建、运行测试或其他涉及进度条的操作。相比传统的普通进度条,您将看到坤坤在打篮球,给您的开发工作流程增添了一份乐趣。
1788 0
IDEA插件-IKun Progress 坤坤成IDEA进度条了
|
机器学习/深度学习 人工智能 自然语言处理
揭秘深度学习中的自注意力机制及其在Transformer模型中的应用
揭秘深度学习中的自注意力机制及其在Transformer模型中的应用
|
Rust Shell 索引
使用阿里云镜像加速Rust与Cargo安装及更新
使用阿里云镜像加速Rust与Cargo安装及更新
10828 2
|
数据采集 机器学习/深度学习 算法
利用Python进行数据预处理的实用指南
【9月更文挑战第15天】在探索数据科学之旅时,数据预处理是不可或缺的一环。本文将引导你通过Python实现数据清洗、转换和归一化等关键步骤,确保你的数据集为后续分析做好准备。我们将一起学习如何去除空值、异常值,以及如何标准化数据格式,从而让数据变得更加“乖巧”。让我们开始吧,将原始数据转化为洞察力量的旅程!
|
Web App开发 XML 数据可视化
MathML详解
MathML(数学标记语言)是一种基于XML的语言,用于在Web页面中结构化地展示数学公式和符号。它通过内容模型和表现模型描述数学表达式的语义和排版,广泛应用于教育、科学出版等领域,并支持屏幕阅读器提升可访问性。尽管现代浏览器如Firefox对其支持良好,但在某些浏览器中可能需额外插件才能正确渲染。MathML的优点包括结构化表示和高可读性,但也存在一定的学习曲线和兼容性问题。
IntelliJ IDEA 如何在控制台过滤信息
IntelliJ IDEA 如何在控制台过滤信息
967 0
|
Ubuntu 安全 网络协议
|
计算机视觉
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
【方便的Opencv】实现播放有声音的视频+附带图片生成gif
1163 0
【方便的Opencv】实现播放有声音的视频+附带图片生成gif