Arduboy開発にVisual Studioを使う

edit:
English version is available on [GitHub](https://github.com/hisadg/arduboy-devlopment-memo/blob/master/IDE/VS2015/README.md).

[Arduboy](https://www.arduboy.com) を手に入れました。

ArduboyはArduino互換であり、ArduinoにはVisual Studio用のプラグインが存在します。このプラグインが Arduboy で使えれば、コード補完なども効いて便利そうです。

[Arduino Plugin for Visual Studio](http://www.visualmicro.com/)

以下は、その環境を作ったときのメモです。

1. Arduino IDE セットアップ
2. Visual Studio Community 2015 セットアップ
3. Arduino Plugin for Visual Studio インストール
4. スケッチを開く
5. ビルド＆アップロード
6. Tips

## Arduino IDE セットアップ

Arduino Plugin for Visual Studio は、Arduino IDE のツールセットを使用します。なのでまずは、Arduboy を Quickstart Guide 通りにセットアップし、Arduino IDE と Arduboy で遊べる状態にします。

[Arduboy : Kickstarter Quick Start Guide](http://community.arduboy.com/t/kickstarter-quick-start-guide/725)

こちらの日本語での紹介記事が分かりやすいです。

[【Kickstarter】Arduboyレビュー、インストール手順、面白いゲーム紹介など](http://dvorak55.hatenadiary.jp/entry/2016/05/15/002427)

ArduBreakout などのサンプルで遊べることを確認したら、Visual Studioのセットアップに進みます。

##  Visual Studio Community 2015 セットアップ

Visual Studio Community 2015 をインストール。Arduino Pluginのインストール手順で「_プラグインインストール前に Visual C++追加しといてね_」と書かれてますので、**必ず  Visual C++もインストール** しておく。

選択し忘れた！ もうVisual Studio インストール済みだよ！という場合も、コンパネの"プログラムの追加と削除"から 
"Microsoft Visual Studio Community 2015"を選んで変更をクリック。

Visual C++を選んだ画面は以下のような具合。Visual Studio Community 2015 のインストールは長いので、のんびり待つ。

![vs2015_cpp.png](https://qiita-image-store.s3.amazonaws.com/0/127407/26ec6ebe-014a-c0c7-dcee-fddffcbd7df7.png)

## Arduino Plugin for Visual Studio インストール

Visual Studio のセットアップが終わったら、プラグインのインストールに進む。

[Download Arduino for Visual Studio](http://www.visualmicro.com/page/Arduino-Visual-Studio-Downloads.aspx)

インストーラをダウンロードすることも、VS2015内の ”拡張機能とプログラム" からインストールすることもできる模様。今回はインストーラをダウンロードして実行。

## スケッチを開く

Visual Studioの"ファイル", "開く" メニューを見ると、新たに "Arduino Project" が追加されている。

ここから既存の Arduino Sketch ファイル (.ino) を選択し、スケッチをプロジェクトとしてインポート。このとき、`.ino` と同じディレクトリに関連ファイル(`.vcxproj`とか)が作られる。サンプルスケッチのディレクトリが汚れるのは嫌だな、という場合は、複製したディレクトリを使うのが良いかも。

無事にロードが終わると、Visual Studio上にスケッチのコードが表示される。コードエディタを触ってみると、良い感じにコード補完が効いています。ライブラリにどんな命令があったかなー、という時も調べやすい。うれしい。

![compl.png](https://qiita-image-store.s3.amazonaws.com/0/127407/61536506-e268-5f7b-8409-efb726aea263.png)

`.ino` 以外に`.cpp`や`.h`を使っている場合も、ちゃんとプロジェクトに取り込んでくれるようです。

あと、`.{inoファイル名}.vsarduino.h`というファイルが追加されてますが、これはArduino Plugin内の設定が含まれているようです。ヘッダー内のコメントに「コンパイル時には使ってないよ」と書かれていて、書き込み時のサイズに影響しなそうですし、そのままにしておきます。

プロジェクトが取り込めたら、スケッチを Arduboy 用にビルド＆アップロードする設定を行っていく。

## ビルド＆アップロード

ビルドとアップロードに関する設定は Arduino IDE とほぼ同じ。

- ボードの種類の選択
- COMポート選択

![plugin.png](https://qiita-image-store.s3.amazonaws.com/0/127407/2d7f2da7-ae97-3d9c-7e66-8c4a08c8026f.png)

上記のようなツールバーから設定する。左から2番目が書き込むボードのタイプ、その隣のCOM5と表示されているのが通信ポート。ArduboyのQuickstart Guideを行っていれば、ボードリストにも Arduboy が出てくる。

設定が済んだら、まずはVS2015メニューの"vMicro"の"Build"からビルド。ビルドエラーがなければ、同じメニューから”Build & Upload" を選択。これでArduboy に書き込めるはずです。

ビルドとアップロードとは、ツールバーの右端2つのアイコンからも実行できます。

## Tips

#### ステップ実行の解除

Debugでビルドすると、転送後に自動でステップインデバッガが走り、スケッチの実行が止まります。これが不要なときは、vMirco メニューから "Tutorial Mode" のチェックを外します。

#### Programmerの誤選択

Programmerに誤ったものを選択していると、アップロードに失敗します。プラグインのインストール直後は Programmerの欄は "No Programmer" となっているのですが、一度 "Arduino ISP" などを選んでしまうと、元に戻せないようです。

そういう場合は、"vMicro"の"Always Use Programmer For Upload" のチェックを外すと、うまくいきます。

#### ビルドエラー

ビルドエラーがでるときは、メニューの"vMicro"の"Add Library"で"User"のリストから"Arduboy"を選択する。

#### 必要なヘッダーのinclude

Arduino IDEでは不要でも、Visual Studioでは明示的なincludeが必要なヘッダーファイルがいくつかあります。

コード補完が効かなかったり、エディタ画面で赤線が出る場合は、ヘッダーファイルのincludeを忘れていないかチェック。たとえば、ArduBreakout.inoではEEPROMで``識別子 "EEPROM" が定義されていません``とエラーが出るので、以下のようにeeprom.hをincludeしておく。

```cpp
#include <eeprom.h>
```

#### vcxproj に環境依存パスが含まれる

```
Twitter経由で情報いただきました。Thanks @koteitan!
```

プラグインが作る`.vcxproj`ファイルには環境依存のパスが含まれています。

各種ライブラリのほか、スケッチファイルのディレクトリパスも含まれます。`%AppData%`以下のパスが展開された状態で保存されているため、GitHub 等で公開するには注意が必要です。ユーザアカウント名も含まれています。

ビルド構成や構成マネージャを設定・変更していないのであれば、プラグインが作成するファイル(`.vcxproj`等)を除外して配布するのが良さそうです。