nanoFramework.Iot.Device.Buzzer 1.2.613

前缀已预留
dotnet add package nanoFramework.Iot.Device.Buzzer --version 1.2.613                
NuGet\Install-Package nanoFramework.Iot.Device.Buzzer -Version 1.2.613                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="nanoFramework.Iot.Device.Buzzer" Version="1.2.613" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件以引用该包。
paket add nanoFramework.Iot.Device.Buzzer --version 1.2.613                
#r "nuget: nanoFramework.Iot.Device.Buzzer, 1.2.613"                
#r 指令可用于 F# Interactive 和多语言笔记本。将此内容复制到交互工具或脚本源代码中以引用包。
// Install nanoFramework.Iot.Device.Buzzer as a Cake Addin
#addin nuget:?package=nanoFramework.Iot.Device.Buzzer&version=1.2.613

// Install nanoFramework.Iot.Device.Buzzer as a Cake Tool
#tool nuget:?package=nanoFramework.Iot.Device.Buzzer&version=1.2.613                

蜂鸣器 - 蜂鸣器控制器

此设备绑定允许使用压电蜂鸣器播放特定音调。它使用占空比 50% 的 PWM 和各种频率。

支持三个引脚的压电蜂鸣器,以及两个引脚的压电蜂鸣器。

设备系列

此绑定已在两种类型的压电蜂鸣器上进行过测试。第一种类型的蜂鸣器有两个引脚 vccgnd。第二种类型的蜂鸣器有一个额外的 信号 引脚。

用法

Buzzer 类可以使用软件或硬件 PWM。这是通过初始化完全透明地完成的。

如果您要使用软件 PWM,请调用接受一个整数作为参数的构造函数: public Buzzer(int pinNumber)

要使用硬件 PWM,确保正确地引用您想要使用的芯片和通道,并调用接受两个整数(芯片和通道)的构造函数。

另外,如果您想自己构造,也可以显式传递一个 PWMChannel。

以下是如何使用 Buzzer 的示例。

using (Buzzer buzzer = new Buzzer(21)); // Initialize buzzer with software PWM connected to pin 21.
{
    buzzer.PlayTone(440, 1000); // Play tone with frequency 440 hertz for one second.
}

重要 根据您的平台,您可能需要正确设置引脚。在 ESP32 的情况下,使用 nanoFramework.Hardware.Esp32 nuget,然后正确配置引脚,例如:Configuration.SetPinFunction(21, DeviceFunction.PWM1);。这应该在创建蜂鸣器之前完成。

蜂鸣器 允许在一定时间内播放特定音调,如上述示例所示。或者,您可以在开始播放音调后执行某些操作,然后再停止播放音调,如下例所示。

using (Buzzer buzzer = new Buzzer(21));
{
    buzzer.StartPlaying(440);
    Thread.Sleep(1000);
    buzzer.StopPlaying();
}

结果将与上一个示例相同。

蜂鸣器 允许您在任何时刻只播放一个音调。如果您将以不同的频率顺序调用 SetFrequency,则最后一个调用将覆盖之前的调用。以下示例解释了这一点。

using (Buzzer buzzer = new Buzzer(21)); // Initialize buzzer with software PWM connected to pin 21.
{
    buzzer.StartPlaying(440);
    Thread.Sleep(1000);
    buzzer.StartPlaying(880);
    Thread.Sleep(1000);
    buzzer.StopPlaying();
}

该示例将播放频率为 440Hz 的音调一秒钟,然后播放频率为 880Hz 的音调一秒钟。

使用蜂鸣器播放字母歌的示例

原理图

您有 2 种类型的蜂鸣器:只有 2 个引脚的蜂鸣器和有 3 个引脚的蜂鸣器。对于具有 3 个引脚的蜂鸣器:只需将蜂鸣器的 信号 引脚连接到晶体管开关引脚(任何有效的 GPIO),将 引脚连接到 +5v,将 gnd 引脚连接到地。对于具有 2 个引脚的蜂鸣器:将蜂鸣器的 引脚连接到晶体管开关引脚(任何有效的 GPIO)并将 gnd 连接到地。

