python - 将 LED 灯带映射到灯带长度和高度不同的矩阵
问题描述
我正在尝试解决 36 x 48 LED 矩阵,但 LED 灯条的长度为 64 LED。所以,我必须在矩阵周围缠绕 LED。然后我必须逐个处理每个条带。我想不出一种方法(除了手动映射数组)在 Python 中对这个数组进行建模。我没有很好地解释它,所以这里有一些视觉效果。
example data (where strip = height)
pixel_vals=
{strip_1:[[1] [2] [3] [4] ] 1 2 3 4
strip_2:[[1] [2] [3] [4] ] = 1 2 3 4
strip_3:[[1] [2] [3] [4] ]} 1 2 3 4
vs how its actually setup (where strip != height) ▼▲◄►■
1 1 2 2 strip_1:[[1] [2] [3] [4] [5]] ▼ ► ▼ ■
2 5 3 1 = strip_2:[[1] [2] [3] [4] [5]] = ▼ ■ ▼ ▲ (block represent end of a strip)
3 4 4 5 strip_3:[[1] [2]] ► ▲ ► ■
解决方案
提示:
从您神秘的描述中,我似乎推断您用三个条带(总共 192 个 LED)填充四列(高度 48),曲折。更具体地说,使用基于 0 的索引,条带填充以下段:
(0, 0) 到 (0, 47),然后 (1, 47) 到 (1, 31);
(1, 32) 到 (1, 0),然后 (2, 0) 到 (2, 31);
(2, 32) 到 (2, 47),然后是 (3, 47) 到 (3, 0)。
此块重复九次。
如果您通过替换每隔一列翻转,事情就会变得简单得多if X & 1: Y= 47 - Y
。现在您必须将 36 x 48 数组映射到 27 x 64。这可以通过将 X、Y 转换为单个数字 N = 48 * X + Y 并使用 S = N // 64、L = N 分解来完成% 64. 你可以很容易地算出逆向变换。
推荐阅读
- c# - 寻找最佳实践 - C# - 将文件读取到对象,编辑并保存回 - 不是 XML,Json
- testing - Testcafe 不能与 Yarn 2 一起运行
- php - 为 css 和 js 文件名添加时间 - 它是如何工作的
- laravel - 如何操作 axios 返回的数据以所需的格式打印
- nginx - 如何获取部分网址?(nginx,重写,lua)
- haskell - 尝试对其键的子集进行镜头/遍历映射多重更新
- f# - 如何用货币对实体建模?
- python - 如何在彼此旁边绘制条形图?
- c# - 数据绑定期间“调用目标引发异常”
- django - 在 Django 中,登录后将用户重定向到上一页