Diana Khalipina
Published © GPL3+

Star Wars Theme Music Generator

How to make your micro:bit work as a touch-activated music generator, that plays Star Wars theme.

BeginnerFull instructions provided1 hour398
Star Wars Theme Music Generator

Things used in this project

Hardware components

BBC micro:bit board
BBC micro:bit board
×1
2AA Battery Holder for RTC
UDOO 2AA Battery Holder for RTC
×1
Buzzer
Buzzer
×1
Test Probe Connector, Crocodile Clip
Test Probe Connector, Crocodile Clip
×3
Jumper wires (generic)
Jumper wires (generic)
×1

Story

Read more

Schematics

Circuit diagram for music playing micro:bit

Code

Code for music playing Micro:bit

Python
from microbit import *
import time

def beep (pin, noteFrequency, noteDuration, sleepDuration = 100):
  microsecondsPerWave = 1e6/noteFrequency
  millisecondsPerCycle = 1000/(microsecondsPerWave * 2)
  loopTime = noteDuration * millisecondsPerCycle
  for x in range(loopTime):
    pin.write_digital(1)
    time.sleep_us(int(microsecondsPerWave))
    pin.write_digital(0)
    time.sleep_us(int(microsecondsPerWave))
  sleep(sleepDuration)

def BuzzerStarWars(pin):
  SW_NOTES = [293.66, 293.66, 293.66, 392.0, 622.25, 554.37, 523.25, 454, 932.32, 622.25, 554.37, 523.25, 454, 932.32, 622.25, 554.37, 523.25, 554.37, 454]
  SW_DURATION = [180, 180, 180, 800, 800, 180, 180, 180, 800, 400, 180, 180, 180, 800, 400, 180, 180, 180, 1000]
  SW_SLEEP = [40, 40, 40, 100, 100, 40, 40, 40, 100, 50, 40, 40, 40, 100, 50, 40, 40, 40, 100]
  for i in range(len(SW_NOTES)):
    beep(pin, SW_NOTES[i], SW_DURATION[i], SW_SLEEP[i])

def BuzzerGamme(pin):
  G_NOTES = [261.63, 293.66, 329.54, 349.23, 392, 440, 493.88, 523.25]
  for i in range(len(G_NOTES)):
    beep(pin, G_NOTES[i], 250, 50)

def BuzzerR2D2(pin):
  R2D2_NOTES = [3520, 3135.96, 2637.02, 2093, 2349.32, 3951.07, 2793.83, 4186.01, 3520, 3135.96, 2637.02, 2093, 2349.32, 3951.07, 2793.83, 4186.01]
  for i in range(len(R2D2_NOTES)):
    beep(pin, R2D2_NOTES[i], 80, 20)


while True:
  if pin0.is_touched():
    BuzzerStarWars(pin0)
  if pin1.is_touched():
    BuzzerGamme(pin1)
  if pin2.is_touched():
    BuzzerR2D2(pin2)

Credits

Diana Khalipina

Diana Khalipina

11 projects • 44 followers
Je suis une ingénieure, je passe maintenant du temps à développer des projets de santé basés sur des arduinos et à créer des sites.

Comments

Add projectSign up / LoginAbout BBC micro:bit