您可以使用任何类型的蜂鸣器,顺序随意。无需对代码进行任何更改。

schema

代码

此示例包含一个名为 MelodyPlayer 的蜂鸣器包装器。

MelodyPlayer 和 MelodyElement

使用以下语句创建 MelodyPlayer 的实例

MelodyPlayer player = new MelodyPlayer(new  Buzzer(26));

构造函数接受一个参数类型为 Buzzer

初始化后,MelodyPlayer 允许通过一系列 MelodyElement 对象播放旋律。MelodyElement 是两种元素的基类

  • NoteElement - 它将被播放。因此,在构造函数中,它接受 NoteOctave 以确定声音的频率,以及 Duration 以确定声音的持续时间。
  • PauseElement - 它应该在前两个 NoteElement 之间创建一个停顿,因此它只具有作为构造函数参数的停顿持续时间。
如何使用

以下示例演示了如何创建 MelodyElement 序列以及如何使用 MelodyPlayer 播放它

IListMelodyElement sequence = new ListMelodyElement()
{
    new NoteElement(Note.C, Octave.Fourth, Duration.Quarter),
    new PauseElement(Duration.Quarter),
    new NoteElement(Note.C, Octave.Fourth, Duration.Quarter)
};

using (var player = new MelodyPlayer(new Buzzer(21)))
{
    player.Play(sequence, 100);
}

Play 方法 MelodyPlayer 接受一个 MelodyElement 序列作为第一个参数和一个速度作为第二个参数。速度是每分钟的四分之一音符数量。因此,速度越高,旋律播放的速度越快。

此外,还有 MelodyPlayer.Play 的重载,它接受 3 个参数:MelodyElement 序列、速度和移调值。移调值增加或减少旋律序列中每个音调的半音数目。例如:以下行将将序列中的每个音调降低一个八度,因为八度包含 12 个半音。

player.Play(sequence, 100, -12);
并行蜂鸣器播放

因为 MelodyPlayer.Play 方法不是异步的,所以此方法的调用被如下任务包装

var player1 = new MelodyPlayer(new Buzzer(21));
player1.Play(AlphabetSong, 100, -12);
player1.Play(AlphabetSong, 100);

这种方法允许独立播放两个旋律,但上面的示例使用两个不同的蜂鸣器在同一时间播放一个旋律。

字母歌

提供的示例使用两个蜂鸣器播放字母歌。歌曲硬编码在 Buzzer.Sample.cs 文件中,作为 MelodyElement 的序列。有关字母歌的更多信息,请参阅维基百科:Wikipedia

产品 兼容和额外的目标框架版本。
.NET 框架 net 兼容。
兼容的目标框架
包含的目标框架(在包中)
有关更多信息,请参阅 目标框架.NET 标准

NuGet 包 (5)

显示依赖 nanoFramework.Iot.Device.Buzzer 的前 5 个 NuGet 包

下载
nanoFramework.M5Core

此包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5Core 组装。

nanoFramework.M5StickCPlus

此包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5StickCPlus 组装。

nanoFramework.Fire

此包包含用于 .NET nanoFramework C# 项目的 nanoFramework.Fire 组装。

nanoFramework МагичБит

此包包含 nanoFramework_MAGICBIT,这是一个用于 .NET nanoFramework C# 项目的 MagicBit 控制板包库。

nanoFramework.M5Stack

此包包含用于 .NET nanoFramework C# 项目的 nanoFramework.M5Stack 组装。

GitHub 仓库

此包未被任何流行的 GitHub 仓库使用。

