bbm2Chaosknoten
Stefan Schuermans authored 5 years ago
|
1) #! /usr/bin/env python3
2)
3) import argparse
4) import struct
5) import sys
6)
7)
8) class Movie(object):
9) class Frame(object):
10)
11) LED_COORDS = [
12) 408, 414, 420, 468, 492, 677, 684, 863, 945, 951, 957, 963, 971,
13) 975, 1034, 1209, 1215, 1221, 1227, 1259, 1299, 1304, 1373, 1469,
14) 1476, 1497, 1572, 1633, 1656, 1680, 1728, 1734, 1740, 1832, 1968,
15) 2106, 2163, 2225, 2365, 2559, 2620, 2956
16) ]
17)
18) LED_COORDS_OUT = [
19) [408, 407, 409], [414, 413, 415], [420, 419, 421], [468, 533, 403],
20) [492, 425, 559], [677, 610, 744], [684, 617, 751], [863, 797, 929],
21) [945, 944, 946], [951, 950, 952], [957, 956, 958], [963, 962, 964],
22) [971, 904, 1038], [975, 908, 1042], [1034, 967, 1101],
23) [1209, 1208, 1210], [1215, 1214, 1216], [1221, 1220, 1222],
24) [1227, 1226, 1228], [1259, 1193, 1325], [1299, 1298, 1300],
25) [1304, 1369, 1239], [1373, 1438, 1308], [1469, 1534, 1404],
26) [1476, 1541, 1411], [1497, 1496, 1498], [1572, 1637, 1507],
27) [1633, 1698, 1568], [1656, 1589, 1723], [1680, 1745, 1615],
28) [1728, 1727, 1729], [1734, 1733, 1735], [1740, 1739, 1741],
29) [1832, 1897, 1767], [1968, 1901, 2035], [2106, 2105, 2107],
30) [2163, 2097, 2229], [2225, 2290, 2160], [2365, 2299, 2431],
31) [2559, 2493, 2625], [2620, 2619, 2621], [2956, 2889, 3023]
32) ]
33)
34) def __init__(self):
35) self.duration = 100
36) self.leds = len(self.LED_COORDS) * [0]
37)
38) def from_frame_data(self, duration, data):
39) self.duration = duration
40) for i in range(len(self.LED_COORDS)):
41) ledno = self.LED_COORDS[i]
42) self.leds[i] = data[ledno * 3 + 1]
43)
44) def to_frame_data(self):
45) pixels = 51 * 66 * [0, 0, 255]
46) for i in range(len(self.LED_COORDS_OUT)):
47) for ledno in self.LED_COORDS_OUT[i]:
48) pixels[ledno * 3 + 0] = self.leds[i]
49) pixels[ledno * 3 + 1] = self.leds[i]
50) pixels[ledno * 3 + 2] = 0
51) data = bytes(pixels)
52) return self.duration, data
53)
54) def to_firmware_data(self):
|