SSブログ
Arduinoで自動運転(DCC) ブログトップ
- | 次の10件

Arduinoでフォトリフレクタを試してみました [Arduinoで自動運転(DCC)]

こんにちは。今日の都内は低気圧が過ぎ去ってまずまずのお天気になってます♪
南風の影響か暖かいので過ごしやすいですが、まだ2月なんですよねぇ。

さて、確定申告とかでバタバタしていましたが、月曜日にはこんなのを買ってきていました。

P1110027.JPG

今週はこの中のフォトリフレクタを試していました。
arduinoでフォトリフレクターを使う具体例は数多く見つかりましたので、イロイロと参考にしながら試行錯誤していました。
で、こんな具合の回路にしてみました。

P1110040.JPG

フォトリフレクタには回路が2あって、1つはLED、もう1つはフォトトランジスタ(照度で抵抗値が変化する素子)の素子のこととあります。つまり電気を流すことで反射光の照度を抵抗値として取得することができる装置とあります。
今回使うのは秋月で入手可能なTPR-105です。
ネット上の先例では、使っている抵抗値が人それぞれで、私も何パターンも試しましたが、最終的にLED側には220Ωでフォトトランジスタ側には1GΩ1MΩ(2016年5月19日訂正)を使いました。

P1110038.JPG

このピンクに光っているのが赤外線LEDです。

で、今回は、最初に緑のLEDを点灯させて、紙片をフォトリフレクタに近づけるとそれを検知して、LEDを赤⇒橙⇒緑へと切り替えるようなプログラムにしてみました。




今回の回路でフォトリフレクタからの閾値を確認するプログラムです。


//********************************************************************
//* フォトリフレクタからの閾値を表示するプログラム
//********************************************************************
int pin = 0; //
void setup() {
Serial.begin(9600) ;
pinMode(pinLED,OUTPUT);
}
void loop() {
int val;
val = analogRead(pin) ; //アナログ0番ピンからセンサ値を読み込み
Serial.println(val) ; // シリアルモニターへ表示
delay(100) ; // 100ms待つ
}

このプログラムを実行して閾値を求めます。
まずは、通常の閾値です。

リフレクタ1.jpg

次に紙片を近づけた時の閾値です。

リフレクタ2.jpg

この閾値から閾値が960より小さい時にLEDを切り替えるようにしました。

こちらが、最初に緑のLEDを点灯させて、紙片をフォトリフレクタに近づけるとそれを検知して、LEDを赤⇒橙⇒緑へと切り替えるようなプログラムです。
フォトリフレクタからの閾値が一定しないので悩んでいたのですが、閾値の平均を求めるやり方で解決している例を発見し、私も同様なやり方でなんとか解決しました。


//***************************************************************************
//* 最初に緑のLEDを点灯させて、紙片をフォトリフレクタに近づけると
//* それを検知して、LEDを赤⇒橙⇒緑へと切り替えるプログラム
//***************************************************************************

void setup() {
pinMode(11,OUTPUT); // 11番ピンをデジタル出力にする
pinMode(12,OUTPUT); // 12番ピンをデジタル出力にする
pinMode(13,OUTPUT) ; // 13番ピンをデジタル出力にする
}
// 繰り返し実行される処理(メインの処理)
void loop() {
int val ;

digitalWrite(11,HIGH);

val = SENSOR_read(0) ; // センサーから読み込む

if (val < 960) {
digitalWrite(11,LOW);
for (int i=1;i<4;i++){
digitalWrite(14-i,HIGH);
delay (5000);
digitalWrite(14-i,LOW);
}
}

}
// フォトリフレクターからの読み込み処理(30回読込み平均をとる)
int SENSOR_read(int PinNo) {
long ans ;
int i ;

ans = 0 ;
for (i=0 ; i < 30 ; i++) {
ans = ans + analogRead(PinNo) ; // 指定のアナログピン(0番端子)から読取り
}
return ans/30 ; // 30回の平均値を返す
}

次はポイント切り換えをやってみようと思います。

Arduinoでアナログ入力(光センサー)を試してみました [Arduinoで自動運転(DCC)]

こんにちは。今日の都内は予報通りの季節外れの暖気と曇り空!
とても2月の1番寒い時期とは思えません。

こんなタイミングの悪い時に、国内で10年ぶりにFISのW杯が開催されていたんですね!
それも苗場で♪
前回開催が1973&75年とのことなのでもぉビックリ!

大学生だった1980年代前半に当時の苗場のワールドカップロッジに親友(もちろん男性)と今の時期に宿泊してスキー三昧していたことを思い出しました。
たまたま宿泊した日にユーミンの『サーフ&スノー』の苗場でのコンサートがあって、部屋の窓を開け放して男2人で聞き入っていました!(笑)
当然、入場券とかは手に入らなかったけど、それでも満足していました。
東京に帰ってから、コンサートの曲順通りにカセットテープに録音したのもいい思い出です。

結婚してから苗場には1度行ったかどうか・・・

20年以上は行ってないですから変わってるんだろうなぁ。

さて、Arduinoでアナログ入力をやってみました。

image-20160213155029.png

キットには光センサーも入っていますので、繋いでみました。
あと、今回はPCのUSBから電源をとるのではなく、DC9Vを繋いで動かしてみました。



光センサーに黒布を被せると点滅が早くなり、除くとゆっくりの点滅に変化して、アナログ入力を確認できました。
実際にはPCを繋いで運転するつもりはないので、DC9Vでの動作も確認し、問題なく動きました。
キットにはサーボやステッピングモーターなんかも付属しているので、次はそのへんを確認してみようと思います。

Arduinoで自動運転に挑戦してみる! その1 環境構築 [Arduinoで自動運転(DCC)]

こんにちは。今日は久々の週中の祝日ですね!
下りの高速はかなり渋滞もあるようなので、安全運転でお願いします。

さて、ポチっとしてみたArduinoですが、早速環境を構築してみました。

iphone/image-20160211104455.png

使うPCはWindows7のネットブック。
まずは、Arduinoのサイトから必要なファイルをダウンロードしてみました。
参考書ではインストーラーを実行するよになっていましたが、LZHの圧縮ファイルを解凍してOKでした。
一応、解凍したフォルダ毎、C:¥ProgramFilesの中に移しておきました。
そして、USBを繋いでドライバのインストール時にそのフォルダを指定すれば準備完了になりました。

動作確認として、サンプルファイルで13番ピンにLEDを刺して点滅するプログラムを書き込むとLEDの点滅が始まりました!

iphone/image-20160211104534.png

ここまでは思ったよりも順調で、なんか楽しいかも。
まだまだ先は長いです。

- | 次の10件 Arduinoで自動運転(DCC) ブログトップ