Arduinoで分離型フォトセンサとサーボを連動させる簡単プログラム例

C言語関連

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つの分離型フォトセンサとサーボを連動させる簡単なプログラムが作成できます。必要に応じてピン番号や回転角度を調整し、用途に合わせてカスタマイズできます。

コメント

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