2019年6月28日 星期五

Raspberry PI筆記:蜂鳴器

基本原理:

蜂鳴器共分有主動式與被動式兩種,主動式蜂鳴器在通電時只會有單一蜂鳴音。
與主動式蜂鳴器不一樣的地方,被動式蜂鳴器在通電時,只會使蜂鳴器內的薄膜產生位移,整個發聲的原理,回到聲音的本質,是透過振動產生。因此透過恰當的控制,被動式蜂鳴器是能唱出有旋律的音樂。

接線:

+GPIO#2
-GND

Python程式:

主動式蜂鳴器
import RPi.GPIO as GPIO
import time
PIN = 2

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

GPIO.setup(PIN, GPIO.OUT)

GPIO.output(PIN, GPIO.LOW)
GPIO.output(PIN, GPIO.HIGH)
time.sleep(1)
GPIO.output(PIN, GPIO.LOW)

被動式蜂鳴器
import RPi.GPIO as GPIO
import time
PIN = 2

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

GPIO.setup(PIN, GPIO.OUT)

def buzz(freq, leng):
  delayValue = 0.5/freq
  cycle = freq*leng/1000
  for i in range(cycle):
    GPIO.output(PIN, GPIO.HIGH)
    time.sleep(delayValue)
    GPIO.output(PIN, GPIO.LOW)
    time.sleep(delayValue)

tone = [262, 294, 330, 349, 392, 440, 494]
duration = 1000/12
for t in tone:
  buzz(t, duration)
  time.sleep(0.01)

討論:

1. 被動式與主動式都有其適合的使用時機。
2. 被動式蜂鳴器的頻率與音符的關係,可以嘗試去找到對應關係,但建議只調整到近似的旋律即可,類似過去紅白機品質的音樂。

沒有留言:

張貼留言