ローテーションサーボモーターと距離モジュールで障害物を避ける車を作りました。
材料
- 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や電源となるモバイルバッテリーを入れて、箱の後部にボールキャスターを固定しましょう。
箱の形によっては旋回のスピードが足りない場合があります。その場合はプログラムの
13,14行目
myservoR.write(140);
myservoL.write(140);
の()内の数字を大きくすることで対応可能です。この時に数字を180より大きくしないように注意しましょう。
とても安価で作れるのでぜひ作ってみてください。
投稿者の人気記事
-
Okayu
さんが
2021/02/28
に
編集
をしました。
(メッセージ: 初版)
-
Okayu
さんが
2021/02/28
に
編集
をしました。
-
Okayu
さんが
2021/02/28
に
編集
をしました。
-
Okayu
さんが
2021/02/28
に
編集
をしました。
-
Okayu
さんが
2021/02/28
に
編集
をしました。
ログインしてコメントを投稿する