Arduinoで2つの分離型フォトセンサを使い、1つ目のセンサの反応回数に応じてサーボモーターを動かし、2つ目のセンサが反応したらサーボを元に戻すプログラムの作り方を解説します。ここではピン番号は任意で設定可能です。
使用する部品
- Arduino Unoなど
- 分離型フォトセンサ ×2
- サーボモーター ×1
- ジャンパーワイヤー
基本的な考え方
1つ目のフォトセンサが反応したらカウントを増やし、サーボモーターを0度から90度まで順に回転させます。2つ目のセンサが反応したら、カウントを保持したままサーボを0度に戻すという流れです。
Arduinoコード例
#include <Servo.h>
Servo myServo;
const int sensor1Pin = 2;
const int sensor2Pin = 3;
int sensor1Count = 0;
int sensor1State = LOW;
int sensor2State = LOW;
void setup() {
pinMode(sensor1Pin, INPUT);
pinMode(sensor2Pin, INPUT);
myServo.attach(9); // サーボ接続ピン
myServo.write(0);
Serial.begin(9600);
}
void loop() {
int s1 = digitalRead(sensor1Pin);
int s2 = digitalRead(sensor2Pin);
if (s1 == HIGH && sensor1State == LOW) { // センサ1反応検出
sensor1Count++;
Serial.print("Sensor1 Count: ");
Serial.println(sensor1Count);
for(int angle = 0; angle <= 90; angle += 5){
myServo.write(angle);
delay(50);
if(digitalRead(sensor2Pin) == HIGH){
break; // センサ2が反応したら回転停止
}
}
}
sensor1State = s1;
if(s2 == HIGH && sensor2State == LOW){
myServo.write(0); // サーボを0度に戻す
}
sensor2State = s2;
}
ポイント
- センサの反応を検出するために前回の状態を保持しておく
- サーボは角度を少しずつ変化させて滑らかに回転
- センサ2が反応したらサーボを即座に0度に戻す
まとめ
この方法により、Arduinoで2つの分離型フォトセンサとサーボを連動させる簡単なプログラムが作成できます。必要に応じてピン番号や回転角度を調整し、用途に合わせてカスタマイズできます。


コメント