レッツラズパイ！〜Lチカ＆Lピカをマスターしよう編〜

## レッツラズパイ！・プロジェクト
1. [レッツラズパイ！〜Raspberry3にOSをインストールしよう〜](https://qiita.com/westvirginia/items/edc3b56da7be58419d70)  
[【番外編】レッツラズパイ！〜"ディスプレイなしで"RaspberryPiにOSをインストールしよう編〜](https://qiita.com/westvirginia/items/0d3b7d7dd19116cc14bf)
2. レッツラズパイ！〜Lチカ＆Lピカをマスターしよう編〜(これ)
3. [レッツラズパイ！〜Webカメラで監視しちゃうゾ編〜](https://qiita.com/westvirginia/items/ba79f7549b43da116467)
4. [レッツラズパイ！〜温度センサーとmailgunで検知メールを送ろう編〜](https://qiita.com/westvirginia/items/c06887fd464e3718082d)
5. [レッツラズパイ！〜Google HomeでLピカさせよう編〜](https://qiita.com/westvirginia/items/47437d547485cd2784ef)
6. [レッツラズパイ！〜Google Homeに室温を教えてもらおう編〜](https://qiita.com/westvirginia/private/f0842c034695665a78a6)
7. [レッツラズパイ！〜Lチカボタン編〜](https://qiita.com/westvirginia/private/7b33d27ce50d30895e13)

RaspberryPiを始めて触る＆IT初心者向けのドキュメントです。私の所属する会社で使う、IT初心者の方のインターンシップ向けのドキュメントとして書きはじめたので、かなり丁寧に書いていますがご了承下さい。

## Lピカさせよう
### 完成形
こんな感じでLEDランプをピカらせましょう  
![IMG_2960.JPG](https://qiita-image-store.s3.amazonaws.com/0/164786/0a794eb8-0d11-0df9-82a8-298949804230.jpeg)

### 準備するもの
- LEDランプ　×１
- ジャンパーワイスのメス×オス端子　×2
- 抵抗　×１
- ブレッドボード　×１

![IMG_2959.JPG](https://qiita-image-store.s3.amazonaws.com/0/164786/0d81f488-84f9-26f3-57d3-3ef9221731a9.jpeg)

### 配線の前に
配線する前に、今回使用するブレッドボードと、RaspberryPiの本構成について理解しておきましょう

#### ブレッドボードって？
ブレッドボードは、はんだこてをしなくても簡単に電子回路を組める事を目的とした検証用の電子回路基板のことです。今回使用するブレッドボードはこのように縦に回路がつながっています。

![board.jpg](https://qiita-image-store.s3.amazonaws.com/0/164786/79f98465-d43b-a102-edf0-979e9e0d3618.jpeg)

#### RaspberryPiのピン構成について
今回使うRaspberryPiのピン構成について理解しておきましょう。RaspberryPiにはGPIOと呼ばれる40本のピンが用意されています。どのピンがどんな役割なのかは公式のドキュメントに詳しく記載されています。（参考:[GPIO: MODELS A+, B+, RASPBERRY PI 2 B AND RASPBERRY PI 3 B]
(https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md0))

今回はひとまず以下のピンの名前と役割を理解しておきましょう。

|ピン名|説明|
|:----|:-----|
|GPIOピン|入出力を制御のピン|
|GNDピン|電流を逃がすためのピン。マイナス極側と接続する。|
|3.3V、5.5Vピン|電源のピン|

これがどのピンがどんな役割なのかを表した図です。ここで注意してほしいのが、GPIOにはそれぞれ番号が振られていますが、順番がバラバラになっていることです。
![gpio-numbers-pi2.png](https://qiita-image-store.s3.amazonaws.com/0/164786/c0145117-d1bc-48c1-d31b-32b430a0b254.png)

下の図は、全てのピンに物理的な番号を振った図です。SDカードに一番近いピンが1番ピンとなります。ですので、例えばここでいう7番ピンはGPIO4番ピンとなるので、ごっちゃにならないように気をつけて配線して下さい。本ドキュメントでは、下の図を参照して◯◯番ピンと記載することにします。
![physical-pin-numbers.png](https://qiita-image-store.s3.amazonaws.com/0/164786/4d64d601-a1e7-d98a-ecfc-18fe72414d66.png)

### 実際に配線する
それでは配線します。配線する順番は、まずブレッドボードに配線し、その後ジャンパーワイヤーをRaspberryPiに接続していきます。

#### ブレッドボード側の配線 
配線をさっそくはじめてみますが、配線をする場所によって役割が違いますので慎重に行いましょう。まずは、ブレッドボード側から配線します。分かりやすくするためにブレッドボードに番号を振りました。
![IMG_2959A.jpg](https://qiita-image-store.s3.amazonaws.com/0/164786/d680526b-2b1e-a561-59c2-0b0629e3cee2.jpeg)

下の表を参考にブレッドボードにLED、抵抗、ジャンパーワイヤーをそれぞれ接続していきます。

|製品|接続するブレッドボードの場所|補足|
|:---|:---|:---|
|LED|F6(+)、F7(-)|長いほうが(＋)、短いほうが(-)|
|抵抗|H3、H6|極性（プラスマイナス）無し|
|ジャンパーワイヤー|J3、J7|この後、J3→電源、J7→GNDに接続する|

LEDをつなぐ時には、プラスとマイナスを間違えないように注意しましょう。足の長い方がプラス、短いほうがマイナスです。
![IMG_3419.jpg](https://qiita-image-store.s3.amazonaws.com/0/164786/e5a8960b-c8a7-5e37-4c7a-67d7a9a9ae8d.jpeg)

以下の配線図を参考にしてください。

![配線3.jpg](https://qiita-image-store.s3.amazonaws.com/0/164786/9b4fecd4-09f1-8fec-afb7-f201b317588b.jpeg)

#### RaspberryPi側の配線
まず、マイナス側のジャンパーワイヤーをGNDに接続します。今回は6番ピンにマイナスのジャンパーワイヤーを接続しましょう。

次に、プラス側を直接電源に接続していきます。電流が強すぎるとLEDが壊れてしまう危険があるので、3.3Vの1番のピンを使用します。

以下の配線図を参考にしてください。

![haisen.jpg](https://qiita-image-store.s3.amazonaws.com/0/164786/a0d93a4e-128b-3aff-55f1-39bc3d47a0d3.jpeg)


おめでとうございます。LEDランプが点灯しましたね。これでLピカは完了です。




## Lチカさせよう
### 完成形
![IMG_3427.MOV.gif](https://qiita-image-store.s3.amazonaws.com/0/164786/9619e245-01e5-252f-05e7-6c93f48999a3.gif)

Lチカは名前の通り、LEDランプをチカチカさせることです。どうやってチカチカさせるかというと、電流を流したり、止めたりと、入出力を制御することでチカチカを実現します。入出力を制御するためには、RaspberryPi本体からGPIOに対して、入出力をするためのプログラム（コマンド）を実行します。

### GPIOの入出力設定を理解する
まず、ブレッドボードの配線はそのままで、Raspberry PiのGPIOポートのプラス側を、1番ピン（3.3V電源）からとなり3番ピン（GPIO2）に差し替えます。GPIOはデフォルトが通電状態ですので、差し替えてもLEDランプは点灯しています。

![IMG_3426.JPG](https://qiita-image-store.s3.amazonaws.com/0/164786/02c619b9-71dd-0a17-3ba6-55978a9621b0.jpeg)

次にGPIOポートを使用する準備をしていきます。TeraTerm等でRaspberry PiにSSH接続しましょう。

```
$ ssh pi@(RaspberryPiのIP)
```

SSH接続ができたら、GPIOポートを開放するため以下のコマンドを実行してください。

```
$ echo 2 > /sys/class/gpio/export
```

GPIO2を解放すると、/sys/class/gpio/gpio2というディレクトリが作成されます。このディレクトリの中にGPIOを制御するための様々なファイルがあります。下記コマンドでgpio2というディレクトリがあるか確認してください。

```
$ ls -la /sys/class/gpio/
```

次に、この「gpio2」が、入力と出力のどちらを行なうかを指定していきます。入出力を設定するのは「direction」です。以下のコマンドを実行してください。

```
$ echo out > /sys/class/gpio/gpio2/direction
```

今回は信号を発信する側＝出力なので「out」を指定します。コマンドを実行するとLEDが消灯します。これで個別に制御できるようになります。

出力の値は「value」に設定します。「1」を設定すると電流が流れてLEDが点灯します。消灯させる場合は「0」を設定して電流の流れを止めます。以上のことをふまえて、以下のコマンドを一行ずつ実行してください。

```
$ echo 1 > /sys/class/gpio/gpio2/value #点灯
$ echo 0 > /sys/class/gpio/gpio2/value #消灯
```

「gpio2」の制御を今度は終了させます。以下のコマンドを実行して終了させてください。

```
$ echo 2 > /sys/class/gpio/unexport
```

「export」の反対で「unexport」ですね。これを実行すると「gpio2」のディレクトリが消去されます。確認してみましょう。

```
$ ls -la /sys/class/gpio/
```

### Lチカプログラムを作成してみる
続いて、今度は自動でLチカさせる設定をします。まずはプログラムを書くための適当なディレクトリを作成し、シェルスクリプト(lchika.sh)を作成します。

```
$ mkdir -p $HOME/work && cd $_
$ touch lchika.sh
```

自動でLチカをするプログラムを作成します。vim等のエディタで下記プログラムをコピペして作成して下さい。

```
$ vim lchika.sh

#-------以下をコピペ-------#

#!/bin/sh
echo 2 > /sys/class/gpio/export
sleep 1
echo out > /sys/class/gpio/gpio2/direction
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 0 > /sys/class/gpio/gpio2/value
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 0 > /sys/class/gpio/gpio2/value
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 2 > /sys/class/gpio/unexport
```

さっそく先程作成したプログラムを実行してLチカをさせてみましょう！以下のコマンドを実行してください。

```
$ . lchika.sh
```
チカッ、チカッとすれば成功です。これであなたもLチカマスターですね♪

![IMG_3427.MOV.gif](https://qiita-image-store.s3.amazonaws.com/0/164786/9619e245-01e5-252f-05e7-6c93f48999a3.gif)

Lチカ＆Lピカをマスターしよう編は以上です。お疲れ様でした♪次回は[レッツラズパイ！〜Webカメラで監視しちゃうゾ編〜](https://qiita.com/westvirginia/items/ba79f7549b43da116467)です♪



## 追記
pythonでもチカらすことができます。
[RaspberryPi3でPythonを使ってLチカさせる](https://qiita.com/westvirginia/items/4e75b5220f6bfddf21d1)