其の1「Arduino」を使ったマイコンプログラミングを子供と一緒に学習するブログ。子供と一緒に楽しみながら気長にアップしてく予定です。追記:回路図とスケッチの一部に誤りがありましたので修正しました。フォトレジスタは別名で下記と呼ばれることもあります。(photoconductor)3.フォトセル(photocell)色々、言い方がありますが要は「光センサー」です!その1ということはその2もあります。今回、【フォトレジスタ編】については2回にLessonを分けます。「其の1」では、基本的なコードを理解します。21で8bitシフトレジスタとLEDの回路とフォトレジスタ利用して遊びます。「其の2」は面白いので、ぜひ記事アップまでしばしお待ちください。本Lesson解説で使用しているのはArduino互換品です。互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。そのため互換品の品質も悪くなく、それでいて値段は安いです。正規品本体の値段程度で豊富な部品が多数ついています。:LDR」とも呼ばれ、名前の通り光によって抵抗値が変わる電子部品です。入射する光の強度が増加すると電気抵抗が低下する電子部品である。フォトセル(photocell)とも呼ばれる。フォトレジスタは、高抵抗の半導体でできている。充分に周波数の高い光が素子に入ると、半導体に吸収された光子のエネルギーにより束縛電子が伝導帯に飛び込む。結果として生じる自由電子(と対になるホール)によって電流が流れ、電気抵抗が低くなる。用途としては、光を感知して何かをさせる。光を感知しなくなることで何かをさせる。いったことが考えられます。身近な用途としては、街灯などがあげられます。暗くなると、勝手に電気が点灯しますよね。そんな、身近な製品には、安価なCdsセルが使われていることが多いです。本Lessonで使用するフォトレジスタもCdsセルとなります。Cds:硫化カドミウム手持ちがない方は以下からどうぞ。目標1.「フォトレジスタ」の制御方法を理解します。2.フォトレジスタの値をアナログ入力を使って計測します。3.アナログ入力で受け取った値を利用してLEDの輝度を変更します。其の1ではフォトレジスタの基本的な使い方を理解します。準備ではLessonの準備に取り掛かりましょう。今回も部品は多くないので、すぐに実践に移ることができます。wire、抵抗は今後も頻繁に利用します。–メス」の3種類を揃えておくことをお勧めします。抵抗も単品で揃えるよりはセットをおすすめします。新たに登場した部品について説明していきます。本Lessonで新しく登場するのは、フォトレジスタ(Cdsセル)のみです。下の写真が、フォトレジスタ(Cdsセル)です。キットには合わせて梱包されています。フォトレジスタは抵抗器と同じく極性がありません。向きを気にすることなく使用することができます。フォトレジスタ(Cdsセル)仕様フォトレジスタ(Cdsセル)仕様は以下のようになっています。下記は参考としてみてください。反応時間の仕様を見てわかるように、反応スピードは遅いというこも頭に入れてください。詳細な仕様は下記にて確認ができます。電子部品通信販売...akizukidenshi.comフォトレジスタ(Cdsセル)原理フォトレジスタ(Cdsセル)は、硫化カドミウムの焼結体を用いた光導電素子で、照射する光量によって抵抗値が変化します。明るさを抵抗値の変化に置き換える光センサです。Cdsのセル構造図を下記に示します。Cdsセルは、可視光線に対して高感度で、分高度が人間の眼に近い特性を示します。下図に分光度特性を示します。可視光領域に対して高感度であることがわかります。この特性があることから、人にとっては使いやすい電子部品となるのです。下記は、仕様の分光度特性に可視光領域を重ねたものです。詳しい、動作原理は半導体の光導電効果を説明をしなければなりません。その説明だけで記事一本かけてしまうので、ここでは割愛します。興味のある方は、下記が比較的説明があるサイトかなと思いましたので紹介しておきます。半導体とは?初心者サイト...handoutai.net使用する抵抗についてこのあとに説明する実践で使う抵抗値について補足しておきます。フォトレジスタ(Cdsセル)と直列につなぐ抵抗は10kΩを使用します。フォトレジスタ(Cdsセル)と直列につないで電圧を分圧させるために使用します。10kΩを使用してみて輝度の変化がわかりづらい場合は、抵抗値を上げるなどして読み取り値の範囲の調整をしてください。※詳細は実践の回路図を参照ください。LEDが焼き切れないようにするため、LEDと直列につなぐ電流制限抵抗は220Ωとします。こちらは、LEDが焼き切れない抵抗値であれば大丈夫です。回路作成とコード作成まずは、下記の目標について実践していきます。フォトレジスタの値をアナログ入力を使って計測する。最初に回路図を確認してください。次に、回路図に合わせて部品を接続します。最後にコードを書いて、フォトレジスタ(Cdsセル)を動かしていきましょう。フォトレジスタは使い勝手が良いので、遊ぶには持って来いの電子部品です。使い方を学習して遊んでみましょう!Arduinoのピン配置を確認したい方は番外編02を参照してください。arduinoの入門編を書いていて、arduino自体の説明をしたいと考えていました。arduino自身のことを理解しておいた方が良いですよね。1フォトレジスタ(Cdsセル)と抵抗が直列に接続されていることに注目してください。フォトレジスタ(Cdsセル)と抵抗の間の電圧をアナログ入力の0番につなぐことによって電圧の変化を読み取る回路となっています。抵抗値は10kΩで一定なのに対して、フォトレジスタ(Cdsセル)は抵抗値が変化します。そのため、分圧比がかわることによって読み取る値も変わるという仕組みです。VoutがA0に入力される電圧。こちらがブレッドボード図。wireのみで結線できます。回路図は「fritzing」を利用しています。「fritzing」の使い方は下記を参照してください。fritzingUNOの実際の回路を写真で掲載しても、接続がわかりずらいかなと考えていました。前々から「fritzing」を利用して回路を描くことで、わかりやすくしたいと考えていました。1下図に示すように、用意した部品を使用して接続しましょう。部品はフォトレジスタ(Cdsセル)と抵抗のみです。wireを使用してUNOと接続しましょう。使用するポートは、アナログ入力の「0」、電源の「5V」、「GND」です。穴に挿入しづらいときは、ラジオペンチなどを使用してください。1接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。1特に新しくでてきたコマンドはありませんが、復習しておきましょう。アナログ値を読み取るアナログ入力ピンを指定。アナログ入力ピンに3番を指定する。シリアル通信のデータ転送レートをbpsで指定。1」ではアナログ入力が重要となります。下記、記事にて詳細を説明していますので、あわせて確認してください。番外編はarduinoの基本的なことを書いていく方向性にする予定です。今回は、arduinoのアナログ入力について解説していきます。1サンプルコードを下記に示します。1では、さっそく動作を確認していきます。シリアルモニタを起動して確認してみてください。変化を確認するために、フォトレジスタ(Cdsセル)に光をあてたり、手で光をさえぎったりしてください。※IDEの「ツール」⇒「シリアルモニタ」を開いて確認してください。回路作成とコード作成つづいて、下記目標について実践していきます。アナログ入力で受け取った値を利用してLEDの輝度を変更する。LEDへの出力はアナログ入力で得られた値を変換してアナログ出力から出す。最初に回路図を確認してください。次に、回路図に合わせて部品を接続します。最後にコードを書いて、フォトレジスタ(Cdsセル)の値を使って、LEDの輝度を変更するのを確認していきましょう。Arduinoのピン配置を確認したい方は番外編02を参照してください。arduinoの入門編を書いていて、arduino自体の説明をしたいと考えていました。arduino自身のことを理解しておいた方が良いですよね。こちらがブレッドボード図。wireのみで結線できます。回路図は「fritzing」を利用しています。「fritzing」の使い方は下記を参照してください。fritzingUNOの実際の回路を写真で掲載しても、接続がわかりずらいかなと考えていました。前々から「fritzing」を利用して回路を描くことで、わかりやすくしたいと考えていました。2下図に示すように、用意した部品を使用して接続しましょう。この実践でも、部品はフォトレジスタ(Cdsセル)と抵抗のみです。wireを使用してUNOと接続しましょう。使用するポートは、その1から一つ増えてます。アナログ出力として利用する、デジタルピンの「3」。アナログ入力の「0」、電源の「5V」、「GND」。穴に挿入しづらいときは、ラジオペンチなどを使用してください。2接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。2特に新しくでてきたコマンドはありませんが、復習しておきましょう。アナログ値を読み取るアナログ入力ピンを指定。アナログ入力ピンに3番を指定する。指定したピンからアナログ値(PWM波)を出力します。Unoのボードでは、デジタルピン3、5、6、9、10、11でこの機能が使えます。得られたアナログ値を1/4にして、0~1023を0~255に変換。シリアル通信のデータ転送レートをbpsで指定。※bpsはビット/秒speed:転送レート(int)analogWriteの詳しく知りたい方は下記を併せてお読みください。番外編はarduinoの基本的なことを書いていく方向性にする予定です。今回は、arduinoのアナログ出力について解説していきます。...omoroya.comその2ではアナログ入力をアナログ出力へ変換することが重要となります。2サンプルコードを下記に示します。//入力された値÷4の値をアナログ出力するdelay(500);}動作確認では、さっそく動作を確認していきます。シリアルモニタを起動して確認してみてください。変化を確認するために、フォトレジスタ(Cdsセル)に光をあてたり、手で光をさえぎったりしてください。IDEの値LEDの状態ライトを当てる手で遮るライトを当てるとLEDが暗くなり、手で遮るとLEDが明るく変われば成功です。何をしたかったかというと・・・。暗くなるとLEDが点灯する。街灯だったり、家の中の非常灯だったりと同じことができていますよね!実際は、if文などを使うことで、読み取り値を区切ることで調整をするのが良いです。利用しているのがアナログ出力のため、制御はPWM制御となっています。そのため、if文でアナログ出力に0を与えるなど工夫をすると良いです。することで、暗いと点灯、明るいと消灯とはっきりとした動作をさせられます。if文などを追加して遊んでみてください。PWM制御については下記記事で詳細を説明しています。番外編はarduinoの基本的なことを書いていく方向性にする予定です。今回は、arduinoのアナログ出力について解説していきます。...omoroya.comまとめ今回は以下の内容について理解してもらいました。今回も項目4の遊ぶことが一番の目標でした。1.「フォトレジスタ」の制御方法を理解する。2.「フォトレジスタ」の値をアナログ入力を使って計測する。3.アナログ入力で受け取った値を利用してLEDの輝度を変更する。いかがだったでしょうか。みなさんも子供と一緒にやられてみることをお勧めします。フォトレジスタ(Cdsセル)、色んな事が簡単にできそうな電子部品ですよね。考えて遊んでみましょう!疑問点、質問などありましたら気軽にコメントください。