Source code for buzzer

from machine import Pin, PWM
from utime import sleep_ms


melody = (
    (262, 125),
    163,
    (196, 63),
    82,
    (196, 63),
    82,
    (220, 125),
    163,
    (196, 125),
    450,
    (247, 125),
    163,
    (262, 125),
)


[docs]class Buzzer(): """Wrap a buzzer :param pin: The pin the buzzer is attached to """ def __init__(self, pin): self._pin = Pin(pin) self._pwm = PWM(self._pin) self.off()
[docs] def on(self, f=440): """Turn the buzzer on :param f: The frequency to buzz at """ self._pwm.freq(f) self._pwm.duty(512) self._pwm.init()
[docs] def off(self): """Turn the buzzer off """ self._pwm.duty(0) self._pwm.deinit() self._pin.off()
[docs] def buzz(self, f=440, t=500): """Buzz at a given frequency for a given time :param f: The frequency to buzz at :param t: The time to buzz (ms) """ self.on(f) sleep_ms(t) self.off()
[docs] def tune(self, sequence=melody): """Play a tune :param sequence: Sequence of tuple (freq, time) """ idx = 0 while idx < len(sequence): f, t = sequence[idx] idx += 1 self.buzz(f, t) if idx < len(sequence): t = sequence[idx] idx += 1 sleep_ms(t)
buzzer = Buzzer(5)