Arduinoで2つのセンサーを連動させてサーボモーターを動かす方法

C言語関連

Arduinoを使って、2つのインタラプタセンサー(LG416NL1-01)を連動させ、1つ目のセンサーが反応したらサーボモーターを回転させ、2つ目のセンサーが反応したら元に戻すプログラムの例をご紹介します。ピン番号は自由に設定可能です。

必要な部品

  • Arduinoボード
  • 2つのLG416NL1-01センサー
  • サーボモーター
  • ジャンパーワイヤー

回路接続の例

センサー1: デジタルピン2

センサー2: デジタルピン3

サーボモーター: デジタルピン9(PWM対応)

Arduinoコード例

#include <Servo.h>

Servo myServo;
int sensor1Pin = 2;
int sensor2Pin = 3;
int servoPin = 9;

void setup() {
  pinMode(sensor1Pin, INPUT);
  pinMode(sensor2Pin, INPUT);
  myServo.attach(servoPin);
  myServo.write(0); // 初期位置0度
}

void loop() {
  if(digitalRead(sensor1Pin) == HIGH){
    // センサー1が反応したらサーボを90度に
    myServo.write(90);
    // センサー2が反応するまで待機
    while(digitalRead(sensor2Pin) == LOW){
      delay(10); // 短い遅延でCPU負荷軽減
    }
    // センサー2が反応したらサーボを0度に戻す
    myServo.write(0);
  }
  delay(50); // ループ安定化
}

動作説明

  • センサー1が反応するとサーボが90度に回転
  • センサー2が反応するまで待機
  • センサー2が反応したらサーボが0度に戻る

ポイント

  • センサーの反応がHIGHになるタイミングに合わせてdigitalReadを使用
  • whileループで待機することで2つ目のセンサーが反応するまでサーボが保持される
  • delayを短めに設定することでCPU負荷を抑える

まとめ

このコード例を基に、センサーやサーボのピン番号を変更して簡単に動作を調整できます。必要に応じてサーボの回転速度や角度を微調整することで、より滑らかな動作にすることも可能です。

コメント

タイトルとURLをコピーしました