版本 下载 上次更新
1.2.613 95 8/9/2024
1.2.601 157 7/26/2024
1.2.590 273 7/17/2024
1.2.573 447 6/19/2024
1.2.570 110 6/14/2024
1.2.536 606 4/15/2024
1.2.514 462 3/22/2024
1.2.494 296 2/28/2024
1.2.474 405 1/24/2024
1.2.462 153 1/5/2024
1.2.458 142 12/20/2023
1.2.436 371 11/10/2023
1.2.416 316 11/8/2023
1.2.403 328 10/6/2023
1.2.396 310 9/27/2023
1.2.384 343 9/6/2023
1.2.378 408 8/16/2023
1.2.369 371 8/2/2023
1.2.363 273 7/28/2023
1.2.357 356 7/19/2023
1.2.354 301 7/14/2023
1.2.345 373 6/21/2023
1.2.341 327 6/14/2023
1.2.337 415 6/7/2023
1.2.335 205 6/2/2023
1.2.329 338 5/26/2023
1.2.313 618 5/12/2023
1.2.302 444 5/10/2023
1.2.297 404 5/3/2023
1.2.273 1,715 3/17/2023
1.2.267 1,057 3/10/2023
1.2.263 770 3/8/2023
1.2.259 765 2/27/2023
1.2.256 804 2/24/2023
1.2.253 797 2/22/2023
1.2.222 2,018 1/9/2023
1.2.217 1,200 1/6/2023
1.2.208 1,222 1/3/2023
1.2.203 813 12/28/2022
1.2.159 1,473 11/14/2022
1.2.153 2,684 11/5/2022
1.2.141 4,214 10/25/2022
1.2.128 1,248 10/22/2022
1.2.87 9,735 9/15/2022
1.2.63 3,943 9/3/2022
1.2.47 1,670 8/15/2022
1.2.40 1,934 8/6/2022
1.2.38 1,568 8/5/2022
1.2.32 3,598 8/2/2022
1.2.28 1,518 8/1/2022
1.2.13 3,077 7/24/2022
1.2.10 1,528 7/23/2022
1.1.145.58726 3,060 7/7/2022
1.1.133.52556 4,865 6/30/2022
1.1.121.35854 3,770 6/26/2022
1.1.116.8772 2,719 6/24/2022
1.1.113.2032 743 6/23/2022
1.1.102.51394 2,138 6/15/2022
1.1.99.36719 1,588 6/14/2022
1.1.72.29765 7,553 5/31/2022
1.1.64.21380 3,194 5/26/2022
1.1.58.10097 2,098 5/23/2022
1.1.54.28879 1,026 5/23/2022
1.1.40 3,695 5/5/2022
1.1.3 11,867 4/15/2022
1.1.1 483 4/14/2022
1.0.302 5,002 3/31/2022
1.0.300 466 3/31/2022
1.0.288-preview.114 152 3/25/2022
1.0.288-preview.113 123 3/25/2022
1.0.288-preview.103 143 3/21/2022
1.0.288-preview.100 127 3/19/2022
1.0.288-preview.99 135 3/18/2022
1.0.288-preview.98 117 3/18/2022
1.0.288-preview.94 172 3/15/2022
1.0.288-preview.93 120 3/15/2022
1.0.288-preview.90 173 3/11/2022
1.0.288-preview.86 153 3/8/2022
1.0.288-preview.77 175 2/27/2022
1.0.288-preview.75 130 2/26/2022
1.0.288-preview.65 156 2/18/2022
1.0.288-preview.63 142 2/16/2022
1.0.288-preview.61 141 2/12/2022
1.0.288-preview.58 137 2/10/2022
1.0.288-preview.53 132 2/9/2022
1.0.288-preview.48 162 2/4/2022
1.0.288-preview.41 161 1/31/2022
1.0.288-preview.29 143 1/28/2022
1.0.288-preview.22 164 1/27/2022
1.0.288-preview.20 139 1/27/2022
1.0.288-preview.19 134 1/27/2022
1.0.288-preview.18 138 1/27/2022
1.0.288-preview.5 151 1/24/2022
1.0.288-preview.1 150 1/21/2022
1.0.272 563 1/10/2022
1.0.263 370 12/24/2021
1.0.260 482 12/10/2021
1.0.259 166 12/9/2021
1.0.258 176 12/7/2021
1.0.218 350 10/18/2021
1.0.191 176 9/29/2021
1.0.179 166 9/22/2021