こんにちはコハペペです。今回はPWMアウトという機能をご紹介します。
PWMとはONとOFFの繰り返しパターンの中で、ONの時間がOFFより長くなったり、OFFの時間がONより長くなったりする機能です。
ONとOFFの時間のバランスが変わると何が起こるかというと、例えばLEDをつなぐと、ONの時間が長い場合はやや明るく、OFFの時間が長い場合はやや暗くといった明るさを調節することができ、モーターをつなげば、ONの時間が長い場合はやや速く、OFFの時間が長い場合はやや遅くといった速度調節ができるようになります。

今回はPWMを使ってLEDが徐々に明るくなるプログラムを作りたいと思います。
まずは「新規」をクリックして「mbed_pwm」というプログラム名で新しいプログラムを作成します。
programumbedpwmnew

そして3行目のDigitalOutをPwmOutと書き換えます。
PWMの機能が使えるピンは下の図の PwmOut と書かれたピンのみ対応しているので、dp1,dp2,dp18,dp24のみ使えます。
mbedpinasigne
今回はdp18にしたいと思います。
3行目のカッコの中のLED1をdp18に書き換えます。
programpwmdp18
もうこれで、dp18がPWMのピンになっています。
DigitalOutの時は、myled = 0かmyled = 1しか選べなかったのですが、PwmOutにすることで、myledは0.0~1.0まで小数で設定できるようになります。例えば0.1とすれば、10%の時間だけONで残りの90%の時間はOFFにすることができ(つまりLEDをつなぐと暗く光る)、0.7とすれば70%の時間ON(LEDをつなぐとやや明るく光る)になります。
もちろん0にすれば完全にOFFになり、1にすれば完全にONになります。(小数として0や1を指定する時は、0.0や1.0というように「.0」を付けるのが正式な方法なのですが、今回は簡単のため0、1としています)

今回は徐々に明るくしたいので、最初は0から初めて、0.2秒ごとに0.1ずつ増やして、最後は1になるように改造していきましょう。
まずは7行目の = 1; を= 0; にします。そして9行目の = 0; を = 0.1; にします。
programpwmmyed1

次は7行目から10行目までを11行目に4回コピー&ペーストしてください。
programpwmmyed10

11行目のmyled = 0.2; 13行目のmyled = 0.3;  15行目のmyled = 0.4; と順番に0.1ずつ増えていくように改造していきます。
programpwmmyed9
0.9まできましたね。
1.0まで行きたいので、25行目と26行目を27行目にコピー&ペーストして、= 1;と改造してください。
programpwmmyed11
これで、プログラムは完成です。「コンパイル」をクリックしてファイルをダウンロードしておいてください。
プログラムはこちらよりダウンロードできます。

次は回路をつくります。
今回はdp18を使っているので、ブレッドボードの右側の11行目にLEDの足の長い方を挿して、LEDの短い足を青いグランドの電源ラインに挿します。LEDは青か白を使いましょう。青を使う理由はこちらを参考にしてください。
breadboadpwmleddp18
あとは、マイコンとねこちゃんをこちらを参考につないでください。
ねこちゃんのUSBをパソコンとつないだときにできるドライブに、先ほどダウンロードしたファイルをコピーしてください。
これで書き込み完了です。赤いおめめを押してみてください。
LEDが徐々に明るくなるように光りましたか?

PWMアウト(PwmOut)を使うとON,OFFだけではなく、途中の明るさが表現できることをご紹介しました。

この応用として、青だけでなく、青、赤、緑の3色入ったフルカラーLEDを使って、虹色に色が変化する電飾の作り方がこちらになります。
ledrbledrgledbon


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