Okayuのアイコン画像
Okayu 2021年02月28日作成 (2021年02月28日更新)
製作品 製作品 閲覧数 2832
Okayu 2021年02月28日作成 (2021年02月28日更新) 製作品 製作品 閲覧数 2832

ローテーションサーボと距離モジュールで障害物を避ける車を作った

ローテーションサーボと距離モジュールで障害物を避ける車を作った

ローテーションサーボモーターと距離モジュールで障害物を避ける車を作りました。

材料

  • Arduino
  • ローテーションサーボモーター(FS90R)
  • FS90R対応タイヤ(https://akizukidenshi.com/catalog/g/gP-13207/)
  • ボールキャスター
  • 距離モジュール(GP2Y0A21YK)
  • 適当な箱
  • ブレッドボード
  • ジャンパワイヤ
  • モバイルバッテリー

つなぎ方

ジャンパワイヤで下記の通りにサーボモーターや距離モジュールをArduinoに接続します。
また、ブレッドボードを使ってこれらを5Vに接続します。

サーボモーター(左)    Arduino
PWM(黄)   →   D10
Vcc(赤)   →   ブレッドボード
GND(茶)   →   GND

サーボモーター(右)    Arduino
PWM(黄)   →   D11
Vcc(赤)   →   ブレッドボード
GND(茶)   →   GND

距離モジュール    Arduino
Vcc(黒)   →   ブレッドボード
GND(黄)   →   GND
Vo(白)   →   A0

ブレッドボード    Arduino
上記3つと接続する穴 → 5V

プログラム

ArduinoをPCに接続しArduinoIDEで下記のようにプログラミングします。
距離モジュールで30cm以内に障害物が現れると車体が右に旋回するプログラムです。
プログラミングする際、ローテーションサーボモーターは通常のサーボモーターと異なり、下記のように回転します。

入力 動作
0〜89度 右回転
90度 停止
91〜180 左回転

また、90度から離れれば離れるほど回転速度は速くなります。

aruduino

#include "Servo.h" Servo myservoR; Servo myservoL; void setup() { myservoR.attach(10); myservoL.attach(11); } void loop(){ int value = analogRead(0); int distance = (6787/(value-3))-4; if(distance <= 30){ myservoR.write(140); myservoL.write(140); } else{ myservoR.write(100); myservoL.write(80); } }

完成品

動作の確認を終えたら、箱前部に距離モジュールと左右にタイヤを付けたサーボモータを固定します。
箱の内部にArduinoや電源となるモバイルバッテリーを入れて、箱の後部にボールキャスターを固定しましょう。
キャプションを入力できます

GIF

箱の形によっては旋回のスピードが足りない場合があります。その場合はプログラムの

13,14行目

myservoR.write(140); myservoL.write(140);

の()内の数字を大きくすることで対応可能です。この時に数字を180より大きくしないように注意しましょう。

とても安価で作れるのでぜひ作ってみてください。

ログインしてコメントを投稿する