利用树莓派,光敏电阻和小型舵机实现自动获取 《最终幻想 X HD重制版》 连续避雷200次奖杯
我相信大家只要是玩过最终幻想 X的同学肯定头疼于跑鸟和连续避雷200次,为此可以说不眠不休,甚至连砸机器的心都有,这两个小游戏可谓极度变态。对于连续避雷200次这个小游戏,不仅要求玩家在屏幕出现闪电后0.5秒按 O 键,而且还要连续不断200次成功,只要一次失败就得重新玩起。 我想很多同学连成功一次都困难,何况200次不间断。
不过,作为滋生技术宅,借鉴了各种同学的经验和技巧,发现可以利用硬件来轻松达到连续避雷200次不间断,而且还可以达到想避多少次就可以有多少次。看到过有同学利用 Arduino + 光敏电阻实现过一个机器人来不断探测PSV屏幕,并且可以在0.1秒内作出动作相应,驱动小型舵机来按 O 按键。 我这里利用树莓派和同样的硬件也实现了一个机器人,并且成功实现避雷200次以上,先贴个成就获得图
好了,那么开始介绍我的设计。
- 树莓派+光敏电阻+舵机
- 材料购置(并无广告嫌疑,只是觉得方便,便宜,所以在一家买了)
- 光敏电阻 https://item.taobao.com/item.htm?_u=3bp29f7e21&id=40445514497 4针脚的自带AD
- 舵机 https://item.taobao.com/item.htm?_u=3bp29fb4ff&id=43696757660
- 电路:
利用树莓派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