Back to: Multiplier Event Luxembourg
import math
import time
from adafruit_circuitplayground import cp
# These are the frequencies of the three notes.
note1 = 261.63
note2 = 293.66
note3 = 329.63
# If the balance board tilts beyond "tilt" degrees, different notes will be played.
tilt = 7
# Time (in seconds) to keep a horizontal position before note2 is played.
# This allows to switch from note1 to note3 (or vice versa) without playing note2.
horizontal = 0.7
# Initialise note, now and sound.
note = 0
now = time.monotonic()
sound = False
# Loop forever
while True:
if cp.button_a:
sound = True
elif cp.button_b:
cp.stop_tone()
cp.pixels.fill((0, 0, 0))
sound = False
if not sound:
continue
# Initialise a_x, a_y, and a_z.
a_x = 0
a_y = 0
a_z = 0
# Take 10 measurements for a_x, a_y, and a_z.
for count in range(10):
x, y, z = cp.acceleration
a_x = a_x + x
a_y = a_y + y
a_z = a_z + z
time.sleep(0.02)
# Calculate the average of the 10 measurements.
a_x = a_x / 10
a_y = a_y / 10
a_z = a_z / 10
# Compute acceleration using norm.
acceleration = math.sqrt(a_x*a_x + a_y*a_y + a_z*a_z)
# Compute 𝛼 (atan returns radians), convert it to degrees,
# then convert it to an integer.
alpha = int(math.degrees(math.atan(a_x / a_z)))
# The board's tilt determines the note played and the color of the NeoPixels.
if alpha > tilt:
if note != 3:
note = 3
cp.stop_tone()
cp.pixels.fill((220, 20, 60))
cp.start_tone(note3)
now = time.monotonic()
elif alpha < -tilt:
if note != 1:
note = 1
cp.stop_tone()
cp.pixels.fill((0, 128, 0))
cp.start_tone(note1)
now = time.monotonic()
else:
if note != 2:
note = 2
cp.stop_tone()
if (now + horizontal) > time.monotonic():
cp.pixels.fill((255, 99, 71))
cp.start_tone(note2)
import math
import time
from adafruit_circuitplayground import cp
# These are the frequencies of the three notes.
note1 = 261.63
note2 = 293.66
note3 = 329.63
# If the balance board tilts beyond "tilt" degrees, different notes will be played.
tilt = 7
# Time (in seconds) to keep a horizontal position before note2 is played.
# This allows to switch from note1 to note3 (or vice versa) without playing note2.
horizontal = 0.7
# Initialise note, now and sound.
note = 0
now = time.monotonic()
sound = False
# Loop forever
while True:
if cp.button_a:
sound = True
elif cp.button_b:
cp.stop_tone()
cp.pixels.fill((0, 0, 0))
sound = False
if not sound:
continue
# Initialise a_x, a_y, and a_z.
a_x = 0
a_y = 0
a_z = 0
# Take 10 measurements for a_x, a_y, and a_z.
for count in range(10):
x, y, z = cp.acceleration
a_x = a_x + x
a_y = a_y + y
a_z = a_z + z
time.sleep(0.02)
# Calculate the average of the 10 measurements.
a_x = a_x / 10
a_y = a_y / 10
a_z = a_z / 10
# Compute acceleration using norm.
acceleration = math.sqrt(a_x*a_x + a_y*a_y + a_z*a_z)
# Compute 𝛼 (atan returns radians), convert it to degrees,
# then convert it to an integer.
alpha = int(math.degrees(math.atan(a_x / a_z)))
# The board's tilt determines the note played and the color of the NeoPixels.
if alpha > tilt:
if note != 3:
note = 3
cp.stop_tone()
cp.pixels.fill((220, 20, 60))
cp.start_tone(note3)
now = time.monotonic()
elif alpha < -tilt:
if note != 1:
note = 1
cp.stop_tone()
cp.pixels.fill((0, 128, 0))
cp.start_tone(note1)
now = time.monotonic()
else:
if note != 2:
note = 2
cp.stop_tone()
if (now + horizontal) > time.monotonic():
cp.pixels.fill((255, 99, 71))
cp.start_tone(note2)
import math import time from adafruit_circuitplayground import cp # These are the frequencies of the three notes. note1 = 261.63 note2 = 293.66 note3 = 329.63 # If the balance board tilts beyond "tilt" degrees, different notes will be played. tilt = 7 # Time (in seconds) to keep a horizontal position before note2 is played. # This allows to switch from note1 to note3 (or vice versa) without playing note2. horizontal = 0.7 # Initialise note, now and sound. note = 0 now = time.monotonic() sound = False # Loop forever while True: if cp.button_a: sound = True elif cp.button_b: cp.stop_tone() cp.pixels.fill((0, 0, 0)) sound = False if not sound: continue # Initialise a_x, a_y, and a_z. a_x = 0 a_y = 0 a_z = 0 # Take 10 measurements for a_x, a_y, and a_z. for count in range(10): x, y, z = cp.acceleration a_x = a_x + x a_y = a_y + y a_z = a_z + z time.sleep(0.02) # Calculate the average of the 10 measurements. a_x = a_x / 10 a_y = a_y / 10 a_z = a_z / 10 # Compute acceleration using norm. acceleration = math.sqrt(a_x*a_x + a_y*a_y + a_z*a_z) # Compute 𝛼 (atan returns radians), convert it to degrees, # then convert it to an integer. alpha = int(math.degrees(math.atan(a_x / a_z))) # The board's tilt determines the note played and the color of the NeoPixels. if alpha > tilt: if note != 3: note = 3 cp.stop_tone() cp.pixels.fill((220, 20, 60)) cp.start_tone(note3) now = time.monotonic() elif alpha < -tilt: if note != 1: note = 1 cp.stop_tone() cp.pixels.fill((0, 128, 0)) cp.start_tone(note1) now = time.monotonic() else: if note != 2: note = 2 cp.stop_tone() if (now + horizontal) > time.monotonic(): cp.pixels.fill((255, 99, 71)) cp.start_tone(note2)