战斗吧!战士!¶
在这里,PiSloth 是一个勇敢的战士,当它出现在敌人面前时,它会发出咆哮冲向敌人。
运行代码
cd /home/pi/pisloth/examples
sudo python3 lets_fight.py
代码运行后,PiSloth会不断检测障碍物的距离,当距离在5到40之间时,PiSloth会发出轰鸣声并向前冲去;当障碍物的距离小于 5 时,PiSloth 将停止。
代码
from pisloth import Sloth
from robot_hat import Music
from robot_hat import Ultrasonic
from robot_hat import Pin
import time
import os
music = Music()
sloth = Sloth([1,2,3,4])
sloth.set_offset([0,0,0,0])
sonar = Ultrasonic(Pin("D2") ,Pin("D3"))
alert_distance = 40
contact_distance = 5
def main():
distance = sonar.read()
if distance <= alert_distance and distance >= contact_distance :
try:
music.sound_effect_play('./sounds/battle.wav')
music.background_music('./musics/attack.mp3')
music.music_set_volume(20)
except Exception as e:
print(e)
while True:
distance = sonar.read()
print(distance)
if distance < 0:
continue
if distance <= contact_distance:
break
sloth.do_action('forward', 1,90)
sloth.do_action('stand', 1, 90)
time.sleep(1)
if __name__ == "__main__":
while True:
main()
这个怎么运作?
这里是主程序。
读取
distance
超声波模块检测到的值,过滤掉小于0的值(当超声波模块距离障碍物太远或无法正确读取数据时, distance将会是一个小于0的无效值)。当
distance
在5和40之间,PiSloth将发出warning.wav
和attack.mp3
音效并向前移动。当
distance
小于 5 时,PiSloth 将保持stand
位置。
distance = sonar.read()
if distance <= alert_distance and distance >= contact_distance :
try:
music.sound_effect_play('./sounds/battle.wav')
music.background_music('./musics/attack.mp3')
music.music_set_volume(20)
except Exception as e:
print(e)
while True:
distance = sonar.read()
print(distance)
if distance< 0:
continue
if distance<=contact_distance:
break
sloth.do_action('forward', 1,95)
sloth.do_action('stand', 1, 90)
time.sleep(1)
备注
您可以通过 Filezilla 软件 向 musics
或 sounds
文件夹添加不同的音效或音乐。