我相信大家只要是玩过最终幻想 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上按钮。
1 #!/usr/local/bin/python
2
3 importRPi.GPIO as GPIO4 importtime5
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 defservo_set(angle):23 duty = float(angle) / 10.0 + 2.5
24 pwm.ChangeDutyCycle(duty)25
26 try:27 i =028 whileTrue: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 printi39
40 exceptKeyboardInterrupt:41 pass
其中旋转角度可以各自进行微调。
最后附上一段运行的视频:
如果想帮助获得200次避雷,可以联系我QQ 28966930
树莓派python控制两个舵机_利用树莓派 光敏电阻和小型舵机实现自动获取 《最终幻想 X HD重制版》 连续避雷200次奖杯...