一种带呼吸效果的触控式旋转流水灯的制作方法

文档序号:8200039阅读:560来源:国知局
专利名称:一种带呼吸效果的触控式旋转流水灯的制作方法
技术领域
本发明涉及电子产品领域,尤其涉及一种手机上带呼吸效果的触控式旋转流水 灯。
背景技术
传统的手机灯光多半是跑马灯一类的开关控制,单个灯的状态非关即开,状态很 是单一,整个灯光系统的控制流程也比较单一。呼吸灯芯片是最近才在手机上应用的控制灯光效果的器件,有了它,灯的状态将 再也不是单一的开关亮灭,而是从熄灭到全亮或从全亮到熄灭的线性变化过程。真正实现 了呼吸效果,它使整个灯光系统的播放显得更加平缓流畅,例如在MP3音乐播放的时候,当 音乐节奏较慢的时候,可以把呼吸灯控制成均勻的呼吸效果,当音乐节奏较快的时候,可以 把呼吸灯控制成急促的呼吸效果。所以有了呼吸灯,灯光的显示效果将大大改善。触摸屏是大家司空见惯的电子设备,以前常常和液晶显示联系在一起,作为人机 输入设备。这里第一次把它和灯光特效联系在一起,作为灯光特效非常重要的控制输入设 备,它的优点显而易见。首先它是很多消费类电子产品的标配,无须添加其他任何元器件, 大大节省了成本;其次它大大扩大了输入方式的灵活性与多样性,iPhone就是一个很好的 例子,触屏几乎无所不能,画圈,画线,画点等等只要算法合理就能构造出意想不到的效果。 这里仅仅涉及到画圈的算法。

发明内容
针对已有技术的不足,本发明的目的在于提供一种带呼吸效果的触控式旋转流水 灯,采用呼吸灯光芯片与触摸屏输入的组合,给灯光显示带来意想不到的效果,大大推进了 手机以往传统的灯光效果。本发明的发明目的是通过如下技术方案实现的一种带呼吸效果的触控式旋转流水灯,包括手机面板和流水灯,在手机面板上设 有22颗led灯,上下各三颗,左右各八颗,由该22颗灯构成一个矩形联通管。八路可单独 控制的呼吸灯芯片SC620 —片,M0SFET管4片,平台自带触控芯片MT6301 —片。所述的0 号灯到7号灯这八颗灯由SC620控制,同时11号灯到18号灯这八颗灯也由SC620控制,从 0号到7号灯设置总开关M0SFET0,从11到18号灯设置总开关M0SFET2,这样就可以分开控 制了,M0SFET0和M0SFET2不能同时打开,只能开其中一个。同理8号到10号灯由PMU的 RGB 口控制,19号到21号灯也由该RGB 口控制,同时8号到10号灯由M0SFET1总开关控制, 19号到21号灯由M0SFET3总开关控制。所述的带有尾巴的流星从矩形管一边流到邻边的过程中,拐角处两边灯光无缝连接。当手指在触摸屏上任意触动时,都会带动面板上相应的四颗灯进行流行式运动, 其中最头一颗是“彗核”(头灯),后面三颗是“彗尾”(尾灯),就犹如流星划过夜空时拖拽出慧尾一样的效果,而当该灯静止不动的时候,该尾巴又要慢慢地缩短并消失。单看每颗灯 都要有呼吸灯中呼的效果,即从最亮渐渐变暗,直至熄灭的过程。


