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


コメント