别踩白块儿bot
标签:DIY 别踩白块儿
nicekwell 发布于 2016-10-09 01:23
自动玩别踩白块儿游戏。用光敏电阻检测黑块,用光耦控制触摸屏幕,从而实现黑块到来时自动点击。
Step 1: 概述
整个系统分为两个部分:
1、黑块的识别
2、触摸屏的触发
对于黑块的识别,屏幕上白色和黑色的光线差别比较大,所以用光敏电阻可以很方便地完成。
而触摸屏的触发方法,网上很多人用机械臂(硬盘磁头、舵机等)点击,我担心这种触发方式响应速度比较慢,所以采用导线直接触发触摸屏。
对于导线的通断控制,有人用过继电器,用继电器的话毕竟是机械触发,响应速度也可能会比较慢。
总之我直接选用光耦来控制,完全的电子触发,响应速度比上述两种方法肯定要快得多。
所以,我们需要的材料有:
基础材料:
洞洞板:够大就行
铜柱:4个,把洞洞板架空,防止桌面静电干扰,尤其是屏幕触摸部分很怕干扰。
黑块识别:
光敏电阻:4个
51k电阻:4个,用作光敏电阻上拉,不固定,根据光明电阻特性,只要能有明显的电压变化即可。
led指示灯:4个,用作黑块指示灯。
1k电阻:4个,用作led上拉。
lm393:2个,双路电压比较器。
103电位器:4个,就是可调电阻,用于给电压比较器一个参考电压。
触摸屏触发:
817光耦:8个,每两个一对,用于导通一路通道。
1k电阻:8个,用于817光耦的上拉。
湿润的纸巾:屏幕上用湿润的纸巾作为触发点效果很好。
Step 2: 黑块的识别
2.1 光敏电阻
光敏电阻的特性是光线越强电阻越小,光线越弱电阻越大。电路如上面第二幅图。 只要上面的电阻选得合适,光敏电阻在黑块和白块之间就会有较明显的电压变化。
我选用的上拉电阻是51k,放在白块的电压大约是0.5v,放在黑块的电压大约是1.5v。从电压看来上拉电阻还可以再小一些,但只要能产生稳定、明显的电压变化即可。
注:DIY时关掉手机或者平板的自动背光调节,避免干扰。
2.2 电压比较器
电压比较器采用的是lm393,这是双路电压比较器芯片。通过电压比较器可以区分出上述光敏电阻在黑块和白块之间的电压变化,电路如上面第4幅图。
R1和RL就是上面提到的光敏电阻分压电路,接到lm393的反相输入端。
R3是电位器,接到lm393的同相输入端。
当光敏电阻分压的电压比电位器电压高时(在黑块上),1out引脚输出低电平,此时led点亮;
当光敏电阻分压的电压比电位器电压低时(在白块上),1out引脚输出高电平,此时led熄灭。
以上就是一路的黑块识别电路。
Step 3: 触摸屏的触发
3.1 触摸点的引出
屏上触摸点可以通过导线引出再接地,原理和触摸笔类似。4点说明:
1、对于android设备可以打开开发者选项里的显示触摸位置,方便调试;对于ios设备还没找到好的显示触摸位置的方法。
2、导线应当越粗越好,但我实际用较细的导线效果也可以接受。
3、关于屏幕上的触摸点,很多人用硬币之类的东西,我发现用浸湿的纸巾会有很好的效果,还可以节省触摸面积。
4、使用导线引出触摸点的方法,人体对屏幕的影响相比较直接触摸要弱得多,经常会出现触摸不灵敏的情况,而且手机触摸屏也会有防水的算法。
包括在后面加入光耦控制后,遇到这种触摸不灵敏的情况,一个建议是先不要接地(手不要触摸导线),再把屏幕灭屏唤醒一次,此时由于触摸屏的防水算法不会认为有触摸,然后再用手触摸导线,此时会有较好的效果。
完成之后大概就如上面第一幅图。
3.2 触摸的控制
我们需要一个开关来控制导线和人体的通断。
继电器是一个选择,但继电器是机械触发,速度可能比较慢,所以最终没有采用,而是用了光耦。
817光耦的引脚图如上面第3幅图。当1–>2导通时,4–>3方向导通,这样就形成了一个开关。
但是!这样可能并不能满足需求,单个光耦的导通方向是单向的,而触摸屏和人体之间的电流可能是双向的,所以我们需要两个光耦进行双向导通。(注:我没有验证过单个光耦能否工作,因为之前有其它地方遇到过必须双向导通,所以这里为了保险直接用了双向导通的方案)
双向导通的光耦连接方法如上面第4幅图。
这样连接后A和B就双向导通了,一端连接手机触摸屏,一端连接人体即可。
这里R1和R2我用的都是1k欧的电阻。
Step 4: 整体组装
4.1 黑块检测和触摸的结合
2.2节介绍了如何通过lm393识别黑块,并且在检测到黑块时会点亮led。
3.2节的电路实现了触摸屏的电子触发。
只要把这两个电路结合起来就能实现检测到黑块时触摸屏幕,电路图如上面第一幅图。
其中A和触摸屏相连,B和人体相连,光敏电阻RL贴在显示屏上。
以上是一路的检测和触摸电路,别踩白块儿需要4路,做4路同样的电路即可。
4.2 安装与调试
1、触摸屏触发技巧
屏幕触点用湿润的纸巾效果是不错的,工作过程中需要保持纸巾的湿润。 另外在3.1节也有提到过,经过光耦和导线后,人体对触摸屏的影响是很弱的,当遇到触摸不灵敏时有一个技巧是人体先不要接触导线–>灭屏唤醒一次–>人体接触导线–>反复开关光耦,直到屏幕被触发。 可能每个人遇到的情况会不一样,只有你亲自动手才能找到技巧。
2、触点和光敏电阻的位置
一开始是把触点放在了光敏电阻的上面,这样放置当黑块下降速度稍微快点时就会漏点。
后来把光敏电阻和触点平行放置,光敏电阻甚至稍微有点偏上,这样效果要好得多。
完成之后的样子大概如上面第2幅图。
到这就全部制作完成了,快去破纪录吧!
分享到: