PR 記事には広告が含まれています
スポンサーリンク
Translate

マイコンでロウソクの炎を再現してみよう

スポンサーリンク

2018.5.18更新

rousoku

フルカラーLEDを使って、ロウソクの炎のようにゆらゆら明るさの変わるプログラムです。
使う部品は

  • フルカラーLED
  • 抵抗3本
  • 配線3本(オス-オス)
  • プログラム書き込み用配線3本(メス-オス)

です。

まずは部品と配線からしていきましょう。

LEDを光らせるためのdp1,dp2,dp18のPwmOutのピンを使います。

抵抗3本とマイコンの電源用の配線を図のように挿してください。

rousokuhaisen1

次にLEDを図のように挿して、LEDのGNDを配線します。

rousokuhaisen2

最後に、マイコンにプログラムを書き込めるように、マイコンとねこちゃんを図のように3本配線します。

rousokuhaisen3

USBケーブルをパソコンにつなぐとMBEDというドライブが表示されると思います。

配線はこれで完了。次はプログラムです。

プログラムはここからインポートしてください。

rousokuhaisen6
画面の右側の  Import this Program  でインポートできます。

今回のプログラムでは、LEDの明るさが明るくなったり、暗くなったりするように、ランダムに明るさを変えることで表現しようと思います。

まずはフルカラーLEDをPWMで各色調整して、炎の色にしていきます。

今回は赤100%、緑70%、青5%としました。

この値を、ランダムに暗くして、炎の明るさのゆれを表現します。

ランダムな値は

rand()

という命令で得られます。ただrand()で得られる値は、整数で0~2の32乗という、とても大きな範囲の値となるので、そのままの値では使いにくいです。

そこで最大値(RAND_MAX)で割ってあげて、小数の0.0~1.0までの値に変換しています。

小数として計算したいのでrandの前に(float)を付けて、rand()の値を小数に変換してから計算します。(float)が無いと整数として計算され0かたまに1という結果になってしまうので、注意が必要です。

rousokuhaisen4

このランダムな0.0~1.0の値を炎の色に掛け算して、明るさをランダムに変化させます。

rousokuhaisen5
このループを0.05秒ごとに実行させて、炎のゆらゆらを表現することにしました。

コンパイルして、ダウンロードしたファイルを、MBEDのドライブにコピーしてください。

b

ねこちゃんの赤いおめめを押してみてください。

LEDがロウソクの炎のように光りましたか。

rousoku

今回のプログラムは「マイコンで発明しよう実験セット」で実験することができます。

nekochanset