|
楼主 |
发表于 2009-11-3 15:11:48
|
显示全部楼层
部分理论分析
首先看一张总体图
(原文件名:20091103B.PNG)
12个半圆的6圈方案其实我已经预谋很久了
为了减少过孔的数量,我选择了下图中这种连接方式
同一角度上的两个LED是反向并联的
(原文件名:20091103C.PNG)
这120个LED便分成60组,每组的控制线都不能相同,如果相同这两组就无法独立控制
我一直寻找这种布线方法,能使60组都能独立控制,并且假设12条线都是对称的
尝试过12线、13线、15线、16线方案都未果
编了个小程序搜索也没有找到(现在看是程序有问题,这个解是存在的)
搜索对称解无果,以为不存在对称解,暴力搜索全部非对称解在时间复杂度上时不可行的
无奈之下,我把这个问题重新描述,请教了Matrix67大侠
“一幅图,60个格子排成一个圈,现要将这60个格子都涂上颜色
要求:
1、相邻的格子颜色不同
2、每种颜色组合(两个相邻的格子)只能出现一次
例如某格子为红色,其一侧相邻的格子为绿色,则此图中不允许在任何位置再出现红色格子与绿色格子相邻
问:
最少要多少种颜色才能完成此图的上色
最好能举个上色实例
我可以肯定所需的颜色数不少于12种,但简单搜索了一下,无果”
Matrix67大侠回复我了一个通解的生成方法,和一个非对称解的实例
“10, 6, 11, 5, 8, 6, 9, 5, 12, 6, 7, 12, 8, 9, 7, 10, 11, 9, 12, 10, 8, 11, 7, 5, 3, 1, 10, 2, 11, 1, 8, 2, 9, 1, 4, 2, 5, 1, 6, 2, 7, 1, 12, 2, 3, 10, 4, 11, 3, 8, 4, 9, 3, 6, 4, 7, 3, 12, 4, 5
算法:生成K_11的欧拉回路,然后在里面插入第12个节点”
图形化之后就是楼主位的第一张图
(原文件名:20091102C.PNG)
这个图的含义
每种颜色(棕 红 橙 黄 绿 蓝 紫 灰 白[浅灰] 黑[深灰] 金 银[淡蓝])分别代表1-12号控制线,黑块代表过孔
12行代表怀表从边缘到中心的空间
60列代表60组LED缝隙间的线
本质上就是怀表PCB的背面布线
直接压缩的话大概可以压到8圈
经适当优化后可以压到6圈半
外圈倒是解决了,但内圈的12个LED可就麻烦了
因为外圈布线没有考虑里面这12个,所以想把他们接上很费力
所以还是要重新计算,从一开始就把里面的12个LED算进去
不过从M67的解法可以看出,这个问题解的数量非常多,所以找到应该还是不难的
先把12个半圈画出来,按之前的经验留出给内圈LED的过孔,然后慢慢往上加过孔
(原文件名:20091103E.PNG)
思路已经确定,后面就容易了,感觉有点像做数独,很快就填满了
验算顺利通过,画成PCB
原版PCB23,对称性修正版PCB24(修正布线,为了保证回流焊时位置准确、不易立碑)
布线分析:
因为采用的是逐点扫描结构,每根扫描线和其他11根扫描线之间都有一对二极管
(原文件名:20091103D.PNG)
因为12根线是完全对称的,不一一贴图了
PCB23、PCB24源文件下载
点击此处下载 ourdev_499245.rar(文件大小:163K) (原文件名:20091103A.rar) |
|