< All Topics
Print

【聲音】蜂鳴器 | dual2s-mini | MPY-LLM

簡介:

蜂鳴器(Buzzer)是一項常用的電子元件,除了運用無源蜂鳴器的特性,練習音高頻率、元件整合應用的控制方式之外。實務上,我們經常使用作為提醒標示、警告通知等用途。


準備:

材料與工具

本文範例使用【dual2s-mini】為示範。如圖標註,其內建一顆無源蜂鳴器與開關。此蜂鳴器響應頻率上限為1KHz。

GPIO與電路

韌體範例:

LLM轉換資料

  //Buzzer Pitch define
  struct Pitch{
    uint16_t Do_3=131, Re_3=147, Mi_3=165, Fa_3=175, Sol_3=196, La_3=220, Si_3=247;
    uint16_t Do_4=262, Re_4=294, Mi_4=330, Fa_4=349, Sol_4=392, La_4=440, Si_4=494;
    uint16_t Do_5=523, Re_5=587, Mi_5=659, Fa_5=698, Sol_5=784, La_5=880, Si_5=988;
  };

請LLM協助轉換為dict格式:

# Buzzer Pitch define
Pitch = {
    'Do_3': 131, 'Re_3': 147, 'Mi_3': 165, 'Fa_3': 175, 'Sol_3': 196, 'La_3': 220, 'Si_3': 247,
    'Do_4': 262, 'Re_4': 294, 'Mi_4': 330, 'Fa_4': 349, 'Sol_4': 392, 'La_4': 440, 'Si_4': 494,
    'Do_5': 523, 'Re_5': 587, 'Mi_5': 659, 'Fa_5': 698, 'Sol_5': 784, 'La_5': 880, 'Si_5': 988
}

簡單範例:

import machine
import time

# 設定 GPIO 15 為蜂鳴器的腳位
buzzer_pin = machine.Pin(15)
buzzer = machine.PWM(buzzer_pin)

# 定義音階表的頻率
Pitch = {
    'Do_3': 131, 'Re_3': 147, 'Mi_3': 165, 'Fa_3': 175, 'Sol_3': 196, 'La_3': 220, 'Si_3': 247,
    'Do_4': 262, 'Re_4': 294, 'Mi_4': 330, 'Fa_4': 349, 'Sol_4': 392, 'La_4': 440, 'Si_4': 494,
    'Do_5': 523, 'Re_5': 587, 'Mi_5': 659, 'Fa_5': 698, 'Sol_5': 784, 'La_5': 880, 'Si_5': 988
}

# 按照音階從低到高播放音調
for pitch in Pitch.values():
    buzzer.freq(pitch)       # 設定蜂鳴器的頻率
    buzzer.duty(512)         # 設定音量,512 為最大音量的一半
    time.sleep(0.5)          # 持續 0.5 秒
    buzzer.duty(0)           # 停止蜂鳴器
    time.sleep(0.1)          # 短暫間隔
Table of Contents