development:python:micropython:buzzer
Buzzer
- boot.py
from machine import Pin, PWM from utime import sleep from time import sleep_ms from song import Song from buzzer import Buzzer, BuzzerLib bz = PWM(Pin(23)) # Programming the Buzzer bz.freq(500) # volumne = 500 bz.duty_u16(1000) sleep(1) bz.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() # Other Lib bz = Buzzer(23) print("Playing mario.") bz.play(BuzzerLib.mario, 150, 32767) sleep_ms(1000) print("Playing jingle bells.") bz.play(BuzzerLib.jingle, 250, 32767) sleep_ms(1000) print("Playing twinkle, twinkle little star.") bz.play(BuzzerLib.twinkle, 600, 32767)
- 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)
- buzzer.py
from machine import Pin from machine import PWM from time import sleep_ms # Notes and its equivalent frequency # Octave 0 ******************** B0 = 31 # B # Octave 1 ******************** C1 = 33 # C CS1 = 35 # C#/Db D1 = 37 # D DS1 = 39 # D#/Eb E1 = 41 # E F1 = 44 # F FS1 = 46 # F#/Gb G1 = 49 # G GS1 = 52 # G#/Ab A1 = 55 # A AS1 = 58 # A#/Bb B1 = 62 # B # Octave 2 ******************** C2 = 65 # C CS2 = 69 # C#/Db D2 = 73 # D DS2 = 78 # D#/Eb E2 = 82 # E F2 = 87 # F FS2 = 93 # F#/Gb G2 = 98 # G GS2 = 104 # G#/Ab A2 = 110 # A AS2 = 117 # A#/Bb B2 = 123 # B # Octave 3 ******************** C3 = 131 # C CS3 = 139 # C#/Db D3 = 147 # D DS3 = 156 # D#/Eb E3 = 165 # E F3 = 175 # F FS3 = 185 # F#/Gb G3 = 196 # G GS3 = 208 # G#/Ab A3 = 220 # A AS3 = 233 # A#/Bb B3 = 247 # B # Octave 4 ******************** C4 = 262 # C CS4 = 277 # C#/Db D4 = 294 # D DS4 = 311 # D#/Eb E4 = 330 # E F4 = 349 # F FS4 = 370 # F#/Gb G4 = 392 # G GS4 = 415 # G#/Ab A4 = 440 # A AS4 = 466 # A#/Bb B4 = 494 # B # Octave 5 ******************** C5 = 523 # C CS5 = 554 # C#/Db D5 = 587 # D DS5 = 622 # D#/Eb E5 = 659 # E F5 = 698 # F FS5 = 740 # F#/Gb G5 = 784 # G GS5 = 831 # G#/Ab A5 = 880 # A AS5 = 932 # A#/Bb B5 = 988 # B # Octave 6 ******************** C6 = 1047 # C CS6 = 1109 # C#/Db D6 = 1175 # D DS6 = 1245 # D#/Eb E6 = 1319 # E F6 = 1397 # F FS6 = 1480 # F#/Gb G6 = 1568 # G GS6 = 1661 # G#/Ab A6 = 1760 # A AS6 = 1865 # A#/Bb B6 = 1976 # B # Octave 7 ******************** C7 = 2093 # C CS7 = 2217 # C#/Db D7 = 2349 # D DS7 = 2489 # D#/Eb E7 = 2637 # E F7 = 2794 # F FS7 = 2960 # F#/Gb G7 = 3136 # G GS7 = 3322 # G#/Ab A7 = 3520 # A AS7 = 3729 # A#/Bb B7 = 3951 # B # Octave 8 ******************** C8 = 4186 # C CS8 = 4435 # C#/Db D8 = 4699 # D DS8 = 4978 # D#/Eb class BuzzerLib: # This is the list of notes for mario theme # 0 denotes rest notes mario = [ E7, E7, 0, E7, 0, C7, E7, 0, G7, 0, 0, 0, G6, 0, 0, 0, C7, 0, 0, G6, 0, 0, E6, 0, 0, A6, 0, B6, 0,AS6, A6, 0, G6, E7, 0, G7, A7, 0, F7, G7, 0, E7, 0, C7, D7, B6, 0, 0, C7, 0, 0, G6, 0, 0, E6, 0, 0, A6, 0, B6, 0,AS6, A6, 0, G6, E7, 0, G7, A7, 0, F7, G7, 0, E7, 0, C7, D7, B6, 0, 0, ] # This is the list of notes for jingle bells jingle = [ E7, E7, E7, 0, E7, E7, E7, 0, E7, G7, C7, D7, E7, 0, F7, F7, F7, F7, F7, E7, E7, E7, E7, D7, D7, E7, D7, 0, G7, 0, E7, E7, E7, 0, E7, E7, E7, 0, E7, G7, C7, D7, E7, 0, F7, F7, F7, F7, F7, E7, E7, E7, G7, G7, F7, D7, C7, 0 ] # This is the list of notes for Twinkle, Twinkle Little Star twinkle = [ C6, C6, G6, G6, A6, A6, G6, 0, F6, F6, E6, E6, D6, D6, C6, 0, G6, G6, F6, F6, E6, E6, D6, 0, G6, G6, F6, F6, E6, E6, D6, 0, C6, C6, G6, G6, A6, A6, G6, 0, F6, F6, E6, E6, D6, D6, C6, 0, ] class Buzzer: def __init__(self, sig_pin): self.pwm = PWM(Pin(sig_pin),duty_u16=0) def play(self, melodies, wait, duty=32767): for note in melodies: if note != 0: self.pwm.freq(note) self.pwm.duty_u16(duty) sleep_ms(wait) # Disable the pulse, setting the duty to 0 self.pwm.duty_u16(0) # Disconnect the pwm driver #self.pwm.deinit() # remove to play the next melodies def tone(self, notes, wait, duty=32767): self.pwm.freq(notes) self.pwm.duty_u16(duty) sleep_ms(wait) self.pwm.duty_u16(0) """ bz = Buzzer(23) print("Playing mario.") bz.play(mario, 150, 32767) sleep_ms(1000) print("Playing jingle bells.") bz.play(jingle, 250, 32767) sleep_ms(1000) print("Playing twinkle, twinkle little star.") bz.play(twinkle, 600, 32767) """
development/python/micropython/buzzer.txt · Last modified: 2024/08/23 14:34 by tungnt