利用树莓派,光敏电阻和小型舵机实现自动获取 《最终幻想 X HD重制版》 连续避雷200次奖杯

我相信大家只要是玩过最终幻想 X的同学肯定头疼于跑鸟和连续避雷200次,为此可以说不眠不休,甚至连砸机器的心都有,这两个小游戏可谓极度变态。对于连续避雷200次这个小游戏,不仅要求玩家在屏幕出现闪电后0.5秒按 O 键,而且还要连续不断200次成功,只要一次失败就得重新玩起。 我想很多同学连成功一次都困难,何况200次不间断。

 

不过,作为滋生技术宅,借鉴了各种同学的经验和技巧,发现可以利用硬件来轻松达到连续避雷200次不间断,而且还可以达到想避多少次就可以有多少次。看到过有同学利用 Arduino + 光敏电阻实现过一个机器人来不断探测PSV屏幕,并且可以在0.1秒内作出动作相应,驱动小型舵机来按 O 按键。 我这里利用树莓派和同样的硬件也实现了一个机器人,并且成功实现避雷200次以上,先贴个成就获得图

 

好了,那么开始介绍我的设计。

利用树莓派GPIO连接光敏电阻(带AD,如果没有AD,需要自己搭配AD电路进行转换)和舵机,我把光敏电阻连接到了GPIO 4,舵机的 PWM信号连接到了 GPIO 18。因为这两个针脚距离VCC还是比较近的。

不同型号的树莓派请参考上面的GPIO针脚图。我的是B+ 40pin的,所以连接图如下:

当然,如果大家的电源状况不稳定,可以适当增加电阻。好了,这样只要光敏电阻探测到一定光强,就会改变他的电阻值,这个时候我们在树莓派中只要探测GPIO4的电平,出现低电平则可以驱动舵机进行旋转然后电击PSV上按钮。

 

献上我的代码: https://github.com/Jarrey/final_fantasy_x_200_lightning

 

 1 #!/usr/local/bin/python
 2 
 3 import RPi.GPIO as GPIO
 4 import time
 5 
 6 lightPin = 4  # GPIO Pin 18
 7 servoPin = 18 # GPIO Pin 18
 8 
 9 GPIO.setmode(GPIO.BCM)
10 
11 # Setup servo pin status
12 GPIO.setup(servoPin, GPIO.OUT)
13 pwm = GPIO.PWM(servoPin, 100)
14 pwm.start(5)
15 
16 # Setup light sensor pin status
17 GPIO.setup(lightPin, GPIO.OUT)
18 GPIO.output(lightPin, GPIO.LOW)
19 time.sleep(0.5)
20 GPIO.setup(lightPin, GPIO.IN)
21 
22 def servo_set(angle):
23     duty = float(angle) / 10.0 + 2.5
24     pwm.ChangeDutyCycle(duty)
25     
26 try:
27     i = 0
28     while True:
29         v = GPIO.input(lightPin)
30         if (v == GPIO.LOW):
31             servo_set(30)
32             time.sleep(0.1)
33             servo_set(60)
34             time.sleep(0.1)
35             servo_set(30)
36             time.sleep(0.1)
37             i = i + 1
38             print i
39                             
40 except KeyboardInterrupt:
41     pass    

其中旋转角度可以各自进行微调。

 

最后附上一段运行的视频: 

 

如果想帮助获得200次避雷,可以联系我QQ 28966930

 

posted @ 2015-08-03 23:43  Jarrey  阅读(5691)  评论(0编辑  收藏  举报