接入蜂鸣器比较简单, 需要有一个蜂鸣器, 我买的是这款有/无源蜂鸣器模块
蜂鸣器的线比较少, 只有三根
-
所以我打算直接参考它的定义来接线
树莓派 蜂鸣器 备注 VUSB VCC 电源线, 40 号脚输出 5V GP22 I/0 输入输出口 GND GND 地线, 树莓派上的随便找一个靠近的 GND 接即可 -
在网上找了一个铁血丹心的歌曲
package main
import (
"machine"
"time"
"tinygo.org/x/drivers/buzzer"
)
type note struct {
tone float64
duration float64
}
func main() {
// 这里的 22 注意就是 I/O 线
bzrPin := machine.Pin(22)
bzrPin.Configure(machine.PinConfig{Mode: machine.PinOutput})
bzr := buzzer.New(bzrPin)
song := []note{
{buzzer.A4, 1.5}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.A4, 1}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.E4, 0.5}, // 3
// 2
{buzzer.G4, 1}, // 5
{buzzer.D4, 3}, // 2
// 3
{buzzer.C4, 1.5}, // 1
{buzzer.A3, 0.5}, // .6
{buzzer.D4, 0.5}, // 2
{buzzer.E4, 0.5}, // 3
{buzzer.G4, 0.5}, // 5
{buzzer.F4, 0.5}, // 4
// 4
{buzzer.E4, 3}, // 3
{buzzer.E4, 0.5}, // 3
{buzzer.G4, 0.5}, // 5
// 5
{buzzer.A4, 1.5}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.A4, 1}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.E4, 0.5}, // 5
// 6
{buzzer.G4, 1}, // 5
{buzzer.D4, 3}, // 2
// 7
{buzzer.C4, 1.5}, // 1
{buzzer.A3, 0.5}, // .6
{buzzer.D4, 0.5}, // 2
{buzzer.E4, 0.5}, // 3
{buzzer.G3, 0.5}, // .5
{buzzer.B3, 0.5}, // .7
// 8
{buzzer.A3, 4}, // .6
{0, 1}, // 0
{buzzer.E4, 0.5}, // 3
{buzzer.D4, 0.5}, // 2
{buzzer.C4, 1.5}, // 1
{buzzer.B3, 0.5}, // .7
//
{buzzer.A3, 1.5}, // .6
{buzzer.E3, 0.5}, // .3
{buzzer.A3, 2}, // .6
//{buzzer.A3, 1}, // .6
{buzzer.A4, 0.5}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.E4, 1}, // 3
{buzzer.G4, 0.5}, // 5
{buzzer.D4, 0.5}, // 2
{buzzer.E4, 3}, // 3
{buzzer.E4, 0.5}, // 3
{buzzer.D4, 0.5}, // 2
{buzzer.C4, 1.5}, // 1
{buzzer.B3, 0.5}, // .7
{buzzer.A3, 1.5}, // .6
{buzzer.E3, 0.5}, // .6
{buzzer.A3, 2}, // .6
{0, 1}, // 0
{buzzer.D4, 0.5}, // 2
{buzzer.C4, 0.5}, // 1
{buzzer.A3, 1}, // .6
{buzzer.C4, 0.5}, // 1
{buzzer.D4, 0.5}, // 1
{buzzer.E4, 3}, // 3*/
{buzzer.E4, 1}, // 3 逐草四方
{buzzer.A4, 1.5}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.A4, 1}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.E4, 0.5}, // 3
{buzzer.G4, 1}, // 5
{buzzer.D4, 3}, // 2
{buzzer.C4, 1.5}, // 1
{buzzer.A3, 0.5}, // .6
{buzzer.D4, 0.5}, // 2
{buzzer.E4, 0.5}, // 3
{buzzer.G4, 0.5}, // 5
{buzzer.E4, 3}, // 3
{buzzer.E4, 0.5}, // 3
{buzzer.G4, 0.5}, // 5
{buzzer.A4, 1.5}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.A4, 1.0}, // 6
{buzzer.G4, 0.5}, // 5
{buzzer.E4, 0.5}, // 3
{buzzer.G4, 1.0}, // 5
{buzzer.D4, 3}, // 2
{buzzer.C4, 1.5}, // 1
{buzzer.A3, 0.5}, // .6
{buzzer.D4, 0.5}, // 2
{buzzer.E4, 0.5}, // 3
{buzzer.G3, 0.5}, // .5
{buzzer.B3, 0.5}, // .7
{buzzer.A3, 3}, // .6
{0, 1}, // 0
{buzzer.E4, 0.5}, // 3 应知爱意似
{buzzer.D4, 0.5}, // 2
{buzzer.C4, 1.0}, // 1
{buzzer.C4, 0.5}, // 1
{buzzer.B3, 0.5}, // .7
{buzzer.A3, 1.5}, // .6
{buzzer.E3, 0.5}, // .3
{buzzer.A3, 2.0}, // .6
{0, 1}, // 0
{buzzer.A3, 0.5}, // .6
{buzzer.G3, 0.5}, // .5
{buzzer.E3, 1.0}, // .3
{buzzer.G3, 0.5}, // .5
{buzzer.D3, 0.5}, // .2
{buzzer.E3, 3.0}, // .3
{0, 1}, // 0
{buzzer.E4, 0.5}, // 3 身经百劫也
{buzzer.D4, 0.5}, // 2
{buzzer.C4, 1.0}, // 1
{buzzer.C4, 0.5}, // 1
{buzzer.B3, 0.5}, // .7
{buzzer.A3, 1.5}, // .6
{buzzer.E4, 0.5}, // 3
{buzzer.D4, 2.0}, // 2
{0, 1}, // 0
{buzzer.D4, 0.5}, // 2
{buzzer.C4, 0.5}, // 1
{buzzer.A3, 1.0}, // .6
{buzzer.B3, 0.5}, // .7
{buzzer.G3, 0.5}, // .5
{buzzer.A3, 3.0}, // .6
}
for _, val := range song {
bzr.Tone(val.tone, val.duration)
time.Sleep(10 * time.Millisecond)
}
}
- 编译烧录
go mod tidy
tinygo flash -target=pico
- 之后运行就可以听到一首优美的音乐了