見出し画像

Arduinoでつくる超音波センサーで手をかざすとついてきたり、離れたりするロボット作り

新たにロボットを作りました。今度は簡易的な感じです。ただプログラムに凝ってみました。手をかざすと三回はついてきて次の三回は離れていくプログラムにしました。勉強の成果が出ています。

車体は以下の材料で製作しました。タミヤの楽しい工作シリーズを主に使用しています。
タミヤ 楽しい工作シリーズ 4輪駆動車工作基本セット
タミヤ 楽しい工作シリーズ ユニバーサルプレート

ただし、4輪駆動車工作基本セットのモーターの電池ボックスは使用していません。また、モーターの電源ははんだ付けしました。

4輪駆動車工作基本セット

次に電気系統について解説します。
以下の材料を用いて製作しました。
Arduino uno
モータードライバー L298N
超音波センサー HC-SR04
ジャンパ線
ブレッドボード
電池 9V

配線は以下のようになります。
超音波センサー (HC-SR04)

  • VCC -> Arduino 5V

  • GND -> Arduino GND

  • Trig -> Arduino デジタルピン 9

  • Echo -> Arduino デジタルピン 10

  • モータードライバ (L298N)

    • IN1 -> Arduino デジタルピン 6

    • IN2 -> Arduino デジタルピン 7

    • VCC -> 電源の+端子

    • GND -> Arduino GND

コードは以下のようになります。
// 超音波センサーのピン
const int trigPin = 9;
const int echoPin = 10;

// モーター制御ピン
const int IN1 = 6; // モーターの方向ピン
const int IN2 = 7; // モーターの方向ピン

int moveCount = 0; // 前進/後進のカウンター
bool movingForward = true; // 前進状態か後進状態か

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

// モーターのピンを出力に設定
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);

Serial.begin(9600);
}

void loop() {
long duration, distance;

// 超音波センサーで距離を測定
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // 距離をセンチメートルで計算

if (distance < 15) { // 手が近づいたら(距離15cm以下)
if (moveCount < 3) {
if (movingForward) {
forward(); // 前進
} else {
backward(); // 後進
}
delay(500); // 少し動作させるための遅延
moveCount++;
} else {
// 前進と後進を切り替える
movingForward = !movingForward;
moveCount = 0; // カウントをリセット
}
} else {
stopMotor(); // 手が遠ざかっていたら停止
}
}

// 前進する
void forward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
Serial.println("Forward");
}

// 後進する
void backward() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
Serial.println("Backward");
}

// モーターを停止する
void stopMotor() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
Serial.println("Stop");
}


以前の作品よりも堅牢にできました。相変わらず輪ゴムとマスキングテープ多用していますがそれでも信頼性は高いと思います。ゆえにこれをもとにコードを変えて遊んだり配線を変えたり、リレー制御にしたりいろいろな遊び方が出来そうです。

問題点。
①相変わらず線が外れる
②超音波センサーが具合悪い
③プログラムがまだまだ分からん

問題点を踏まえて今後とも作品づくりに邁進していきたい所存でございます。どうぞご指導ご鞭撻のほどよろしくお願い申し上げます。

この記事が気に入ったらサポートをしてみませんか?