はじめてのArduino（Lチカ） 2017年版



#電子工作の心構え
まず電子工作に取り掛かる前に、電子工作の流れを確認します。
流れは次の図のように４つのステップを踏みます。

![Kobito.M0hpxG.png](https://qiita-image-store.s3.amazonaws.com/0/135757/372f29ca-d13c-ac53-c941-102dcc9520f2.png "Kobito.M0hpxG.png")
([Device PLUSさんの記事](http://deviceplus.jp/hobby/entry_002/)中の画像を引用しています)


ここにあるように、一番大事なのは、1番の何を作りたいか、です。ここから、何が必要なのか、どのような回路にするか、などが決まります。
　ただ、例えば遊びとして赤外線センサーを使いたい！みたいに、デバイスからはいるのもそれも一つの電子工作の面白い部分なのでありです。要はむやみに何かをやる前に**目的をもって物事にとりかかりましょう**ということです。これは電子工作にかぎらず、物事一般に言えることかもしれません。

#Arduinoとは
　Arduinoは、あんまり電子回路などの知識がない人でも、ある程度簡単に電子工作が出来るよ！っていうデバイスです。ある程度、なので、最低限の知識は必要となってきます。
　
##Arduino本体の仕組み
- デジタルI／Oピン：デジタルの入出力を行います。デジタルの入出力とは、HIGH、LOWつまりON、OFFのみの値の判別しかできません。
- アナログINピン：アナログの入力が可能です。プログラム側で、0~1023までのアナログ値を取得可能です。なお、デジタルピン3,5,6,9,10,11はアナログ出力としても設定可となっています。
- 1ピン20mAまで：1ピンあたりの耐電圧は20mAとなっています。

##Arduino環境設定
ArduinoにはArduino IDEという専用のコンパイラーソフトがあります。[こちら](https://www.arduino.cc/en/Main/Software)のページからインストールしてください。

動作は基本的にC++に似たArduino語で記述します。ただ、最近ではJavaScriptでも書けるパッケージが出たりと、Webの人でも親しみやすくなっています。

#Lチカ
　Webプログラミングでは、始めの一歩として**Hello World**を画面に出力することが多いですが、電子工作での始めの一歩ではLEDを光らせます。それを**Lチカ**と言います。

##必要な部品
- Arduino：Arduinoと言っても色々種類があります。今回は性能、価格から優れていてよく使われるArduino UNOを使用しています。2017年2月時点で、Amazonでは3240円で売っています。([Amazon:Arduino UNO](https://www.amazon.co.jp/%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%82%B9-%E6%B0%B8%E4%B9%85%E4%BF%9D%E8%A8%BC%E4%BB%98%E3%81%8D-Arduino-Uno/dp/B0044X2E5S/ref=sr_1_2?ie=UTF8&qid=1486272116&sr=8-2&keywords=arduino))
- LED：LEDと言っても色々種類があります。今回は簡単な構造になっている砲弾型のLEDを使います。ネットだとバラで売っておらず、まとまって購入するようです。Amazonでは100個単位。ただ消耗品かつ安いので、100個でも問題ないかと。もし近くに電子機器を扱う店があれば問い合わせると、バラで買えるかもしれません。([Amazon:LED](https://www.amazon.co.jp/100%E5%80%8B%E5%85%A5%E3%82%8A-LED-5mm-%E7%A0%B2%E5%BC%BE%E5%9E%8B-14000-16000mcd/dp/B01JLGNLIQ/ref=sr_1_18?ie=UTF8&qid=1486272515&sr=8-18&keywords=LED))

##プログラム
それでは、Arduino IDEで新しいファイルを作り次のように記述しましょう。

```
int led =13;

void setup() {
  // put your setup code here, to run once:
  pinMode(led,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
	digitalWrite(led,HIGH);
}
```

　void setup(){}の部分は最初に1回実行するところで、loopのところは、連続して実行するところです。
　付け加えるのは、``int led = 13``と``pinMode(led,OUTPUT)``の２つです。
　これを簡単に説明すると、
- int型のledという変数を13に設定
- pinMode関数で、13番ポートをOUTPUT(出力)ポートとして設定する
- digitalWrite関数で、第1引数のポート（今回はled=13番）をHIGHつまりONにする
という感じです。
　
##コンパイル&書き込み
　Arduinoでコードを読み込む前に、コードをコンパイルして、ちゃんと機械語になるかどうかのチェックをします。
###コンパイル
　ここでコンパイルエラーがでると、画面下の黒い部分にエラー文が出てきます。コンパイルは、画面上部分のチェックマークのアイコンをクリックして実行します。
　
うまく成功したら「コンパイルが完了しました」という文がでて、下のようになります。

![Kobito.3cOZYy.png](https://qiita-image-store.s3.amazonaws.com/0/135757/77b570d6-e212-d6ec-0901-03edbddc7790.png "Kobito.3cOZYy.png")

###書き込み
　それでは、これをArduinoに書き込みます。書き込むには先程のコンパイルを行ったチェックボックのアイコンの右にある右矢印のアイコンをクリックして実行します。

おっとここでエラーが出てきました。

![Kobito.SDwRvO.png](https://qiita-image-store.s3.amazonaws.com/0/135757/fbdcd97e-359f-8652-4fe2-6aa389254bd2.png "Kobito.SDwRvO.png")

これは、デバイスが検出されませんでした、というエラーで書き込み先がきちんと設定されてないために起こります。
書き込み先の設定はArduinoの[メニュー]から[ツール]→[シリアルポート]で設定します。色々とデバイスのパスが出てきますが、今回Arduinoを扱っているので、 **Arduino ●●** を選んでください。（●はArduinoの機種名UNOなど）

再度書き込みを行うと、「ボードへの書き込みが完了しました」というメッセージがでてきます。

![Kobito.oFp76a.png](https://qiita-image-store.s3.amazonaws.com/0/135757/578c9ce3-4959-f4ab-01ca-8c5476e85352.png "Kobito.oFp76a.png")

##Lチカ
　それではLEDをセットしましょう。本来はブレッドボードなどを用いて回路をつなげるのですが、今回は簡単にLEDをそのままピンに差し込みます。
　
**ここで注意です**
　LEDには足が2本ありますが、つなぎ方で注意することがあります。この足は微妙に長さが違っていて、長いほうをアノード、短いほうをカソードといいます。そして、つなぎ方のルールがあり、アノードがプラス側、カソードがマイナス側につないでください。
　
　ここでは、アノードを13番ピン、カソードの足をGNDに差し込んでください。ここで万一逆につなげると、LEDが壊れます。誰でも一度はやることなのですが、LEDはよく扱う部品なので、このルールは守ってください。

![lchika.gif](https://qiita-image-store.s3.amazonaws.com/0/135757/86d86460-a61d-9da2-87cc-597192b97612.gif)

#おまけ：どこで部品買えばいいのか
　ハードウェア、電子工作を扱う上で、ソフトと違い必ず部品、ハードが必要となります。ここでは、私がよく使う店を紹介します。

**リアルな店舗**
基本的に秋葉原です。

- 秋月電子：言わずと知れた電子工作のメッカ。秋葉原にあり、店内はいつも混んでいる。閉まるのが結構早いので、時間には注意。売り物が多すぎるので、売り場がわからなかったら店員さんに聞くのがいい。ただ、なるべく部品の製品番号を把握してから尋ねるのが吉。
　　
- 千石電子：秋月の隣にあり秋葉原の双璧をなす電子部品店。アルミ板とか電子部品以外の工作物が売っている。確か２つの店舗にまたがっている。

**ネット通販**

- Amazon：まず使ってしまうのがAmazon。最近は、中国メーカーが参入した商品が多く、かなり安いセンサーも見つかる。発送から到着時間は要チェック
　
- Aliexpress：安さならこちら。ただ基本的に中国からの発送なので、時間がかかる。また、注文してから発送されない、というトラブルも少なからずある。
https://ja.aliexpress.com/
　
- スイッチサイエンス：スイッチサイエンス社製のものから、いろいろな商品を扱う。Amazonに無い商品で、早く届けて欲しいときなどに利用した。
https://www.switch-science.com/
　
- 秋月電子通商：秋月電子の通販版。秋葉原に近寄らない人、遠い人にはこれを利用するのが良い。送料は沖縄や北海道、離島であっても1梱包あたり500円というインド人もびっくりの値段設定。
　なお、ここで欲しい部品の製品番号を確認し、実店舗で店員さんに伝えて買うのがスマート。
http://akizukidenshi.com/catalog/default.aspx

#参考ページ
- http://deviceplus.jp/hobby/entry_002/