图1为本发明的结构示意图;图2为本发明流水灯的状态效果图;图3为本发明直角坐标系划分成四个象限示意图;图4为本发明另一种坐标系示意图。1-手机面板 2-灯
具体实施例方式下面结合附图进一步说明本发明是如何实现的实施例如图1所示,本发明包括手机面板1和流水灯2,形参” drip_site”是这22颗灯 的ID号,我们给每颗灯都分配了一个ID号,分别从0到21,代表了这22颗灯。例如drip_ site传进来是”3”,那么就代表现在流星位于三号灯的位置,这样流星的任意位置就可以用 drip_site 来描述了。再看形参” drip_dir”,这个参数描述了现在流星的运动方向或流星静止前的运动 方向。如图2所示,我们规定顺时针方向为负(0),逆时针方向为正(1),这个”drip_dir”其 实是为了描述尾巴而设计的,举例来说当流星处于”3”号位时,他如果正从上往下运动(此 时逆时针,drip_dir等于1),那么这条尾巴就应该紧跟在流星上方,如果正从下往上运动 (此时顺时针,drip_dir等于0),那么这条尾巴就应该紧跟在流星下方。最后看一下” drip_State”,该参数描述了流星是处于运动状态还是渐渐熄灭的状 态,我们规定当流星处于运动状态时,尾巴最长,后面拖三颗尾灯(尾灯亮度依次变暗),此 时”drip_State”为0 ;当流星刚刚由运动转为静止时,尾巴缩短一点,后面拖两颗尾灯(尾 灯亮度依次变暗,更暗了),此时” drip_State”为1 ;再接着尾巴继续缩短,后面拖一颗尾 灯(尾灯亮度最暗了),此时” drip_State”为2 ;最后完全静止,后面一颗尾灯都没了,此 时,,drip_state” 为 3。至于参数” drip_dim”,在为每颗灯产生呼吸效果的时候,发挥了非常重要的作用, 将在后面描述。由此可见”drip_site”,”drip_dir”,”drip_state”这三个参数就可以把“水滴式 流水灯“的每一种状态效果都描述出来。我们知道驱动是和硬件密切相关的,所以下面我们来看看这22盏灯的硬件是如 何连接的,以便下面着手写驱动。大家可能有疑问了 呼吸灯芯片SC620不是只有独立的八路控制吗,现在要独立 控制22盏灯只用一块SC620,是怎么做到的?为了节约成本,硬件上引入了 PMU上的RGB灯,该三颗灯是由PMU内部的PWM控制 的。这样SC620的八颗灯加上三颗RGB灯也才11颗灯,怎么才能达到22颗等呢?此时我 们硬件上又引入了 M0SFET对称控制。
如图2所示0号灯到7号灯这八颗灯由SC620控制,同时11号灯到18号灯这八颗 灯也由SC620控制,这样不是会有冲突吗?不会,我们给0到7号灯加个总开关M0SFET0,给 11到18号灯也加一个总开关M0SFET2,这样就可以分开控制了,缺点是M0SFET0和M0SFET2 不能同时打开,只能开其中一个。同理8到10号灯由PMU的RGB 口控制,19到21也由该 RGB 口控制,同时8到10号灯由M0SFET1总开关控制,19到21号灯由M0SFET3总开关控制。这一硬件布局解决了“难点1”:带有尾巴的流星从矩形管一边流到邻边的过程中, 拐角处两边灯光无缝连接问题。比如当流星正从左向右运动至9号灯位置时,分别要把9, 8,7,6这四颗灯点亮,其中9号是流星,8,7,6尾灯。此时只要把M0SFET0和M0SFET1打开, 分别控制相应的SC620和PMU即可。(1)代码编写1)首先构建一个22维的数组” pipe_array[22] ”,依次对应22颗灯,根据四个行 参” drip_site”,“drip_dir”,“drip_state”,“drip_dim” 的要求把对应要点亮的灯的亮度 填写进去。于是我们得到数组元素为0的表示熄灭,元素不为0的表示点亮,并且数值的大 小反映了灯的亮度。这其实就是一个编码器。2)有了编好的码(22维数组),下面就好办多了,首先检测a,b,c, d四边是否有 亮灯(因为每边的驱动控制方法不一样)。3)没亮灯的边,直接M0SFET关掉,有亮灯的边,打开M0SFET,把该边在pipe_ array [22]中对应的一段数据写入SC620或PMU的寄存器。(2)其他这里我们再次提到第四个行参” drip_dim”,看他在呼吸效果中发挥的作用。假设 有一条强度为{30,12,6,2}的流星及其拖起的尾巴从3号灯由上往下流过,那么3号灯的 亮度会由30降至12再降至6再降至2,最后降至0熄灭,可见由最亮至最暗也就四个等级, 不是很连贯,呼的效果不明显,但如果再插入四个等级,形成八个等级的细分{30,12,8,6, 4,2,1},呼的效果将好的多,于是我们把插入的数提取出来另成数组{30,8,4,1}由” drip_ dim”控制,当drip_dim等于0的时候给对应的灯打入{30,12,6,2},当drip_dim等于1的 时候,给对应的灯打入{30,8,4,1},两者交替进行,八个等级的细分亮度便出来了。(3)控制模块(动作引擎)动作引擎主要是参考流星上次的灯位,根据这次采样到触碰点的位置,依据一定 算法得出流星目的灯位,来推算出流星这次的物理状态参数(落点位置,运动方向,运动速 度,以及尾灯状态)。由此我们需要如下工作条件1)流星上次的灯位。可以用一个全局变量tpled_run_Site来记录和获取。2)根据这次采样到触碰点的位置,依据一定算法得出流星目的灯位,这是本项目 的难点,涉及到一些算法,下面具体分析QVGA 240*320 触摸液晶,由函数 touch_panel_read_adc(&tpx,&tpy);获得坐标 (X,Y),左上角(0,0),右下脚(240,320).由于功能需求手指围绕触屏中心点画圆,流水灯 旋转流动。因此需要把以X,Y表示的直角坐系标转换为以0-360度表示的极坐标系。转换 过程如下首先把直角坐标系划分成四个象限Ql,Q2,Q3,Q4,如图3所示。这四个区域有各自的一个基准原点。Q1象限原点a (120,159),Q2象限原点b (119,159),Q3象限原点c (119, 160),Q4 象限原点 d(120,160)。检测到的任何一个触摸点,首先把他分分类,看他落在哪个象限内,这个应该很简 单Ql :120 < = X< = 239,0 <= Y<= 159 ;Q2 :0 < = X < = 119,0 < = Y < = 159 ;Q3 0 < = X < = 119,160 < = Y < = 319 ;Q4 120 < = X < = 239,160 < = Y < = 319。然后 取该点相对应于自身原点的x,y绝对值,例如图中的D点|x| = x-120, y = 159_y。再看另一种坐标系,如图4所示我们把一个圆分成22份,每一份都是一块扇形 区,都代表PCB板上的一颗灯。其中9号灯和20号灯占30度,其余灯各占15度等份。当 触碰点落到1号扇形区时,则一号灯点亮,当落到9号扇形区时,则九号灯点亮,依次类推。前面讲了一大堆坐标系的东西,而且我们明显发现用角座标来表示每一颗灯的落 点要来得简单的多。那么我们怎么把由触摸工C得到的直角坐标系转换成简单明了的角 坐标系呢。这里引入了正切三角函数(tan Q = y/x),我们把0°,15°,30°,45°,60°, 75°,90°这些角度的正切值先用计算器算出来0,0.268,0.577,1,1.732,3. 732,①。那我 们只要把某点在直角坐标系中的纵坐标除以横坐标,得到的值就是该点的正切值,用查表 的方式看这个值落在上面哪个数值区间内,也即得出了触碰点落在哪个扇形区内,完成了 直角坐标转换。大体思想便是这样,但在具体的算法和数据处理上还有一些注意的地方。比如说 (1)把第一象限的查表情况分析好后,其他三个象限就无须具体分析,只需互相做镜象就好 了,因为互相对称的。(2)正切值从0度到45度都是小于一的,因为从触摸IC读到的坐标 值都是整数,y/x以后得到的值绝不会是零点几,而是会全部被取整为零,这样就和要求不 符了。解决办法是这样的,把纵坐标的值左移八位再除以横坐标,即经数据处理后的正切值 统统乘以256倍系数。这样小于45度的角也将被一一放大提取出来,但是正切表也将放大 为0,68,147,256,443,995,⑴。(3)在这张正切表中有一个数值非常特殊“⑴”,即90度,触 碰点全落在Y轴上,x为零,y/x当然无穷大,但在计算机上无法用数值表示,所以这种极值 角需拉出来分类讨论,区别对待。MTK平台已提供如下两个函数touch_panel_read_adc(&tpx,&tpy);touch_panel_adc_to_coordinate(&tpx,&tpy);第一个函数读取由触摸IC采样的最原始模拟量信号,第二个函数把刚才的模拟 量转化为真正有用的直角坐标,左上角(0,0),右下角(239,319)。当以上条件都满足时,我们可以构造出如下接口函数kal_uint8 tp_coord_to_block (kal_uint 16 tp_x, kal_uint 16 tp_y) ;fiiA^f 参是由touch_panel_adc_to_coordinate(&tpx,&tpy)得到的触碰点坐标,返回的结果是0 到21之间的任一整数,猜也能猜到指的就是手机面板上的22颗灯。3)根据上面两个条件推算出流星这次的物理状态参数(落点位置,运动方向,运 动速度,以及尾灯状态)运动方向的确定首先建立一个由22颗灯围成的矩形模型,如图1所示。举一个 例子大家就明白了,假设流星上次灯位是0,而由触碰点推出的目的灯位是3,那么很容易 推出方向是顺时针,因为要经过0- > 1- > 2- > 3。那有人问为什么不这样走0- > 21- >
620- > 19- > 18—> 17- > 16- > 15- > 14- > 13- > 12- > 11- > 10- > 9- > 8- > 7- > 6- > 5- > 4- > 3,这样走肯定是逆时针。但这样走肯定是饶远路了,所以我设计成就 近原则,22点平分11点一份,分不出远近,那就牺牲一点10点。目的灯位与起始灯位的绝 对差值小于等于10点的走顺时针方向,目的灯位与起始灯位的绝对差值大于等于12点的 走逆时针方向。有疑问哪里冒出来的“大于等于12点”,这是由于模型中0到21组成环行 联通,“大于等于12点”是0到21的首尾衔接问题,它实际的灯位差也是10点。而真正灯 位差12的点不存在,最多也就差11点,11点为平分点不讨论,属于死区,所以你的手指如果 按在这点将没仍何反映,应为它是22份中的一份,再加上手一直在动,所以影响不是很大。落点位置的确定运动方向一旦确定,落点位置就好办多了。举个例子上次灯位 0,运动方向逆时针,在图1很容易推出,这次的落点在1号灯位。若运动方向顺时针,则这 次的落点在21号灯位。即无非是加一还是减一的问题。尾灯状态的确定定义规定流星在运动三颗尾灯常亮(tplecLstate = 0),当流星 在原地不动,尾灯会慢慢减少熄灭(tplecLstate会经历1,2,3)。只要把上次灯位tpled_ run_site和目标灯位tpled_des_site做比较,若不相等tpled_state = 0表示流星在运 动,若相等则tpled_State++直至为3,表示尾灯慢慢减少熄灭过程。运动速度的确定这里定时器定时间隔为常量10mS,对于手指的机械运动来说已 经是足够了,手指运动快灯就运动快,手指运动慢灯就运动慢,所以灯的运动速度完全有手 指运动快慢决定。到目前为止,显示接口函数所需的参数drip_site,drip_dir, drip_state全部到 齐,动作引擎得出的这三个参数做为行参对号入座传递给显示接口函数。这样,一套带呼吸 效果的触控式旋转流水灯便大功告成了。呼吸灯光芯片与触摸屏输入的组合,往往可以给灯光显示带来意想不到的效果, 大大推进了手机以往传统的灯光效果。设计者根据不同的应用场合,建立不同的算法模型和显示机制。可以构造出很多 创意十足的灯光效果。单就触摸屏自身的输入手法可以说无穷无尽,不同的输入指法背后 都是不同的算法,再加上灯光效果自身就是千变万化绚丽十足,两者结合往往可以碰撞出 意想不到的火花,带呼吸效果的触控式旋转流水灯就是一个很好的模型。这些个性十足的动作类灯光效果不光可以作为单一的功能性演示,还可以融入进 开机,关机,待机进入,待机推出,屏保前奏,铃声,短信,音乐播放等与日常应用密切相关的 场合。最大发挥出呼吸灯光芯片与加速度传感器的价值,使你每天都离不开它。
权利要求
一种带呼吸效果的触控式旋转流水灯,包括手机面板和流水灯,其特征在于所述的在手机面板上设有22颗led灯,上下各三颗,左右各八颗,由22颗灯构成一个矩形联通管。
2.根据权利要求1所述的一种带呼吸效果的触控式旋转流水灯,其特征在于所述的 在手机面板还设有八路可单独控制的呼吸灯芯片SC620 —片,MOSFET管4片,平台自带触 控芯片MT6301 —片。
3.根据权利要求1所述的一种带呼吸效果的触控式旋转流水灯,其特征在于所述的0 号灯到7号灯由SC620控制,11号灯到18号灯由SC620控制,从0号到7号灯设置总开关 M0SFET0,从11号到18号灯设置总开关M0SFET2,M0SFET0和M0SFET2不能同时打开,只能 开其中一个。
4.根据权利要求1所述的一种带呼吸效果的触控式旋转流水灯,其特征在于所述的8 号灯到10号灯由PMU的RGB 口控制,19号到21号灯由RGB 口控制,8号到10号灯由M0SFET1 总开关控制,19号到21号灯由M0SFET3总开关控制。
5.根据权利要求1所述的一种带呼吸效果的触控式旋转流水灯,其特征在于所述的 带有尾巴的流星从矩形管一边流到邻边的过程中,拐角处两边灯光无缝连接。
全文摘要
本发明公开了一种带呼吸效果的触控式旋转流水灯,包括手机面板和流水灯,在手机面板上设有22颗LED灯,上下各三颗,左右各八颗,由该22颗灯构成一个矩形联通管。八路可单独控制的呼吸灯芯片SC620一片,MOSFET管4片,平台自带触控芯片MT6301一片。所述的0号灯到7号灯由SC620控制,11号灯到18号灯也由SC620控制,从0号到7号灯设置总开关MOSFET0,从11到18号灯设置总开关MOSFET2,分别分开控制,MOSFET0和MOSFET2不能同时打开,只能开其中一个。同理8号到10号灯由PMU的RGB口控制,19号到21号由RGB口控制,同时8号到10号灯由MOSFET1总开关控制,19号到21号灯由MOSFET3总开关控制。本发明具有结构简单、成本低等优点。
文档编号H05B37/02GK101813286SQ200910046328
公开日2010年8月25日 申请日期2009年2月19日 优先权日2009年2月19日
发明者薛佳元 申请人:龙旗科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1