Skip to content

Commit aa17a9e

Browse files
removed most globals
1 parent adde71f commit aa17a9e

File tree

1 file changed

+25
-30
lines changed

1 file changed

+25
-30
lines changed

Disco_Tie/code.py

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
# User input vars
2626
mode = 0 # 0=audio, 1=rainbow, 2=larsen_scanner, 3=solid
2727
user_color= (127,0,0)
28-
speed = 6.0 # for larsen scanner
2928

3029
# Audio meter vars
3130
PEAK_COLOR = (100, 0, 255)
@@ -100,18 +99,17 @@ def wheel(wheel_pos):
10099
b = int(255 - wheel_pos*3)
101100
return (r, g, b)
102101

103-
def rainbow_cycle(wait):
102+
def rainbow_cycle(delay):
104103
for j in range(255):
105104
for i in range(NUM_PIXELS):
106105
pixel_index = (i * 256 // NUM_PIXELS) + j
107106
pixels[i] = wheel(pixel_index & 255)
108107
pixels.show()
109-
time.sleep(wait)
108+
time.sleep(delay)
110109

111-
def audio_meter():
110+
def audio_meter(new_peak):
112111
mic.record(samples, len(samples))
113112
magnitude = normalized_rms(samples)
114-
global peak
115113

116114
# Compute scaled logarithmic reading in the range 0 to NUM_PIXELS
117115
c = log_scale(constrain(magnitude, input_floor, input_ceiling),
@@ -123,13 +121,14 @@ def audio_meter():
123121
if i < c:
124122
pixels[i] = volume_color(i)
125123
# Light up the peak pixel and animate it slowly dropping.
126-
if c >= peak:
127-
peak = min(c, NUM_PIXELS - 1)
128-
elif peak > 0:
129-
peak = peak - 1
130-
if peak > 0:
131-
pixels[int(peak)] = PEAK_COLOR
124+
if c >= new_peak:
125+
new_peak = min(c, NUM_PIXELS - 1)
126+
elif new_peak > 0:
127+
new_peak = new_peak - 1
128+
if new_peak > 0:
129+
pixels[int(new_peak)] = PEAK_COLOR
132130
pixels.show()
131+
return new_peak
133132

134133
pos = 0 # position
135134
direction = 1 # direction of "eye"
@@ -140,10 +139,9 @@ def larsen_set(index, color):
140139
else:
141140
pixels[index] = color
142141

143-
def larsen(wait):
142+
def larsen(delay):
144143
global pos
145144
global direction
146-
147145
color_dark = (int(user_color[0]/8), int(user_color[1]/8),
148146
int(user_color[2]/8))
149147
color_med = (int(user_color[0]/2), int(user_color[1]/2),
@@ -159,7 +157,7 @@ def larsen(wait):
159157
larsen_set(pos + 2, color_dark)
160158

161159
pixels.write()
162-
time.sleep(wait)
160+
time.sleep(delay)
163161

164162
# Erase all and draw a new one next time
165163
for j in range(-2, 2):
@@ -176,24 +174,21 @@ def larsen(wait):
176174
pos = NUM_PIXELS - 2
177175
direction = -direction
178176

179-
def solid():
180-
global user_color
181-
pixels.fill(user_color)
177+
def solid(new_color):
178+
pixels.fill(new_color)
182179
pixels.show()
183180

184181
def map_value(value, in_min, in_max, out_min, out_max):
185182
out_range = out_max - out_min
186183
in_range = in_max - in_min
187184
return out_min + out_range * ((value - in_min) / in_range)
188185

189-
def change_speed(val):
190-
global speed
191-
new_speed = speed + val
192-
if new_speed > 10.0:
193-
new_speed = 10.0
194-
elif new_speed < 1.0:
195-
new_speed = 1.0
196-
speed = new_speed
186+
speed = 6.0
187+
wait = 0.097
188+
189+
def change_speed(mod, old_speed):
190+
new_speed = constrain(old_speed + mod, 1.0, 10.0)
191+
return(new_speed, map_value(new_speed, 10.0, 0.0, 0.01, 0.3))
197192

198193
while True:
199194
# While BLE is *not* connected
@@ -214,9 +209,9 @@ def change_speed(val):
214209
elif isinstance(packet, ButtonPacket):
215210
if packet.pressed:
216211
if packet.button == ButtonPacket.UP:
217-
change_speed(1)
212+
speed, wait = change_speed(1, speed)
218213
elif packet.button == ButtonPacket.DOWN:
219-
change_speed(-1)
214+
speed, wait = change_speed(-1, speed)
220215
elif packet.button == ButtonPacket.BUTTON_1:
221216
mode = 0
222217
elif packet.button == ButtonPacket.BUTTON_2:
@@ -228,10 +223,10 @@ def change_speed(val):
228223

229224
# Determine animation based on mode
230225
if mode == 0:
231-
audio_meter()
226+
peak = audio_meter(peak)
232227
elif mode == 1:
233228
rainbow_cycle(0.001)
234229
elif mode == 2:
235-
larsen(map_value(speed, 10.0, 0.0, 0.01, 0.3))
230+
larsen(wait)
236231
elif mode == 3:
237-
solid()
232+
solid(user_color)

0 commit comments

Comments
 (0)