catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

ARDUINO:フォトインタラプタで物体の通過を検出する

ARDUINOでコスプレ用小物を作ろうの巻き。

必要になりそうなパーツを一通り買いだしてきたので、設計前にパーツの特性を調べていくことにしました。

 

まずはモータの回転角度を検出するのに使おうと考えているフォトインタラプタの実験。

 

使うパーツはCNZ1023。

赤外線発光モジュールと受光モジュールが向かい合わせにセットされていて、この2つのモジュールの間に物体が入ることで赤外線を遮る。受光モジュール側はその検出状態を検出してくれる。

そんなわけで実装実験。

 

こちらのサイトを参考にさせていただきました。

秋月の通過型フォトインタラプタ、CNZ1023(ON1023)を使う | Memoteki

 

上記URLをもとにして作った回路図。

f:id:Catalina1344:20140920234036p:plain

あとはコード。

 

#define IRRCV_PIN 11

// 初期化
void setup(){
 
  // LEDのピンを出力に
  pinMode(IRRCV_PIN, INPUT);
}
 
void loop() {
// フォトインタラプタの状態を確認する
  int val = digitalRead(IRRCV_PIN);
  Serial.println(val);
}

コードの解説

11番ピンをフォトインタラプタの入力として使う。

この値をシリアルに表示して出力している。

シリアル出力の情報はARDUINOIDE画面から、画面上部のメニューバー -> ツール -> シリアルモニタ

で確認できる。

 

動作確認

シリアルモニタを開いた状態でフォトインタラプタの隙間に紙を抜き差しすると、ON/OFFが切り替わっていることが確認できる。

 

課題

このようなポーリング方式では、色々と問題がある。

例えばアクチュエータの動作が早い場合には入力を取りこぼす恐れがある。

そういった現象は非常によろしくない。

入力信号の変化の取りこぼしを防ぐためには、割り込みの機能を使うべきだろう。

ARDUINOでもあるはずなので、実装する前に調べておく必要がありそう。

やっと組み込みプログラムらしくなってきた。