TungNT (Blue)

tungnt.blue@gmail.com

User Tools

Site Tools


development:python:micropython:buzzer

This is an old revision of the document!


Buzzer

boot.py
from machine import Pin, PWM
from utime import sleep
from song import Song
 
buzzer = PWM(Pin(23))
 
# Programming the Buzzer 
 
buzzer.freq(500) # volumne = 500
buzzer.duty_u16(1000)
sleep(1)
buzzer.duty_u16(0)
 
# Playing Music with a Buzzer
 
_song = Song(23)
 
_song.play_song_test()
sleep(1)
_song.play_song_mario()
sleep(1)
_song.play_song_jingle()
music.py
class Music:
    def __init__(self):
        pass
 
    def tones():
        return {
            "B0": 31,
            "C1": 33,
            "CS1": 35,
            "D1": 37,
            "DS1": 39,
            "E1": 41,
            "F1": 44,
            "FS1": 46,
            "G1": 49,
            "GS1": 52,
            "A1": 55,
            "AS1": 58,
            "B1": 62,
            "C2": 65,
            "CS2": 69,
            "D2": 73,
            "DS2": 78,
            "E2": 82,
            "F2": 87,
            "FS2": 93,
            "G2": 98,
            "GS2": 104,
            "A2": 110,
            "AS2": 117,
            "B2": 123,
            "C3": 131,
            "CS3": 139,
            "D3": 147,
            "DS3": 156,
            "E3": 165,
            "F3": 175,
            "FS3": 185,
            "G3": 196,
            "GS3": 208,
            "A3": 220,
            "AS3": 233,
            "B3": 247,
            "C4": 262,
            "CS4": 277,
            "D4": 294,
            "DS4": 311,
            "E4": 330,
            "F4": 349,
            "FS4": 370,
            "G4": 392,
            "GS4": 415,
            "A4": 440,
            "AS4": 466,
            "B4": 494,
            "C5": 523,
            "CS5": 554,
            "D5": 587,
            "DS5": 622,
            "E5": 659,
            "F5": 698,
            "FS5": 740,
            "G5": 784,
            "GS5": 831,
            "A5": 880,
            "AS5": 932,
            "B5": 988,
            "C6": 1047,
            "CS6": 1109,
            "D6": 1175,
            "DS6": 1245,
            "E6": 1319,
            "F6": 1397,
            "FS6": 1480,
            "G6": 1568,
            "GS6": 1661,
            "A6": 1760,
            "AS6": 1865,
            "B6": 1976,
            "C7": 2093,
            "CS7": 2217,
            "D7": 2349,
            "DS7": 2489,
            "E7": 2637,
            "F7": 2794,
            "FS7": 2960,
            "G7": 3136,
            "GS7": 3322,
            "A7": 3520,
            "AS7": 3729,
            "B7": 3951,
            "C8": 4186,
            "CS8": 4435,
            "D8": 4699,
            "DS8": 4978
        }
song.py
from machine import Pin, PWM
from time import sleep_ms
from music import Music
 
class Song:
    def __init__(self, sig_pin):
        self.buzzer = PWM(Pin(sig_pin), duty_u16=0)  
        self.tones = Music.tones()
 
    def test():
        # Create a list of notes for your song. Use the letter P to represent pauses in the music
        return ["E5","G5","A5","P","E5","G5","B5","A5","P","E5","G5","A5","P","G5","E5"]
 
    # Function called playtone that will take any frequency and play it at full volume
    def playtone(self, frequency, duty):
        self.buzzer.duty_u16(duty)
        self.buzzer.freq(frequency)
 
    # Function called bequiet that will silence the buzzer by change duty_u16 to 0
    def bequiet(self):
        self.buzzer.duty_u16(0)        
 
    def play_song(self, song, wait=150, duty=32767):
        for i in range(len(song)):
            if (song[i] == "P"):
                self.bequiet()
            else:
                self.playtone(self.tones[song[i]], duty)
            sleep_ms(wait)
 
        self.bequiet()   
 
    def play_song_test(self):        
        song = ["E5","G5","A5","P","E5","G5","B5","A5","P","E5","G5","A5","P","G5","E5"]
 
        self.play_song(song)
 
    def play_song_jingle(self):        
        song = [
            'E7', 'E7', 'E7', "P",
            'E7', 'E7', 'E7', "P",
            'E7', 'G7', 'C7', 'D7', 'E7', "P",
            'F7', 'F7', 'F7', 'F7', 'F7', 'E7', 'E7', 'E7', 'E7', 'D7', 'D7', 'E7', 'D7', "P", 'G7', "P",
            'E7', 'E7', 'E7', "P",
            'E7', 'E7', 'E7', "P",
            'E7', 'G7', 'C7', 'D7', 'E7', "P",
            'F7', 'F7', 'F7', 'F7', 'F7', 'E7', 'E7', 'E7', 'G7', 'G7', 'F7', 'D7', 'C7', "P" 
        ]
 
        self.play_song(song)
 
    def play_song_mario(self):        
        song = [
            'E7', 'E7',  "P", 'E7',  "P", 'C7', 'E7',  "P",
            'G7',  "P",  "P",  "P", 'G6',  "P",  "P",  "P",
            'C7',  "P",  "P", 'G6',  "P",  "P", 'E6',  "P",
            "P", 'A6',  "P", 'B6',  "P", 'AS6', 'A6',  "P",
            'G6', 'E7',  "P", 'G7', 'A7',  "P", 'F7', 'G7',
            "P", 'E7',  "P", 'C7', 'D7', 'B6',  "P",  "P",
            'C7',  "P",  "P", 'G6',  "P",  "P", 'E6',  "P",
            "P", 'A6',  "P", 'B6',  "P", 'AS6', 'A6',  "P",
            'G6', 'E7',  "P", 'G7', 'A7', "P", 'F7', 'G7',
            "P", 'E7',  "P", 'C7', 'D7', 'B6',  "P",  "P",
        ]
 
        self.play_song(song)
development/python/micropython/buzzer.1724423286.txt.gz · Last modified: 2024/08/23 14:28 by tungnt

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki