我相信大家只要是玩過最終幻想 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