44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
# SPDX-FileCopyrightText: 2021 Kattni Rembor for Adafruit Industries
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
"""
|
|
Circuit Playground Bluefruit NeoPixel Sound Meter
|
|
|
|
Talk or make noise close to your Circuit Playground Bluefruit to see the NeoPixels light up.
|
|
"""
|
|
from adafruit_circuitplayground import cp
|
|
|
|
# Choose a color. Defaults to red. This is an RGB value, where (r, g, b) represents red, green,
|
|
# and blue. Each value has a range of 0-255, where 0 is off and 255 is max intensity. You can
|
|
# update these values to change the colors. For example, (0, 255, 0) would be max green. You can
|
|
# combine numbers within the range to make other colors such as (255, 0, 180) being pink.
|
|
# Try it out!
|
|
color_value = (255, 0, 0)
|
|
|
|
# This is the sound level needed to light up all 10 NeoPixels. If all the LEDs are lighting up too
|
|
# easily, increase this value to make it more difficult to reach the max. If you are only able to
|
|
# light up a few LEDs, decrease this value to make it easier to reach the max. Full possible sound
|
|
# range is 0 - 65535.
|
|
sound_max = 1500
|
|
|
|
cp.pixels.auto_write = False
|
|
cp.pixels.brightness = 0.3
|
|
|
|
|
|
def scale_range(value):
|
|
"""Scale a value from 0-sound_max (chosen sound range) to 0-9 (NeoPixel range).
|
|
Allows remapping sound value to pixel position.
|
|
Full sound range is 0 - 65535. sound_max should be chosen based on testing."""
|
|
return round(value / sound_max * 9)
|
|
|
|
|
|
while True:
|
|
peak = scale_range(cp.sound_level)
|
|
|
|
for pixel in range(10):
|
|
if pixel <= peak:
|
|
cp.pixels[pixel] = color_value
|
|
else:
|
|
cp.pixels[pixel] = (0, 0, 0) # Off
|
|
cp.pixels.show()
|