Skip to content

Commit

Permalink
add rainbow and theatre chaser pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
Warwick Stone committed Oct 22, 2018
1 parent 7e26f7b commit 61b0654
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
8 changes: 8 additions & 0 deletions flask_pixel_server/flask-app.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ def set_all():
pixelservice.set_all(int(r), int(g), int(b))
return "OK"

@app.route('/setpattern', methods=['POST'])
def set_pattern():
name = request.args.get('name')
if not name:
return 'invalid pattern name', 400
pixelservice.set_pattern(name)
return "OK"


if __name__ == '__main__':
args = ArgParser(DESCRIPTION).parse_args()
Expand Down
26 changes: 26 additions & 0 deletions flask_pixel_server/pixel_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
sys.path.append('..')

from presenter import Pixel
import pixel_patterns.pixel_strip_patterns as patterns


class PixelService:
Expand All @@ -30,6 +31,10 @@ def set_all(self, r, g, b):
self.generator = ConstantValueGenerator(self.num_pixels)
self.generator.set_all(r, g, b)

def set_pattern(self, name):
self.generator = PatternGenerator(self.num_pixels)
self.generator.set_pattern(name)

def _generate(self):
return self.generator.generate()

Expand All @@ -46,3 +51,24 @@ def set_all(self, r, g, b):
p.rgb[0] = r
p.rgb[1] = g
p.rgb[2] = b


class PatternGenerator:
def __init__(self, num_pixels):
self.num_pixels = num_pixels
self.patterns = {
'rainbow': lambda: patterns.Rainbow(self.num_pixels),
'colorwipe': lambda: patterns.ColorWiper(self.num_pixels, Pixel(100, 0, 100), 50),
'rainbow_cycle': lambda: patterns.RainbowCycle(self.num_pixels),
'theatre': lambda: patterns.TheatreChaser(self.num_pixels, Pixel(100, 0, 100), 50)
}
self.generator = self._get_generator('rainbow')

def set_pattern(self, name):
self.generator = self._get_generator(name)

def generate(self):
return self.generator.generate()

def _get_generator(self, name):
return self.patterns[name]()
8 changes: 8 additions & 0 deletions flask_pixel_server/static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ <h1>Pi Lights</h1>

<button id="btn-off" type="button" class="btn btn-primary btn-lg btn-black">OFF</button>
<button id="btn-red" type="button" class="btn btn-primary btn-lg btn-red">All red</button>
<button id="btn-rainbow" type="button" class="btn btn-primary btn-lg">Rainbow</button>
<button id="btn-theatre" type="button" class="btn btn-primary btn-lg">Theatre</button>

<div>
<label for="rrange">Red</label>
Expand Down Expand Up @@ -44,6 +46,12 @@ <h1>Pi Lights</h1>
$('#btn-red').on('click', function(e) {
$.post('setall?color=red');
});
$('#btn-rainbow').on('click', function(e) {
$.post('setpattern?name=rainbow');
});
$('#btn-theatre').on('click', function(e) {
$.post('setpattern?name=theatre');
});
$('input[type=range]').on('input', function () {
postSliderValues();
});
Expand Down

0 comments on commit 61b0654

Please sign in to comment.