【mbed】mbedの使い方（プログラムを書いて動かす）


前回の記事では、`mbed`の**開封からユーザー登録まで**を紹介しました。
この記事では、実際にプログラムを書いてmbedを動かして遊ぶ方法を紹介します。

## 最初に
まず`mbed`の開発言語は`C++`である。なので`C言語`の**基礎文法**くらいは理解していないと遊ぶことはできません。

 
## 1. mbedのHPに飛ぶ
 
 以下リンク先よりmbedのHPに飛んで下さい。
[mbedのHP](https://developer.mbed.org/ "mbedのHP")
 ![01.png](https://qiita-image-store.s3.amazonaws.com/0/75221/6a8fa131-06dd-e9f8-a7e3-2a2941e92160.png "01.png")
 
 
## 2. 「Compiler」をクリック
右上にある「Complier」 をクリックして下さい。
![02.png](https://qiita-image-store.s3.amazonaws.com/0/75221/fe84900e-a501-48c2-44be-708b2bcba9a5.png "02.png")


## 3. Workspaceに飛んだことを確認
下のような画面が出て来れば成功です。
![03.png](https://qiita-image-store.s3.amazonaws.com/0/75221/7361fb81-a1cb-f00f-227c-7169dad22748.png "03.png")


## 4. 新規プログラムの作成
左上の「新規」ボタンをクリックして下さい。
![04.png](https://qiita-image-store.s3.amazonaws.com/0/75221/2be4174d-ed62-9d55-57d4-6d493a206961.png "04.png")

すると、下のような**警告**が出てくると思います。
![05.png](https://qiita-image-store.s3.amazonaws.com/0/75221/e57b99ef-07eb-346d-5faf-c79c4f746ea3.png "05.png")
指示に従って、**Platformを追加**します。
「Add Platform」ボタンをクリックして下さい。

## 5. Platformの選択
「Add Platform」ボタンをクリックしたら、以下のようなPlatformを選択できる画面に移ると思います。
![スクリーンショット 2015-10-27 17.54.38.png](https://qiita-image-store.s3.amazonaws.com/0/75221/3806936e-876f-1ca6-2041-4995d0f5342b.png "スクリーンショット 2015-10-27 17.54.38.png")

今回遊ぶPlatformはmbed_LPC1768なので、以下のように**mbed_LPC1768**の画像をクリックしてください。
![sample.png](https://qiita-image-store.s3.amazonaws.com/0/75221/7db18d31-f3c4-a787-44a6-53de909db805.png "sample.png")

すると、以下のようにmbedの詳細ページに飛びます。
詳細の内容はどうでもいいので、**「Add to your mbed Compiler」**をクリックしてください。
これでmbed_LPC1768があなたのmbedコンパイラに追加されました。
![sample2.png](https://qiita-image-store.s3.amazonaws.com/0/75221/f4271ded-3a68-0e5a-3f9f-5caa5c43929f.png "sample2.png")


## 6. mbedコンパイラを開く
Platformを選択したら、さきほどの「Add to your mbed Compiler」ボタンが**「Open mbed Compiler」**ボタンに変わっていると思います。
それでは、「Open mbed Compiler」ボタンを押してmbedコンパイラを開きましょう。
![sample4.png](https://qiita-image-store.s3.amazonaws.com/0/75221/655b1335-6944-4540-853d-d86e13bfa41e.png "sample4.png")


## 7. 再びWorkspaceに飛んだことを確認
「Open mbed Compiler」ボタンをクリックして、以下のようにWorkspaceに飛んだら成功です。
![スクリーンショット 2015-10-27 17.55.53.png](https://qiita-image-store.s3.amazonaws.com/0/75221/d3b9e62f-640e-550a-f584-bd945dcb215c.png "スクリーンショット 2015-10-27 17.55.53.png")


## 8. 新規プロジェクトを作成
デフォルトでは以下のように**プログラム名**がうまった状態だと思います。今回は、デフォルトの名前でプロジェクトを作成しましょう。
**「OK」**ボタンを押して、新規プロジェクトを作成しましょう。
![sample5.png](https://qiita-image-store.s3.amazonaws.com/0/75221/63e62cdd-5292-665b-f965-3247084d17fc.png "sample5.png")


## 9. 作ったプロジェクトを確認
マイプログラムというディレクトの中に、**mbed_blinky**というディレクトリがあることを確認してください。
![sample6.png](https://qiita-image-store.s3.amazonaws.com/0/75221/c748d642-ce68-fc4e-040d-b96a83406755.png "sample6.png")


## 10. プログラムファイルを確認
プログラムファイルとは、実際にコードをかいていくファイルです。mbed_blinkyというディレクトリの中に`main.cpp`というファイルがあることを確認してくだしさい。これが、プログラムファイルになります。
![sample7.png](https://qiita-image-store.s3.amazonaws.com/0/75221/04c917c8-a3b6-b5cd-6862-77d53434a17e.png "sample7.png")


## 11. ソースコードを確認
`main.cpp`をクリックすると、以下のように右側にmain.cppにかかれている**ソースコード**が表示されます。
![sample8.png](https://qiita-image-store.s3.amazonaws.com/0/75221/d4a0a372-b9a8-7fac-1789-bc1de26d3750.png "sample8.png")

ソースコードの中身を見てみましょう。

```C++:main.cpp
#include "mbed.h"

DigitalOut myled(LED1); // ピンの初期化

int main() {
	while(1) { // 無限ループ
		myled = 1; // 点灯する
		wait(0.2); // 0.2秒待つ
		myled = 0; // 消灯する
		wait(0.2); // 0.2秒待つ
	}
}
```

**1行目: include "mbed.h"**
`mbed.h`というヘッダファイルをインポートします。
このファイルをインポートすることによって、mbedを利用することができます。

**3行目: DigitalOut myled(LED1);**
DigitalOutで操作したいピンを変数で定義することができます。

```C++:使い方
DigitalOut name(pin);
```

mbed基盤上のLEDを点灯させる場合は、`LED1~LED2`を指定します。

デフォルトのソースコードでは、LED1を点灯させたいので、`myled`という変数でLED1を指定しています。

**5行目: int main() {**
main関数のスタートの意味を表しています。

**6行目: while(1) {**
whileの条件式が1なので無限ループがおきます。

**7行目: myled = 1;**
myled（LED1）を`true`にしてLED1を点灯することができます。

**8行目: wait(0.25);**
wait関数は引数の数秒プログラムを止めます。
この場合、0.25秒待つことになります。

**9行目: myled = 0;**
myled（LED2）を`false`にしてLED2を消灯することができます。

**10行目: wait(0.25);**
8行目と一緒ですね。0.25秒待ちます。

無限ループなので、あとはこれをひらすら繰り返していきます。
つまり、LED１が0.25秒ごとについたり、消えたりします。


## 12. コンパイルをする
動かすソースコードが完成したら、以下のように**「コンパイル」**ボタンをクリックします。
![sample9.png](https://qiita-image-store.s3.amazonaws.com/0/75221/0dae9a6c-4cac-6fd6-92fa-f3755c8460f2.png "sample9.png")


## 13. ダウンロードされたファイルを確認
「コンパイル」ボタンをクリックしたら、**ダウンロードディレクトリ**に`mbed_blinky_LPC1768.bin`というファイルがダウンロードされます。
![sampl10.png](https://qiita-image-store.s3.amazonaws.com/0/75221/33f7f317-7c44-63eb-4bb1-91e465f6f544.png "sampl10.png")


## 14. ダウンロードされたファイルをMBEDに移動
ダウンロードされた`mbed_blinky_LPC1768.bin`を`MBED`に移動させましょう。
![sample11.png](https://qiita-image-store.s3.amazonaws.com/0/75221/2312fae0-c911-8b83-abe7-899630f43812.png "sample11.png")


## 15. プログラムを起動
お待たせしました。待ちに待ったプログラムの起動をします。
プログラムの起動は、下のmbed本体の**リセットボタン**を押します。
![sample15.png](https://qiita-image-store.s3.amazonaws.com/0/75221/9e404901-0118-4d93-8def-9ecd74451112.png "sample15.png")


## 16. プログラムが動いているか確認
mbed本体をみて、LED1が0.2秒ごとに点滅していることを確認してください。
mbedをプログラムで動かすことができましたね。
お疲れ様です。


## 17. 補足
今後、上記の流れでプログラムをかいてコンパイルして、新たにできたファイルをMBEDに保存すると思います。
その場合、**既存のファイルは残しておいてかまいません。**
リセットボタンを押されると、MBEDの中で最新のファイル( タイムスタンプ)を実行するように作られています。


# おわりに

ここまでで、デフォルトのコードを使ったプログラムの実行方法を学ぶことができましたね。
次回の記事は、応用プログラムをかいてコードなmbed制御をしてみましょう。