OverviewFilesCommitsIssuesDocsReleasesPeers

cthuloid commits / a53f781

adding in work files from last show
a53f7817164bf82872e8d3db0367d1366396d811
by plankatron <fleeky@gmail.com> · 2019-06-28T20:16:30.000Z

Changed files (39) +377 -91

LightArm/blender/quad-light.blend +0 -0
(no content changes — binary or rename)
LightArm/blender/quad-light.blend1 +0 -0
(no content changes — binary or rename)
LightArm/blender/rgb_white_quad_light.blend +0 -0
(no content changes — binary or rename)
LightArm/blender/rgb_white_quad_light.blend1 +0 -0
(no content changes — binary or rename)
LightArm/blender/rgb_white_quad_light1.blend +0 -0
(no content changes — binary or rename)
LightArm/python/pwmfade-up.py +1 -1
……@@ -19,7 +19,7 @@ try:
1919 interval = .03 #seconds
2020 maxpwm = 65535
2121 minpwm = 2000
22 inc = 1000
22 inc = 100
2323 i = minpwm
2424 while i<=maxpwm:
2525 for sock in sockets:
cuemgr/config.py +4 -2
……@@ -1,9 +1,11 @@
11config = {
22 'LightArms': [
3 {'address':'10.0.0.167', 'numChannels':12},
3 #{'address':'10.0.0.167', 'numChannels':12},
44
55 # this is how you would define a light arm
6 #{'address':'10.0.0.161', 'numChannels':3, 'numServos':2, 'inversions':[False, False]}
6 {'address':'10.0.0.30', 'numChannels':12, 'numServos':2, 'inversions':[False, False]},
7 {'address':'10.0.0.31', 'numChannels':12, 'numServos':2, 'inversions':[False, False]},
8 {'address':'10.0.0.63', 'numChannels':12, 'numServos':2, 'inversions':[False, False]},
79 ],
810
911 'DMX': {'universes': [1]},
cuemgr/cue.py +44 -15
……@@ -15,9 +15,9 @@ We unfortunately use the word 'cue' in two different ways:
1515import sys, os, threading, ast, time, subprocess, random
1616from console import *
1717from lightarm import Arms
18from dmx import DMX
18#from dmx import DMX
1919from pivideo import Video
20#from prinboo import Prinboo
20from prinboo import Prinboo
2121
2222#########################################################################################################
2323# helpers
……@@ -202,7 +202,7 @@ class CueFade(CueLoad):
202202
203203 # called by the thread created in run()
204204 def __call__(self):
205 timestep = 1/30.0
205 timestep = 1/35.0
206206 printPeriodPeriod = .25
207207 printPeriodTimestepCount = printPeriodPeriod / timestep
208208 startTime = time.time()
……@@ -323,6 +323,7 @@ class CuePrinboo(CueLoad):
323323
324324 timestep = 1. / self.framerate
325325 vel = 1
326 if self.line == 'left' or self.line == 'right': vel = 5
326327
327328 # Signal the previous thread to exit, and hand it to the next threadV
328329 # so it can wait.
……@@ -338,7 +339,7 @@ class PrinbooLimbsThread(threading.Thread):
338339 self.prevThread = prevThread
339340 if isinstance(poses, dict): poses = [poses] # convert one frame into a list of frames
340341 self.poses = poses
341 self.vel = 5#vel
342 self.vel = vel
342343 self.timestep = .05#timestep
343344
344345 self.shouldExit = False
……@@ -359,7 +360,7 @@ class PrinbooLimbsThread(threading.Thread):
359360 #endTime = startTime + self.period
360361 nextTime = startTime + self.timestep
361362
362 NumIds = 2
363 NumIds = 9
363364
364365 def popRandom(li):
365366 i = random.randint(0, len(li)-1)
……@@ -448,17 +449,46 @@ class PrinbooLimbsThread(threading.Thread):
448449# time.sleep(nextTime - time.time())
449450
450451
451class CueVideo(CueLoad):
452 """Play a video by running a shell command"""
452class CueRemoteVideo(CueLoad):
453 """Play a video by running a shell command to communicate with omxd"""
453454
454 player = "/usr/bin/omxplayer"
455 #player = "/usr/bin/omxplayer"
455456
456457 def __init__(self, line):
457458 CueLoad.__init__(self, line)
459 tokens = line.split()
460 if len(tokens) < 3:
461 raise BaseException('needs IP address and filename')
462
463 self.address = tokens[1]
464 self.filename = restAfterWord(tokens[1], line)
465
466 def load(self):
467 pass #maybe check file exists
468 def run(self, immediate=False):
469 Video.playVideo(self.filename, self.address)
470
471class CueLocalVideo(CueLoad):
472 """Play a video by running VLC"""
473
474 player = 'vlc'
475 headless = '--qt-start-minimized'
476
477 def __init__(self, line):
478 CueLoad.__init__(self, line)
479 tokens = line.split()
480 if len(tokens) < 2:
481 raise BaseException('needs filename')
482
483 self.filename = restAfterWord(tokens[0], line)
484
458485 def load(self):
459486 pass #maybe check file exists
460487 def run(self, immediate=False):
461 Video.playVideo(self.filename)
488 if Video.VlcProcess:
489 Video.VlcProcess.kill()
490 if self.filename != 'off':
491 Video.VlcProcess = subprocess.Popen([self.player, self.headless, self.filename])
462492
463493def cmdCue(line, CueClass):
464494 """instantiate a type of cue and run it immediately"""
……@@ -486,9 +516,7 @@ def cmdSave(tokens, line):
486516 text += ",\n 'DMX': " + str(DMX.get())
487517 except: pass
488518
489 try:
490 text += ",\n 'Limbs': " + str(Prinboo.limbs)
491 except: pass
519 text += ",\n 'Limbs': " + str(Prinboo.limbs)
492520
493521 text += "\n}\n"
494522 #text = "{\n 'version': 0,\n 'DMX': " + dmx + ",\n 'LightArm': {\n 'Servos': " + str(ucServos) + ",\n 'LEDs': " + str(ucLEDs) + "\n }\n}"
……@@ -506,7 +534,8 @@ def cmdSave(tokens, line):
506534CueClassMap = {
507535 'load':CueLoad,
508536 'fade':CueFade,
509 #'limbs':CuePrinboo,
510 #'c':CuePrinboo,
511 'video':CueVideo,
537 'limbs':CuePrinboo,
538 'c':CuePrinboo,
539 'video':CueRemoteVideo,
540 'audio':CueLocalVideo,
512541}
cuemgr/cuemgr.py +44 -49
……@@ -15,9 +15,7 @@ TODO:
1515
1616"""
1717
18
19
20import sys, os, os.path, threading, ast, time, signal
18import sys, os, os.path, threading, ast, time, signal, paramiko
2119from console import *
2220from cue import *
2321from cueengine import CueEngine
……@@ -28,11 +26,12 @@ CuesFilename = 'cuesheet.txt' #initial cuesheet automatically loaded
2826
2927CueMgr = CueEngine()
3028
31#try:
32# from prinboo import Prinboo
33#except ImportError:
34Prinboo = None
35# print('No Prinboo')
29#Prinboo = None
30try:
31 from prinboo import Prinboo
32except (ImportError, paramiko.ssh_exception.NoValidConnectionsError) as e:
33 Prinboo = None
34 print('No Prinboo')
3635
3736try:
3837 from pivideo import Video
……@@ -45,10 +44,10 @@ except ImportError:
4544 Arms = None
4645 print('No LightArms')
4746
48try: from dmx import DMX
49except KeyError:
50 DMX = None
51 print('No DMX')
47#try: from dmx import DMX
48#except:
49DMX = None
50print('No DMX')
5251
5352# call initialize outside of try-except to show errors to user
5453if Arms: Arms.initialize(config)
……@@ -97,7 +96,7 @@ class LightArmView(View):
9796 self.ixCursor = 0
9897 self.iyCursor = 0
9998
100 self.inc = LinearStateMachine([1, 5, 20])
99 self.inc = LinearStateMachine([1, 5, 20, 100, 1000])
101100
102101 # map names to servo vector indices
103102 ServoDims = {'x':1, 'y':0}
……@@ -155,7 +154,7 @@ class LightArmView(View):
155154
156155 # add increment to the intensity of the currently selected arm(s)
157156 def modI(self, inc, channel):
158 #print('ids:', self.selected())
157 print('ids:', self.selected())
159158 for id in self.selected():
160159 try: v = Arms.getChannel(id, channel)
161160 except IndexError: return
……@@ -170,10 +169,8 @@ class LightArmView(View):
170169 ch = ch.lower()
171170 if ch == 'x':
172171 self.toggleMode()
173 if ch == 'q':
172 elif ch == 'q':
174173 for id in self.selected(): Arms.relax(id)
175 if ch == '0':
176 pass #Arms.setAngles(self.selected(), [Arms.ServoCenter] * len(self.ServoDims))
177174 elif ch == 'w':
178175 self.modAngle('y', self.inc())
179176 elif ch == 's':
……@@ -229,23 +226,23 @@ class LightArmView(View):
229226
230227 if self.inSingleMode():
231228 for i in range(numArms):
232 if i == self.ixCursor: print('===|', end='')
233 else: print('---|', end='')
229 if i == self.ixCursor: print('=====|', end='')
230 else: print('-----|', end='')
234231 else:
235232 for i in range(numArms):
236233 if self.inGroup(i):
237 if self.inGroup(i+1, i): print('====', end='')
238 else: print('===|', end='')
239 else: print('---|', end='')
234 if self.inGroup(i+1, i): print('======', end='')
235 else: print('=====|', end='')
236 else: print('-----|', end='')
240237 print('')
241238
242239 def printAngle(dim, index):
243240 try:
244241 angle = self.getAngle(dim, index)
245 if angle < 1: print('XXX|', end='')
246 else: print('{0:^3}|'.format(angle), end='')
242 if angle < 1: print('XXXXX|', end='')
243 else: print('{0:^5}|'.format(angle), end='')
247244 except:
248 print('---|', end='')
245 print('-----|', end='')
249246
250247 print(' Light Arm View')
251248 printHSep(False)
……@@ -272,7 +269,7 @@ class LightArmView(View):
272269 for channel in range(Arms.MaxChannels):
273270 print(names[channel] + ': |', end='')
274271 for i in range(numArms):
275 try: print('{0:^3}|'.format(Arms.getChannel(i, channel)), end='')
272 try: print('{0:^5}|'.format(Arms.getChannel(i, channel)), end='')
276273 except: print('---|', end='')
277274 print('')
278275 printHSep(channel+1 != Arms.MaxChannels)
……@@ -548,27 +545,25 @@ class CueView(View):
548545 elif ch == ',' or ch == '<':
549546 CueMgr.prevScene()
550547
551# # Prinboo live controls
552# elif ch == 'w':
553# Prinboo.screen.togglePlayback()
554# elif ch == 'a':
555# Prinboo.motors.incSpeed()
556# elif ch == 'd':
557# Prinboo.motors.decSpeed()
558# elif ch == 's':
559# Prinboo.motors.stop()
560# elif ch == '\x1b':
561# seq = getch() + getch()
562# if seq == '[A': # up arrow
563# Prinboo.motors.forward()
564# elif seq == '[B': # down arrow
565# Prinboo.motors.backward()
566# elif seq == '[C': # left arrow
567# Prinboo.motors.turnLeft()
568# elif seq == '[D': # right arrow
569# Prinboo.motors.turnRight()
570
571
548 # Prinboo live controls
549 elif ch == 'w':
550 Prinboo.screen.togglePlayback()
551 elif ch == 'a':
552 Prinboo.motors.incSpeed()
553 elif ch == 'd':
554 Prinboo.motors.decSpeed()
555 elif ch == 's':
556 Prinboo.motors.stop()
557 elif ch == '\x1b':
558 seq = getch() + getch()
559 if seq == '[A': # up arrow
560 Prinboo.motors.forward()
561 elif seq == '[B': # down arrow
562 Prinboo.motors.backward()
563 elif seq == '[C': # left arrow
564 Prinboo.motors.turnRight()
565 elif seq == '[D': # right arrow
566 Prinboo.motors.turnLeft()
572567
573568 def handleLineInput(self, line):
574569 pass
……@@ -592,9 +587,9 @@ def programExit():
592587
593588if __name__ == '__main__':
594589 if len(sys.argv) > 1 and sys.argv[1] == 'prinboo':
595 views = [CueView(), LightArms()]
590 views = [CueView(), PrinbooView()]
596591 else: #default is dmx mode
597 views = [CueView(), LightArmView()]
592 views = [CueView(), LightArmView(), PrinbooView()]
598593 if DMX: views.append(SliderView())
599594 currentView = views[0]
600595
cuemgr/cuesheet.txt +163 -9
……@@ -1,12 +1,166 @@
11scene Start
2 load off
2 seq
3 load off
4 audio off
5 video 10.0.0.162 black
6 video 10.0.0.173 black
7scene One
8 seq
9 audio /home/cayuga/cayuga-lasty/queen.mp3
10 video 10.0.0.162 coco.mp4
11 video 10.0.0.173 coco.mp4
12 fade 5 funeral
13scene fade
14 seq
15 fade 5 off
16 video 10.0.0.162 roses.mp4
17 video 10.0.0.173 roses.mp4
18 audio off
19scene onehalf
20 seq
21 audio /home/cayuga/cayuga-lasty/c.ogg
22scene Two
23 seq
24 audio /home/cayuga/cayuga-lasty/waltz.mp3
25 fade temp
26scene fade1
27 seq
28 fade 5 off
29 video 10.0.0.162 roses.mp4
30 video 10.0.0.173 roses.mp4
31 audio off
32scene three
33 seq
34 audio /home/cayuga/cayuga-lasty/fly.mp3
35 fade 5 tree
36scene fade2
37 seq
38 fade 5 off
39 video 10.0.0.162 roses.mp4
40 video 10.0.0.173 roses.mp4
41 audio off
42scene four
43 seq
44 audio /home/cayuga/cayuga-lasty/crab.mp3
45scene fade3
46 seq
47 fade 5 off
48 video 10.0.0.162 roses.mp4
49 video 10.0.0.173 roses.mp4
50 audio off
51scene five
52 seq
53 audio /home/cayuga/cayuga-lasty/bill.mp3
54 fade 5 aircorn
55scene fade4
56 seq
57 fade 5 off
58 video 10.0.0.162 roses.mp4
59 video 10.0.0.173 roses.mp4
60 audio off
61scene sixa
62 seq
63 audio /home/cayuga/cayuga-lasty/seacreature.mp3
64scene six
65 seq
66 audio /home/cayuga/cayuga-lasty/fool.mp3
67 fade 5 tealblue
68scene fade5
69 seq
70 fade 5 off
71 video 10.0.0.162 roses.mp4
72 video 10.0.0.173 roses.mp4
73 audio off
74scene seven
75 seq
76 audio /home/cayuga/cayuga-lasty/thereis.mp3
77 fade 5 airpurple
78scene fade6
79 seq
80 fade 5 off
81 audio /home/cayuga/cayuga-lasty/shipdown.mp3
82 video 10.0.0.162 roses.mp4
83 video 10.0.0.173 roses.mp4
84scene eight
85 seq
86 audio /home/cayuga/cayuga-lasty/maggie.mp3
87 fade 5 brightcorn
88scene fade7
89 seq
90 fade 5 off
91 video 10.0.0.162 roses.mp4
92 video 10.0.0.173 roses.mp4
93 audio off
94scene nine
95 seq
96 audio /home/cayuga/cayuga-lasty/skeleton.mp3
97 fade 5 s-bar
98scene fade8
99 seq
100 fade off
101 video 10.0.0.162 roses.mp4
102 video 10.0.0.173 roses.mp4
103 audio off
104scene ninehalf
105 seq
106 audio /home/cayuga/cayuga-lasty/biancaintro.mp3
107scene ten
108 seq
109 audio /home/cayuga/cayuga-lasty/printboowaiting.mp3
110 fade 5 sidered
111scene fade9
112 seq
113 fade 5 off
114 video 10.0.0.162 roses.mp4
115 video 10.0.0.173 roses.mp4
116 audio off
117scene 11
118 seq
119 audio /home/cayuga/cayuga-lasty/greg-blue.mp3
120 fade 5 supblue
121scene fade10
122 seq
123 fade 5 off
124 video 10.0.0.162 roses.mp4
125 video 10.0.0.173 roses.mp4
126 audio off
127scene 12
128 seq
129 audio /home/cayuga/cayuga-lasty/letsgetlost.mp3
130 fade 5 aircorn
131scene fade11
132 seq
133 fade 5 off
134 video 10.0.0.162 roses.mp4
135 video 10.0.0.173 roses.mp4
136 audio off
137scene prefinale
138 seq
139 audio /home/cayuga/cayuga-lasty/royals.mp3
140 fade 5 brightcorn
141scene fade12
142 seq
143 fade 5 off
144 audio off
145scene 13
146 seq
147 audio /home/cayuga/cayuga-lasty/greglanding.mp3
148scene 13one
149 seq
150 audio /home/cayuga/cayuga-lasty/bianca_final.mp3
151scene 13two
152 seq
153 audio /home/cayuga/cayuga-lasty/fly.mp3
154 fade 5 tree
155scene fade12
156 seq
157 fade 5 off
158 video 10.0.0.162 roses.mp4
159 video 10.0.0.173 roses.mp4
160 audio off
161scene finale
162 seq
163 audio /home/cayuga/cayuga-lasty/castlesburning.mp3
164 fade 5 finale
3165
4scene All
5 seq
6 fade 3 testboth
7 video rachshort.mp4
8166
9scene Closing
10 seq
11 fade 5 off
12 video black
cuemgr/lightarm.py +5 -3
……@@ -22,7 +22,7 @@ class NetworkArm:
2222
2323 # this class doesn't limit the Channel values
2424 MinChannelValue = 0
25 MaxChannelValue = 999
25 MaxChannelValue = 65534
2626
2727 def fitServoRange(v): return max(212, min(812, v))
2828 def fitChannelRange(v): return max(0, min(NetworkArm.MaxChannelValue, v))
……@@ -69,10 +69,11 @@ class NetworkArm:
6969 self.socket.close()
7070
7171 # input range is 0-999
72 # output range is 0-65535
72 # output range is 0-65534
7373 def toHighFreq(self, pwm):
7474 #return int(10535 + pwm / 999 * 55000)
75 return int(pwm / 999 * 65535)
75 #return int(pwm / 999 * 65534)
76 return int(pwm)
7677
7778 def getChannels(self): return list(self.channels)
7879 def getChannel(self, channel): return self.channels[channel]
……@@ -94,6 +95,7 @@ class NetworkArm:
9495 cmd = 'pwm '
9596 for i in self.channels:
9697 cmd += str(self.toHighFreq(i)) + ' '
98 #print(cmd)
9799 self.send(cmd)
98100
99101 def relax(self):
cuemgr/pivideo.py +10 -5
……@@ -59,16 +59,21 @@ class Screens:
5959 cls._singleton = object.__new__(cls)
6060 return cls._singleton
6161
62 def __init__(self): self.screens = None
62 def __init__(self):
63 self.screens = None
64 self.VlcProcess = None
6365
6466 def initialize(self, configDict):
65 self.screens = [Screen('10.0.0.19'), Screen('10.0.0.22')]
67 self.screens = {} #[Screen('10.0.0.19'), Screen('10.0.0.22')]
6668
67 def playVideo(self, filename):
68 for s in self.screens: s.sendVideoCommand(filename)
69 def playVideo(self, filename, targetIp):
70 if not self.screens.get(targetIp):
71 self.screens[targetIp] = Screen(targetIp)
72
73 self.screens[targetIp].sendVideoCommand(filename)
6974
7075 def exit(self):
71 for s in self.screens: s.exit()
76 for address,s in self.screens.items(): s.exit()
7277
7378Video = Screens()
7479
cuemgr/prinboo.py +4 -2
……@@ -124,7 +124,7 @@ class Screen:
124124 ssh = paramiko.SSHClient()
125125 self.ssh = ssh
126126 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
127 ssh.connect(address, username='pi', password='tankgirl')
127 ssh.connect(address, username='pi', password='raspberry')
128128 # start playing immediately
129129 self.play('~/cthuloid/ghettopticon/blender/prinboo-talking.mp4')
130130 #except paramiko.ssh_exception.NoValidConnectionsError:
……@@ -148,7 +148,7 @@ class Screen:
148148 self.stdin.write('q')
149149 #ssh.close()
150150
151class Prinboo:
151class PrinbooClass:
152152 def __init__(self, address):
153153 self.limbs = LimbServos(address)
154154 self.motors = Motors(address)
……@@ -164,6 +164,8 @@ class Prinboo:
164164 self.thread.exit()
165165 if self.limbsThread: self.limbsThread.exit()
166166
167Prinboo = PrinbooClass('10.0.0.23')
168
167169if __name__ == '__main__':
168170 addr = 'localhost'
169171 #p = Prinboo(addr, '')
cuemgr/scenes/aircorn +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [62038,0,20000,65534,34289,0,65534,54315,0,36009,0,20000], 'servos': [512, 512]}}
4}
cuemgr/scenes/airpurple +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,18051,20000,18051,0,20000,65534,0,11974,62591,0,20000], 'servos': [512, 512]}}
4}
cuemgr/scenes/armsopen +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'Limbs': {1: 102, 2: 176, 3: 0, 4: 80, 5: 0, 6: 0, 7: 89, 8: 116, 9: 137, 10: 180, 11: 124}
4}
cuemgr/scenes/blue +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [999, 0, 0, 999, 0, 0, 999, 0, 0, 999, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [999, 0, 0, 999, 0, 0, 999, 0, 0, 999, 0, 0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [999, 0, 0, 999, 0, 0, 999, 0, 0, 999, 0, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/blurpurp +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [657,111,0,203,69,0,55281,10674,0,25086,0,8219], 'servos': [512, 512]}, '10.0.0.31': {'channels': [278,0,54,278,0,38,14988,0,6528,55281,0,36], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/brightcorn +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0,0,0,65534,6242,0,65534,8686,0,65534,3334,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [56942,0,6891,0,0,0,1518,8581,20000,65534,2,7696], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/coy +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'Limbs': {1: 102, 2: 176, 3: 0, 4: 3, 5: 0, 6: 0, 7: 89, 8: 180, 9: 135, 10: 35, 11: 124}
4}
cuemgr/scenes/finale +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0,0,0,65534,6242,0,65534,8686,0,65534,3334,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [56942,0,6891,0,0,0,1518,8581,20000,65534,2,7696], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/funeral +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 18051, 20000, 18051, 0, 20000, 65534, 0, 11974, 62591, 0, 20000], 'servos': [512, 512]}}
4}
cuemgr/scenes/gemiah +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [56942,2314,0,65534,6242,0,65534,8686,0,65534,3334,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [3916, 0, 77, 212, 0, 29, 0, 16656, 20000, 0, 15960, 19997], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 01, 0, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/green +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0, 999, 0, 0, 999, 0, 0, 999, 0, 0, 999, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0, 999, 0, 0, 999, 0, 0, 999, 0, 0, 999, 0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 999, 0, 0, 999, 0, 0, 999, 0, 0, 999, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/grenben +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0, 0, 0, 0, 0, 0, 0, 879, 999, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/left +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'Limbs': {1: 26, 2: 176, 3: 0, 4: 3, 5: 0, 6: 0, 7: 89, 8: 180, 9: 135, 10: 174, 11: 124},
4}
cuemgr/scenes/lotson +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [999, 979, 620, 999, 999, 0, 999, 999, 0, 699, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [999, 979, 620, 999, 999, 0, 999, 999, 0, 699, 0, 0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [999, 979, 620, 999, 999, 0, 999, 999, 0, 699, 0, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/neutral +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'Limbs': {1: 102, 2: 176, 3: 0, 4: 3, 5: 0, 6: 0, 7: 89, 8: 180, 9: 135, 10: 174, 11: 124}
4}
cuemgr/scenes/off +1 -2
……@@ -1,5 +1,4 @@
11{
22 'version': 0,
3 'DMX': None,
4 'LightArm': {'10.0.2.2': {'servos': [512, 512], 'intensity': 0}, '10.0.2.6': {'servos': [512, 512], 'intensity': 0}, '10.0.2.3': {'servos': [512, 512], 'intensity': 0}, '10.0.2.4': {'servos': [512, 512], 'intensity': 0}, '10.0.2.5': {'servos': [512, 512], 'intensity': 0}}
3 'LightArms': {'10.0.0.30': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}}
54}
cuemgr/scenes/red +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0, 0, 999, 0, 0, 999, 0, 0, 999, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [0, 0, 999, 0, 0, 999, 0, 0, 999, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 0, 999, 0, 0, 999, 0, 0, 999, 0, 0, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/right +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'Limbs': {1: 166, 2: 176, 3: 0, 4: 3, 5: 0, 6: 0, 7: 89, 8: 180, 9: 135, 10: 174, 11: 124},
4}
cuemgr/scenes/s-bar +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [27526, 0, 788, 28093, 0, 1134, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [27526, 0, 788, 28093, 0, 1134, 0, 0, 0, 0, 0, 0,], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'servos': [512, 512]}}
4}
cuemgr/scenes/sidered +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [657,111,0,203,69,0,4064,0,20000,471,101,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [278,0,54,278,0,38,0,850,20000,2674,0,20000], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/stars +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'Limbs': {1: 141, 2: 73, 3: 76, 4: 106, 5: 6, 6: 26, 7: 89, 8: 111, 9: 135, 10: 176, 11: 124}
4}
cuemgr/scenes/supblue +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [657,111,0,203,69,0,65534,4779,0,65534,1423,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [278,0,54,278,0,38,65534,0,123,65534,11770,0], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/tealblue +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [657,111,0,203,69,0,0,28958,651,29118,16058,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [278,0,54,21912,65534,0,0,9771,8750,239,0,47], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/temp +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [657,111,0,203,69,0,0,26164,20000,0,16140,20000], 'servos': [512, 512]}, '10.0.0.31': {'channels': [278,0,54,278,0,38,0,16656,20000,0,15962,20000], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
cuemgr/scenes/tree +4 -0
……@@ -0,0 +1,4 @@
1{
2 'version': 0,
3 'LightArms': {'10.0.0.30': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}, '10.0.0.31': {'channels': [278,0,54,0,0,0,0,12121,20000,239,0,47], 'servos': [512, 512]}, '10.0.0.63': {'channels': [0,0,0,0,0,0,0,0,0,0,0,0], 'servos': [512, 512]}}
4}
esp32/32wifi12frak/32wifi12frak.ino +5 -3
……@@ -4,8 +4,10 @@
44#include <WiFi.h>
55#include <ESPmDNS.h>
66#include <WiFiClient.h>
7#include "/Users/jmzorko/work/circusautomatic/hardware/espressif/esp32/tools/sdk/include/soc/soc/rtc.h"
7//#include "/Users/jmzorko/work/circusautomatic/hardware/espressif/esp32/tools/sdk/include/soc/soc/rtc.h"
88//#include "/home/fleeky/Arduino/hardware/espressif/esp32/tools/sdk/include/freertos/freertos/task.h"
9//#include "/home/cayuga/.arduino15/packages/esp32/hardware/esp32/1.0.1/tools/sdk/include/soc/soc/rtc.h"
10#include "/home/fleeky/Arduino/hardware/espressif/esp32/tools/sdk/include/soc/soc/rtc.h"
911
1012const char* ssid = "ubitron";
1113const char* password = "superduper";
……@@ -26,8 +28,8 @@ const int timeout = 30;
2628#define RED_MAX_PWM 65534
2729#define MAX_PWM 65534
2830
29constexpr int NumPeriods = 3; // number of steps in fade
30constexpr int PeriodLength = 1; // sleep for this many ms
31constexpr int NumPeriods = 1; // number of steps in fade
32constexpr int PeriodLength = 10; // sleep for this many ms
3133
3234//////////////////////////////////////////////////////////////////////////////////////
3335int freq = 20000;