In [109]:
#!/usr/bin/env python
# This is gross

import math
import numpy as np

In [642]:
def fcPixelLine(per_strand_list, offset):
    opc_per = 64
    internalOffset = offset
    listOfStrings = []

    for i, per_strand in enumerate(per_strand_list):
        string = '[ 0, %i , %i , %i , \"brg\" ],' %(offset + per_strand * i, opc_per * i, per_strand)
        internalOffset = internalOffset + per_strand
        listOfStrings.append(string)
    
    for string in listOfStrings:
        print(string)
        
    return internalOffset

In [644]:
def ledCombiner(listOfStruct):
    listOfNumLeds = []
    listOfNumLedsPerStructure = []
    
    for i, structure in enumerate(listOfStruct):
        names = list(structure.keys())
        name = names[0]
        listOfNumLedsPerStructure.append(len(structure[name][0]))
        for numLeds in structure[name][0]:
            listOfNumLeds.append(numLeds)

    channelCount = len(listOfNumLeds)

    return channelCount, listOfNumLedsPerStructure, listOfNumLeds

In [659]:
def fcOPCCounter(listOfStruct, channelScheme, offset, fcCounter):
    channelCount, numChannelsStruct, ledPerChannel = ledCombiner(listOfStruct)
    
    listOfStrings = []
    counter = 0
    for numChannel in channelScheme:
        counterNew = counter + numChannel
        numOfLeds = ledPerChannel[counter:counter + numChannel]
        counter += numChannel
        print('Fadecandy ' + str(fcCounter))
        fcCounter += 1
        offset = fcPixelLine(numOfLeds, offset)
        print()
        
        
    
        
    return offset, fcCounter

In [682]:
carousel_top          = {"carousel_top"          : [np.ones(18) * 34]}
carousel_bottom_lower = {"carousel_bottom_lower" : [np.ones(6) * 30]}
carousel_bottom_upper = {"carousel_bottom_upper" : [np.ones(6) * 6]}
inner_bench           = {"inner bench"           : [np.array([10, 12])]}
outer_bench           = {"outer bench"           : [np.array([32, 34, 36])]}
kScope                = {"kScope"                : [np.array([24])]}
lampPost              = {"lampPost"              : [np.ones(7) * 19]}

buildSequence_1 = [carousel_top]
buildSequence_2 = [carousel_bottom_lower, carousel_bottom_upper, inner_bench, inner_bench, inner_bench]
buildSequence_3 = [lampPost, lampPost, lampPost]
buildSequence_4 = [outer_bench, kScope, outer_bench, kScope, outer_bench, kScope]

In [683]:
offset = 0
fcCounter = 0
offset, fcCounter = fcOPCCounter(buildSequence_1, [8,8,2], offset, fcCounter)
offset, fcCounter = fcOPCCounter(buildSequence_2, [8,4,6], offset, fcCounter)
offset, fcCounter = fcOPCCounter(buildSequence_3, [7,7,7], offset, fcCounter)
offset, fcCounter = fcOPCCounter(buildSequence_4, [4,4,4], offset, fcCounter)


Fadecandy 0
[ 0, 0 , 0 , 34 , "brg" ],
[ 0, 34 , 64 , 34 , "brg" ],
[ 0, 68 , 128 , 34 , "brg" ],
[ 0, 102 , 192 , 34 , "brg" ],
[ 0, 136 , 256 , 34 , "brg" ],
[ 0, 170 , 320 , 34 , "brg" ],
[ 0, 204 , 384 , 34 , "brg" ],
[ 0, 238 , 448 , 34 , "brg" ],

Fadecandy 1
[ 0, 272 , 0 , 34 , "brg" ],
[ 0, 306 , 64 , 34 , "brg" ],
[ 0, 340 , 128 , 34 , "brg" ],
[ 0, 374 , 192 , 34 , "brg" ],
[ 0, 408 , 256 , 34 , "brg" ],
[ 0, 442 , 320 , 34 , "brg" ],
[ 0, 476 , 384 , 34 , "brg" ],
[ 0, 510 , 448 , 34 , "brg" ],

Fadecandy 2
[ 0, 544 , 0 , 34 , "brg" ],
[ 0, 578 , 64 , 34 , "brg" ],

Fadecandy 3
[ 0, 612 , 0 , 30 , "brg" ],
[ 0, 642 , 64 , 30 , "brg" ],
[ 0, 672 , 128 , 30 , "brg" ],
[ 0, 702 , 192 , 30 , "brg" ],
[ 0, 732 , 256 , 30 , "brg" ],
[ 0, 762 , 320 , 30 , "brg" ],
[ 0, 648 , 384 , 6 , "brg" ],
[ 0, 654 , 448 , 6 , "brg" ],

Fadecandy 4
[ 0, 804 , 0 , 6 , "brg" ],
[ 0, 810 , 64 , 6 , "brg" ],
[ 0, 816 , 128 , 6 , "brg" ],
[ 0, 822 , 192 , 6 , "brg" ],

Fadecandy 5
[ 0, 828 , 0 , 10 , "brg" ],
[ 0, 840 , 64 , 12 , "brg" ],
[ 0, 848 , 128 , 10 , "brg" ],
[ 0, 864 , 192 , 12 , "brg" ],
[ 0, 868 , 256 , 10 , "brg" ],
[ 0, 888 , 320 , 12 , "brg" ],

Fadecandy 6
[ 0, 894 , 0 , 19 , "brg" ],
[ 0, 913 , 64 , 19 , "brg" ],
[ 0, 932 , 128 , 19 , "brg" ],
[ 0, 951 , 192 , 19 , "brg" ],
[ 0, 970 , 256 , 19 , "brg" ],
[ 0, 989 , 320 , 19 , "brg" ],
[ 0, 1008 , 384 , 19 , "brg" ],

Fadecandy 7
[ 0, 1027 , 0 , 19 , "brg" ],
[ 0, 1046 , 64 , 19 , "brg" ],
[ 0, 1065 , 128 , 19 , "brg" ],
[ 0, 1084 , 192 , 19 , "brg" ],
[ 0, 1103 , 256 , 19 , "brg" ],
[ 0, 1122 , 320 , 19 , "brg" ],
[ 0, 1141 , 384 , 19 , "brg" ],

Fadecandy 8
[ 0, 1160 , 0 , 19 , "brg" ],
[ 0, 1179 , 64 , 19 , "brg" ],
[ 0, 1198 , 128 , 19 , "brg" ],
[ 0, 1217 , 192 , 19 , "brg" ],
[ 0, 1236 , 256 , 19 , "brg" ],
[ 0, 1255 , 320 , 19 , "brg" ],
[ 0, 1274 , 384 , 19 , "brg" ],

Fadecandy 9
[ 0, 1293 , 0 , 32 , "brg" ],
[ 0, 1327 , 64 , 34 , "brg" ],
[ 0, 1365 , 128 , 36 , "brg" ],
[ 0, 1365 , 192 , 24 , "brg" ],

Fadecandy 10
[ 0, 1419 , 0 , 32 , "brg" ],
[ 0, 1453 , 64 , 34 , "brg" ],
[ 0, 1491 , 128 , 36 , "brg" ],
[ 0, 1491 , 192 , 24 , "brg" ],

Fadecandy 11
[ 0, 1545 , 0 , 32 , "brg" ],
[ 0, 1579 , 64 , 34 , "brg" ],
[ 0, 1617 , 128 , 36 , "brg" ],
[ 0, 1617 , 192 , 24 , "brg" ],


In [677]:


In [ ]: