动画一圈灯光

时间:2017-12-10 16:53:01

标签: math

我正在尝试为一组RGB LED创建一些基本动画。正常的线性动画很简单,使用循环和计数器来改变灯光颜色。

我所拥有的是一个由24个LED组成的环,并且希望能够对它们应用动画,以便从上到下或从一侧到另一侧(基本上任何给定的方向)发生效果,例如简单的颜色擦拭。

除了存储每个“行”LED的数组外,我还没有任何值得分享的进展:

0 => 0
1 => 1, 23
2 => 2, 22
3 => 3, 21
and so on

这是一个粗略的解决方案,我希望有更好的方法可能使用cos / tan。

我的问题是如何从上到下(或从任何n度开始)执行动画时按顺序寻址每个LED。

1 个答案:

答案 0 :(得分:1)

如果您想从单个数字(角度)到一对数字(圆圈上的点的坐标),则三角函数是相关的。您的LED地址似乎是0到23范围内的单个数字。它们基本上是角度(每360/24 = 15度,因此您不需要角度来协调转换。

你需要的是一种模拟旋转对称的方法,但这只是模数运算(工作模式24)。为了给出一些想法,这里有一个Python脚本,可以用来“擦除”24个点中的任何一个:

def wipe_from(i):
    leds = [[i]]
    for j in range(1,12):
        leds.append([(i+j) % 24, (i-j) % 24])
    leds.append([(i+12)%24])
    return leds

例如,wipe_from(0)对应您已有的内容,wipe_from(5)为:

[[5], [6, 4], [7, 3], [8, 2], [9, 1], [10, 0], [11, 23], [12, 22], [13, 21], [14, 20], [15, 19], [16, 18], [17]]