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
<PackageReference Include="nanoFramework.Iot.Device.Buzzer" Version="1.2.613" />
paket add nanoFramework.Iot.Device.Buzzer --version 1.2.613
#r "nuget: nanoFramework.Iot.Device.Buzzer, 1.2.613"
// 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 和各种频率。
支持三个引脚的压电蜂鸣器,以及两个引脚的压电蜂鸣器。
设备系列
此绑定已在两种类型的压电蜂鸣器上进行过测试。第一种类型的蜂鸣器有两个引脚 vcc 和 gnd。第二种类型的蜂鸣器有一个额外的 信号 引脚。
用法
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 连接到地。
您可以使用任何类型的蜂鸣器,顺序随意。无需对代码进行任何更改。
代码
此示例包含一个名为 MelodyPlayer
的蜂鸣器包装器。
MelodyPlayer 和 MelodyElement
使用以下语句创建 MelodyPlayer 的实例
MelodyPlayer player = new MelodyPlayer(new Buzzer(26));
构造函数接受一个参数类型为 Buzzer
。
初始化后,MelodyPlayer 允许通过一系列 MelodyElement
对象播放旋律。MelodyElement 是两种元素的基类
NoteElement
- 它将被播放。因此,在构造函数中,它接受Note
和Octave
以确定声音的频率,以及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
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.System.Device.Model (>= 1.2.586)
- nanoFramework.System.Device.Pwm (>= 1.1.10)
- nanoFramework.System.Math (>= 1.5.43)
- UnitsNet.nanoFramework.Frequency (>= 5.56.0)
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 |