我正在开发一个带有 8 个 LED 的 arduino 项目,这些 LED 将循环显示一组 4 种颜色。我创建了一个颜色数组,并试图找出是否有一种编程方法来计算数组中的下一个元素
LED | 循环0 | 循环1 | 循环2 | 循环3 |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
1 | 1 | 2 | 3 | 0 |
2 | 2 | 3 | 0 | 1 |
3 | 3 | 0 | 1 | 2 |
4 | 0 | 1 | 2 | 3 |
5 | 1 | 2 | 3 | 0 |
6 | 2 | 3 | 0 | 1 |
7 | 3 | 0 | 1 | 2 |
第一个循环(循环 0)使用模数公式
loop + pixel % 4
(即 0 + 0 % 4
、0 + (1 % 4)
等)。但在随后的循环中,数字不会正确重复。比如说
LED | 想要的 | 公式 | 结果 |
---|---|---|---|
0 | 1 | 1 + (0 % 4) | 1 |
1 | 2 | 1 + (1 % 4) | 2 |
2 | 3 | 1 + (2%4) | 3 |
3 | 0 | 1 + (3 % 4) | 4 |
4 | 1 | 1 + (4 % 4) | 1 |
5 | 2 | 1 + (5 % 4) | 2 |
6 | 3 | 1 + (6 % 4) | 3 |
7 | 0 | 1 + (7 % 4) | 4 |
一切正常,直到我们到达 led 3,其中所需的结果是 0,但我得到 4。当我想要时,下一个循环(循环 2)会产生 2, 3, 4, 5, 2, 3, 4, 5 2, 3, 0, 1, 2, 3, 0, 1.
我在互联网上找不到任何信息,因为我不知道该问什么。我尝试过寻找重复序列,但不断得到与这个问题无关的结果。
有一个优雅的数学解决方案吗?
是的。我认为这完成了任务
(loop+pixel)%4