注釈
こんにちは!SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と一緒にさらに深く学んでいきましょう。
参加する理由
専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートを通じて解決できます。
学びと共有: ヒントやチュートリアルを交換し、スキルを向上させましょう。
特別なプレビュー: 新製品の発表や先行公開に早期アクセスできます。
特別割引: 新しい製品に対して限定割引をお楽しみください。
祝祭プロモーションとプレゼント: プレゼントや祝祭プロモーションに参加できます。
👉 私たちと一緒に探求し、創造する準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
障害物回避
このプロジェクトでは、PiCrawlerが超音波モジュールを使用して前方の障害物を検出します。 PiCrawlerが障害物を検出すると、信号を送信し、別の方向に進むために方向転換を行います。
コードを実行する
cd ~/picrawler/examples
sudo python3 avoid.py
コードを実行すると、PiCrawlerは前進を開始します。もし障害物までの距離が10cm未満であると検出した場合、警告音を鳴らして停止し、左に回転して停止します。左に回転後、障害物がなければまたは障害物までの距離が10cm以上であれば、前進を続けます。
コード
注釈
下記のコードは 修正/リセット/コピー/実行/停止 できます。ただし、まずはソースコードのパス(例えば picrawler\examples )に移動してください。コードを修正した後、直接実行して効果を確認できます。
from picrawler import Picrawler
from robot_hat import TTS, Music
from robot_hat import Ultrasonic
from robot_hat import Pin
import time
tts = TTS()
music = Music()
crawler = Picrawler()
sonar = Ultrasonic(Pin("D2") ,Pin("D3"))
music.music_set_volume(100)
alert_distance = 15
speed = 80
def main():
distance = sonar.read()
print(distance)
if distance < 0:
pass
elif distance <= alert_distance:
try:
music.sound_play_threading('./sounds/sign.wav', volume=100)
except Exception as e:
print(e)
crawler.do_action('turn left angle',3,speed)
time.sleep(0.2)
else :
crawler.do_action('forward', 1,speed)
time.sleep(0.2)
if __name__ == "__main__":
while True:
main()
動作の仕組み
Ultrasonic クラスをインポートすることで、距離を取得できます。
from robot_hat import Ultrasonic
次に、超音波のピンを初期化します。
sonar = Ultrasonic(Pin("D2") ,Pin("D3"))
こちらがメインのプログラムです。
超音波モジュールで検出した
distanceを読み取り、0未満の値を除外します(超音波モジュールが障害物から遠すぎるか、データが正しく読み取れない場合にdistance<0が表示されます)。distanceがalert_distance(事前に設定した閾値、ここでは10)以下の場合、sign.wavの効果音を再生し、PiCrawlerはturn left angleの動作を行います。distanceがalert_distanceより大きければ、PiCrawlerはforwardの動作を続けます。
distance = sonar.read()
print(distance)
if distance < 0:
pass
elif distance <= alert_distance:
try:
music.sound_play_threading('./sounds/sign.wav', volume=100)
except Exception as e:
print(e)
crawler.do_action('turn left angle',3,speed)
time.sleep(0.2)
else :
crawler.do_action('forward', 1,speed)
time.sleep(0.2)
注釈
musics や sounds フォルダにさまざまな効果音や音楽を追加することができます。詳細は:ref:filezilla をご参照ください。