image
こんにちはコハペペです。デジタルアウトで遊ぶプログラム講座4回目です。前回は2個のLEDがそれぞれ3回点滅を繰り返すプログラムに改造しました。今回は2個とは言わず全ての出力ピンを使って、17個のLEDを順番に光らせたいと思います。LED盛りだくさんで遊んでみましょう。

光り方はこんな感じです。
ledpattern
myled1〜myled17まで縦に17個のLEDが並んでいます。そして最初は全部光っていて、myled1から順に消えていって、全部消えたら、またmyled1から順に光っていくようにします。これが無限ループして光の棒が流れているようにしてみましょう。

今回も前回と同じく、使う命令はデジタルアウト(DigitalOut)とwait()だけです。
それでは「新規」のボタンをクリックしてプログラムを作成しましょう。プログラム名は「mbed_blinky4」とします。

まずは3行目のデジタルアウトをコピーしたいのですが、その前に、今回は下の図の dp〜 (〜は数字)というピンを使います。また、dp5とdp27はopen drainという特殊なピンで、電流を出力することができません。そのため、これらのピンを除く、1,2,3,6,9,10,11,13,14,15,16,17,18,24,25,26,28の17個のピンを使います。
mbedpinasigne

ピンの指定方法がdp〜となるので、3行目のカッコの中をLED1からdpと書き換えてからコピーきすることにします。
33
書き換えた3行目を16個コピーしてください。
コピーの方法は、マウスでコピーする範囲を選択して、windowsの場合は[Ctrl]+[C]、macの場合は[command]+[C]。貼り付けはwindowsの場合は[Ctrl]+[V]、macの場合は[command]+[V]です。右クリックでコピーペーストにはmbedのホームページでは対応していないようなので、キーボードでコピーとペーストする必要があります。

コピーしてできたmyledをmyled1,myled2,myled3,,,,,myled17となるようにmyledの後に数字を1から17まで入れます。
次は、dp〜となるようにdpの後にデジタルアウトに対応したピンの番号を入れます。ピン配置の図の dp〜 が対応したピンでかつ「open drain」を除く1,2,3,6,9,10,11,13,14,15,16,17,18,24,25,26,28です。dp1,dp2,dp4,dp6,dp9,dp10,...と数字が不連続なことに注意してくださいね。

00
こんな感じになります。これで、dp1〜dp28までの17個のピンを、myled1〜myled17という名前てデジタルアウトとして使えるようになりました。

それでは、光がmyled1から順番に消えていくようにプログラムを改造しましょう。
デジタルアウトは最初の値が1(LEDがON)で始まります。なので、最初に全部を光らせるプログラムは不要です。23行目と24行目の
myled =1;
wait(0.2);
を削除してしまいましょう。

残った
myled = 0;
wait( 0.2 );
のwaitを0.05と小さくしてから2行をコピーして使います。16回コピーして17セット用意します。
そして上から順番にmyledとカッコの間に1〜17の数字を入れていきます。
57
これで光がmyled1から順番に0.05秒ごとに消えていきます。

消える方はできたので、次は順番に光るように改造していきます。
今作ったLEDが順番に消えるプログラムをコピーして使います。
myled1 = 0;
から最後の
wait( 0.05 );
までを、ごっそりコピーして、 = 0 を = 1に置き換えていきます。
34
これで、順番に光る方のプログラムも完成しました。
コンパイルしてみましょう。エラー無くコンパイルできたでしょうか。

こちらを参考にマイコンとねこちゃんとつないで、ねこちゃんをパソコンのUSBにつないでください。つないだ時に開いたドライブの中に、先ほどコンパイルでダウンロードしたファイルをコピーします。これでマイコンの書き込み完了です。いったんUSBを抜いてください。
(抵抗なしでLEDを多く光らせているためか、光った状態では正しく書き込めないようです。プログラムを書き込むときはLEDを抜いた状態でお願いします)
プログラムはこちらからダウンロードできます。
(こちらのプログラムは最初にすべてのピンをOFFにしているので、LEDをつないだ後からでもマイコンに書き込むことができます。)

ソフトは完成したので、ハードウェアを作ります。回路を簡単にするため抵抗を入れていないので、LEDには青または白を使ってください。下の図を参考にdp1からdp28までの17個のピンにLEDの足の長い方を指し、近くの青いグランドの電源ラインにLEDの足の短い方を挿していきます。
ledyamamprihaisen
USBをパソコンにつないでみましょう。流れるように光りましたか?

せっかくなので、クリスマスツリーにしてみました。
デジタルアウトとwait()、それらのコピペで結構遊べますね。
今回のプログラムは「マイコンで発明しよう実験セット」と「LEDいっぱい追加セット」を組み合わせると実験することができます。
nekochanset