前回のLED点滅のサンプル、HelloWorldのプログラムは以下の様に成っています。
#include "mbed.h" DigitalOut myled1(LED1); int main() { while(1) { myled1 = 1; wait(0.2); myled1 = 0; wait(0.2); } }
#include "mbed.h" で基本的なライブラリを読み込み。
DigitalOut myled(LED1) で LED1 を myled1 という変数名で扱う、
while(1) でループを回し、その中の処理を無限に繰り返す。
while(1) { }
という作りに成っていますね。そして myled1 = 1 でLED1を発光させ、 myled1 = 0 で消灯している様です。途中の wait(0.2) は早く切り替えて過ぎると消灯しているのが分からにだろうから切り替えの間隔を開けてるのだと思われます。
次に myled1 = 1 でLED1を発光という予想を検証する為に以下の様なプログラムを作ってみました。
#include "mbed.h" DigitalOut myled1(LED1); int main() { myled1 = 1; while(1) { } }
結果は LED1 (一番左側のLED)が発光し続けました。
次に LED1 を2〜4に変えて実行してみました。
実行結果をまとめると以下の様になりました。
設定した定数 | 発行したLED |
---|---|
LED1 | 左から1番目 |
LED2 | 左から2番目 |
LED3 | 左から3番目 |
LED4 | 左から4番目 |
応用として左から右へ順番にLEDが発光するプログラムを作ってみました。
#include "mbed.h" DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); int main() { while(1) { myled1 = 1; wait(0.2); myled1 = 0; myled2 = 1; wait(0.2); myled2 = 0; myled3 = 1; wait(0.2); myled3 = 0; myled4 = 1; wait(0.2); myled4 = 0; } }
もっと応用、左から右へ発光した後、今度は右から左へ順番に発光。
#include "mbed.h" DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); int main() { while(1) { myled1 = 1; wait(0.2); myled1 = 0; myled2 = 1; wait(0.2); myled2 = 0; myled3 = 1; wait(0.2); myled3 = 0; myled4 = 1; wait(0.2); myled4 = 0; myled3 = 1; wait(0.2); myled3 = 0; myled2 = 1; wait(0.2); myled2 = 0; myled1 = 1; wait(0.2); myled1 = 0; } }
関連サイト
マルツパーツ館ブログ mbedで作るアプリケーション(ケース1)
http://marutsuparts.blog74.fc2.com/blog-entry-512.html#3
マルツパーツ館ブログ mbedで作るアプリケーション(ケース2)
http://marutsuparts.blog74.fc2.com/blog-entry-517.html