#!/usr/bin/env python3

from neopixel import *
import math, time

ledpin  = 18
numrows,ledsrow, frequency = 16, 18, 16
numleds = numrows * ledsrow
arrayMatrix = [Color (0,0,0)] * numleds

def showLeds(arrayMatrix):
    for j in range (18):
        for i in range (0, 8):
            stick.setPixelColor(i*18*2+j, arrayMatrix[i*18*2+j])
            stick.setPixelColor(18+i*18*2+18-j-1, arrayMatrix[18+i*18*2+j])
    stick.show()

stick = Adafruit_NeoPixel(numleds, ledpin, 800000, 5, False, 64)
stick.begin()

while True:
    for t in range (360):
        for y in range(ledsrow):
            for x in range(numrows):
                z1 = math.sin((t+x)/frequency*1.8*math.pi)
                z2 = math.sin(((t+x)/3+(t+y))/frequency*1.4*math.pi)
                z3 = math.sin((t+y)/frequency*0.1*math.pi)

                z = abs(z1+z2+z3)*192
                r = int(z/4)
                g = int(z)
                b = int(z*4)

                arrayMatrix [x*18+y] = Color(r,g,b)

        showLeds(arrayMatrix)
        time.sleep (.2)
