一起玩转树莓派(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()

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

目录
相关文章
|
传感器 Linux Python
一起玩转树莓派(19)——红外遥控控制实验
红外遥控是生活中非常常见的电子器具,电视机,空调,音响等电器都可以通过遥控器进行控制。本篇博客,我们尝试来通过红外发生器和红外信号接受器来进行红外控制实验,在树莓派上通过红外遥控的按键来处理LED灯的控制。
1997 0
|
14天前
|
监控 IDE 机器人
基于Nodemcu的手机控制小车
基于Nodemcu的手机控制小车
30 0
|
传感器 算法 Linux
【乌拉喵.教程】不同负载下继电器的保护电路设计(解决继电器触点粘接的问题)
【乌拉喵.教程】不同负载下继电器的保护电路设计(解决继电器触点粘接的问题)
138 0
【乌拉喵.教程】不同负载下继电器的保护电路设计(解决继电器触点粘接的问题)
【单片机期中测试】6.简单PWM呼吸灯
【单片机期中测试】6.简单PWM呼吸灯
75 0
【单片机期中测试】10.利用定时器实现pwm呼吸灯
【单片机期中测试】10.利用定时器实现pwm呼吸灯
136 0
LabVIEW控制Arduino实现PWM呼吸灯(基础篇—5)
利用LIAT中的模拟I/O函数库,通过LabVIEW和Arduino Uno控制板实现LED灯亮度的调节,产生灯会呼吸的效果。
|
存储 IDE 物联网
Blinker 语音控制 51单片机 点灯
Blinker 语音控制 51单片机 点灯
288 0
|
语音技术 C语言
基于树莓派的智能音响【报时】【放歌】【切歌】【开关灯】
基于树莓派的智能音响【报时】【放歌】【切歌】【开关灯】
185 0
基于树莓派的智能音响【报时】【放歌】【切歌】【开关灯】