我目前正在进行一个项目,以无线方式控制我的新像素灯。在我的一个函数中有一个无限循环来创建彩虹效果。唯一的问题是,当需要调用下一个函数(即关闭灯)时,程序不会停止在第一个循环中循环。我想知道是否有可能通过内部函数停止函数的运行,以及如何执行。如果有人能给我帮助,我将不胜感激
提前感谢,, 亨利G
这是我的密码:
from flask import Flask
import board
import neopixel
import time
# Choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D18
pixel_pin = board.D18
# The number of LEDs
num_pixels = 20
# The order of the LED colors - RGB or GRB. Some LED Strips - like ours - have red and green reversed!
ORDER = neopixel.GRB
pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.7, auto_write=False, pixel_order=ORDER)
app = Flask(__name__)
rainOn = False
triggered = False
go = False
@app.route('/')
def index():
return 'Hello world'
@app.route('/rgb/<r>/<g>/<b>')
def color(r, g, b):
global go
go = False
global pixels
pixels.fill((int(r), int(g), int(b)))
pixels.show()
return 'The color you have chosen is now showing!'
@app.route('/off')
def off():
global go
global rainOn
rainOn = False
go = False
global pixels
pixels.fill((0, 0, 0))
pixels.show()
return 'The lights are now off!'
@app.route('/rainbow')
def rainbow():
global go
global triggered
global rainOn
rainOn = True
triggered = True
go = True
while go == True:
def end():
go = False
return
def wheel(pos):
if pos < 0 or pos > 255:
r = g = b = 0
elif pos < 85:
r = int(pos * 3)
g = int(255 - pos*3)
b = 0
elif pos < 170:
pos -= 85
r = int(255 - pos*3)
g = 0
b = int(pos*3)
else:
pos -= 170
r = 0
g = int(pos*3)
b = int(255 - pos*3)
return (r, g, b) if ORDER == neopixel.RGB or ORDER == neopixel.GRB else (r, g, b, 0)
def rainbow_cycle(wait):
global rainOn
global triggered
global go
if go == True and triggered == True and rainOn == True:
for j in range(255 ** 255):
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
pixels[i] = wheel(pixel_index & 255)
pixels.show()
time.sleep(wait)
elif go == False or triggered == False or rainOn == False:
end()
while rainOn == True and triggered == True and go == True:
rainbow_cycle(0.0035)
return 'Rainbow off'
return 'Done'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
目前没有回答
相关问题 更多 >
编程相关推荐