惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Securelist
K
Kaspersky official blog
V
Vulnerabilities – Threatpost
C
Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security Affairs
Forbes - Security
Forbes - Security
Spread Privacy
Spread Privacy
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Palo Alto Networks Blog
H
Hacker News: Front Page
L
Lohrmann on Cybersecurity
Cloudbric
Cloudbric
S
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
I
InfoQ
人人都是产品经理
人人都是产品经理
PCI Perspectives
PCI Perspectives
月光博客
月光博客
爱范儿
爱范儿
Jina AI
Jina AI
WordPress大学
WordPress大学
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
Google Online Security Blog
Google Online Security Blog
W
WeLiveSecurity
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
博客园 - 司徒正美
Scott Helme
Scott Helme
AI
AI
L
LangChain Blog
A
Arctic Wolf
博客园 - 【当耐特】
量子位
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
腾讯CDC
博客园 - 叶小钗
Last Week in AI
Last Week in AI
S
Secure Thoughts

博客园 - jiftle

opencode系统提示词加载机制 Qoder CN版本v1.4.2 (2026-06-27) 提供套餐余量查看 清理宝塔面板 桌面 AI 应用技术栈深度对比:腾讯元宝 vs WorkBuddy 【转载】编辑器之神与神的编辑器:Vim 与 Emacs 的传奇 OpenCode 源码解读报告 linux双网卡默认路由问题 通过4种方法来重置 UOS 操作系统中的用户密码 统信服务器系统【重置登录密码】解决方案 vscode插件Git Graph 怎么只提交单个文件 opencode 配置本地ollama模型编程 opencode编程工具 ollama模型导出 【转载】从源码看 Qwen Code 的设计思路 Qwen Code 代码分析 模型性能评测 职场真相:不是赏饭吃,是价值交换 vim插件AI结对编程辅助编程插件 千问网页版生成的代码不支持语法高亮 linux检查显存大小(集成显卡) golang测试模型的token输出速度 Go 实现本地 Ollama 模型基准测试工具 使用golang编写大语言模型的输出速度性能 ollama v0.18.2手工部署安装,linux, deepin 20.9 树莓派pico播放玛丽有只小羊羔 树莓派pico蜂鸣器播放音乐 树莓派 pico W(创客版)RP2020 W代码示例温度检测+液晶显示屏+HTTP服务器页面控制灯光 极简transformer,仅供理解原理
树莓派pico使用无源蜂鸣器播放小星星
jiftle · 2026-03-06 · via 博客园 - jiftle

树莓派pico播放小星星,无源蜂鸣器

from machine import Pin, PWM
import time

# ================= 配置区域 =================
BUZZER_PIN = 15       # 蜂鸣器连接的 GPIO 引脚 (建议 GP15)
VOLUME = 20000        # 音量 (0-65535), 建议 40000 (约 60%)
BPM = 80              # 速度 (每分钟拍数), 儿歌建议 60-90
BASE_TEMPO = 60000 // BPM  # 计算每拍的毫秒数 (约 750ms)
# ===========================================

# 初始化 PWM
buzzer = PWM(Pin(BUZZER_PIN))
buzzer.duty_u16(VOLUME)

# 音符频率表 (C 大调)
# 对应简谱:1=C, 2=D, 3=E, 4=F, 5=G, 6=A
NOTES = {
    'C4': 261, 'D4': 293, 'E4': 329, 'F4': 349, 'G4': 392, 'A4': 440,
    'C5': 523,  # 高音 C
    '0': 0      # 休止符
}

# 小星星 旋律数据
# 格式:(音符,节拍数)
# 节拍数:1 = 一拍,2 = 两拍 (结尾音)
SONG = [
    # 1 1 5 5 6 6 5 - (一闪一闪亮晶晶)
    ('C4', 1), ('C4', 1), ('G4', 1), ('G4', 1), ('A4', 1), ('A4', 1), ('G4', 2),
    
    # 4 4 3 3 2 2 1 - (满天都是小星星)
    ('F4', 1), ('F4', 1), ('E4', 1), ('E4', 1), ('D4', 1), ('D4', 1), ('C4', 2),
    
    # 5 5 4 4 3 3 2 - (挂在天上放光明)
    ('G4', 1), ('G4', 1), ('F4', 1), ('F4', 1), ('E4', 1), ('E4', 1), ('D4', 2),
    
    # 5 5 4 4 3 3 2 - (好像许多小眼睛)
    ('G4', 1), ('G4', 1), ('F4', 1), ('F4', 1), ('E4', 1), ('E4', 1), ('D4', 2),
    
    # 1 1 5 5 6 6 5 - (一闪一闪亮晶晶)
    ('C4', 1), ('C4', 1), ('G4', 1), ('G4', 1), ('A4', 1), ('A4', 1), ('G4', 2),
    
    # 4 4 3 3 2 2 1 - (满天都是小星星)
    ('F4', 1), ('F4', 1), ('E4', 1), ('E4', 1), ('D4', 1), ('D4', 1), ('C4', 2),
]

def play_note(note, beats):
    """播放单个音符"""
    freq = NOTES.get(note, 0)
    
    if freq == 0:
        # 休止符:静音
        buzzer.duty_u16(0)
    else:
        # 发声:设置频率和音量
        buzzer.freq(freq)
        buzzer.duty_u16(VOLUME)
    
    # 计算持续时间 (毫秒)
    duration = int(BASE_TEMPO * beats)
    time.sleep_ms(duration)
    
    # 音符间短暂停顿,让旋律更清晰 (约 30ms)
    buzzer.duty_u16(0)
    time.sleep_ms(30)

try:
    print("开始播放:小星星...")
    print(f"速度:{BPM} BPM | 引脚:GP{BUZZER_PIN}")
    
    while True:
        for note, beats in SONG:
            play_note(note, beats)
        
        print("一曲完毕,2 秒后重复...")
        time.sleep(2)

except KeyboardInterrupt:
    print("用户停止播放。")

finally:
    # 程序彻底退出时才关闭蜂鸣器
    buzzer.deinit()
    print("蜂鸣器已关闭。")