【報告】第三回:電子部品の状態を読んでみよう!終了しました(その1)

12月8日(土)と9日(日)、Tokushima LED Terakoyaで
3回目の宇宙手芸の授業を行いました。

今回のテーマは「暗くなると光るものを作ろう」です。
あら!クリスマス前のこの時期にぴったり!

今回使うプログラムは「Calibration」
翻訳すると「測定」とか「校正」という意味です。

まずはマリオ先生がホワイトボードに描いてくれた回路図を
手元のArduinoとブレッドボードに再現していきます。

今回の回路と必要なもの。

回路完成!これはアレンジしてLEDを並列に2つ配置しています。

回路が出来たら次はプログラムへ。

画像赤囲みの setup { } の部分には、

センサーピンを使って「最初の5秒で明るさを測定(calibrate)」します。
そして「測定した最大値(maximum)と最小値(minimum)を記録」します。

と記述してあります。

なので、基盤に書込み(input)をしてから5秒以内に
意図的に”明るい状態(maximum)”と”暗い状態(minimum)”を作り
Arduinoに覚えさせます(record)。
(実際にはセンサをつまんだりして暗い状態にしました)

5秒が過ぎるとloopの部分が動き出します。
今回のloopには、mapconstrainという新しい文字が登場。

map?地図??
いえいえ、Arduinoでは「数値をある範囲から別の範囲に変換します」という意味だそう。
同じようにconstrainは「数値を指定した範囲のなかに収めます」という意味。

constrainがなぜ必要かというと、

ArduinoはINPUTが10bit(0〜1023)なのに対し、
OUTPUT が8bit(0〜255)だから

なのです。

setup の”inputの段階では、
minimumは0、maximumは1023が最小・最大のところを
loopの”output”の段階では、 minimumが0、maximumが255の範囲に
変換しないと出力できないのです。

つまり

読み込んだ数値を0〜255の範囲に収めて
測定した最小値(Minimum)は、明るさ0に。
測定した最大値(Maximum)は、明るさ255に変換してください。

ということ。

こうしてできあがったのがこちら。
センサーに手をかざしたりして暗くするとLEDがふわっと明るく光ります。
※ 動画はセンサーを暗くするとLEDが暗くなるプログラムに書き換えたもの。

毎回新しい言葉が出てきて、なんのこっちゃ???と脳みそが悲鳴を上げますが
入力通りに動くとうれしくなります。C言語、素直な言語ですね。

タグ: , ,
カテゴリー: お知らせ