【動画解説付き】初心者のためのラズパイLチカ完全ガイド （シェルスクリプトでLチカ）

![アイキャッチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538330/4d09bc79-635e-aada-f6d7-e0de079d0913.png)
どうも、プログラミングの鬼シヨツ鬼です。
この記事では「Raspberry Pi(ラズパイ)で電子工作を見てみたいぜ」って人に向けて電子工作の基本であるLEDをチカチカさせる(Lチカ)方法を電子回路の作成からプログラム作成まで説明します。
初心者向けにコマンドの意味などもできるだけ説明しているので、ぜひ参考にしてみてください。

ちなみに、この記事は次の動画と同じ内容ですので、記事だけだと分かりづらい部分は、そちらもご活用ください。
**(ボタンの位置や操作方法などがわかるので、初心者の方は動画のほうが分かりやすいかも)**
[YouTube:【電子工作】ラズパイでLチカをする方法を0から解説](https://youtu.be/GyHtfkoBZ4Q)

|Lチカとは？  |
|:--|
|LEDをチカチカ光らせることです。光らせるだけなので、地味といえば地味ですが、とてもシンプルで分かりやすいため電子工作をする上では最も基本となる題材です。ここから応用させていくと自分が本当に作りたいものを作れる人になれます。まぁ、正直、「こんだけやってLEDチカチカさせるだけかいっ」って気持ちも分かりますが（笑）|

#準備するもの
・Raspberry Pi 3 model B（OSインストール済のもの。OSのインストール方法は[こちら](https://qiita.com/shiyotsuki/items/150b5b476bce79a54544)）
・LED×１
・ブレッドボード×１
・ジャンパー線×2 (色が異なるほうが好ましい。本記事では黒と白)
・抵抗×1
・器用な手先と負けないハート

#電子回路を組む 1
次のように電子回路を組みます。
この時、使うLEDにふさわしい抵抗値が分からない場合は、大きい抵抗値を選び、暗かったり光らなかったりしたら徐々に下げていくという方法をとると安全です。
ラズパイに電源が入っていればLEDが光るはずなので、光ることを確認してください。

|つなげるもの  |つなげる先  |
|:--|:--|
|LED長いほう(+端子) |ブレッドボード(7h)|
|LED長いほう(+端子) |ブレッドボード(8h)|
|抵抗(+端子) |ブレッドボード(1f)|
|抵抗(-端子) |ブレッドボード(7f)|
|ジャンパ線(黒)オス端子 |ブレッドボード(1j)|
|ジャンパ線(白)オス端子 |ブレッドボード(8j)|
|ジャンパ線(黒)メス端子 |ラズパイ(内側の一番左ポート)|
|ジャンパ線(白)メス端子 |ブレッドボード(外側の左から3番目のポート)|

![電子回路.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538330/2ec3dccd-1b9d-e251-c281-c3b9149d841e.png "回路が完成した様子")

#電子回路を組む 2
LEDが光ることを確認したら、次のように電子回路を組み替えます。
(プログラム制御可能な端子につなぎ変えます。)

|つなげるもの  |つなげる先  |
|:--|:--|
|ジャンパ線(黒)メス端子    |ラズパイ(内側の一番左ポート)→ラズパイ(内側の左から2番目のポート)|

#プログラムを作る
次のようなスクリプトプログラムを作ります

```shell:Lchika.sh
echo 2 > /sys/class/gpio/export      #GPIO2の解放
sleep 1      #1秒待機
echo out > /sys/class/gpio/gpio2/direction      #出力方向に切り替え
sleep 1
echo 1 > /sys/class/gpio/gpio2/value      #LEDを光らせる
sleep 1
echo 0 > /sys/class/gpio/gpio2/value      #LEDを消す
sleep 1
echo 1 > /sys/class/gpio/gpio2/value
sleep 1
echo 0 > /sys/class/gpio/gpio2/value
sleep 1
echo 2 > /sys/class/gpio/unexport      #GPIO2の解放をやめる
```

プログラムの意味は、次の通りです。

**echo 2 > /sys/class/gpio/export**
ジャンパ線(黒)メス端子をラズパイ(内側の左から2番目のポート)に差し替えましたが、実はこの差し替えたピンのことをGPIO2と呼びます。「export」はGPIOピンを解放するためのプログラムです。この行が実行されることで「2」という値を「export」プログラムに書き込むため、GPIO2がプログラム制御可能な状態になります。

**echo out > /sys/class/gpio/gpio2/direction**
GPIO2が解放されると、「gpio2」というフォルダが作られ、その中に「direction」というファイルも作られます。GPIO2は、この「direction」ファイルがinだと入力モードとなり、outだと出力モードになります。

**echo 1 > /sys/class/gpio/gpio2/value**
GPIO2が解放されると、「gpio2」というフォルダが作られ、その中に「value」というファイルも作られます。GPIO2は、この「value」ファイルが1だと電気が流れ、0だと電気が流れません。

**echo 2 > /sys/class/gpio/export**
「unexport」はGPIOピンの解放をやめるためのプログラムです。この行が実行されることで「2」という値を「unexport」プログラムに書き込むため、GPIO2がプログラム制御不可能な状態になります。
「gpio2」フォルダも削除されます。

#プログラムを改良する
先ほどのプログラムを改良して10回素早くチカチカするようにします。

```shell:Lchika.sh
echo 2 > /sys/class/gpio/export      #GPIO2の解放
sleep 1      #1秒待機
echo out > /sys/class/gpio/gpio2/direction      #出力方向に切り替え
sleep 1
for count in {0..10};      #10回繰り返す
do      #ここから
echo 1 > /sys/class/gpio/gpio2/value      #LEDを光らせる
sleep 0.2
echo 0 > /sys/class/gpio/gpio2/value      #LEDを消す
sleep 0.2
done      #ここまで
echo 2 > /sys/class/gpio/unexport      #GPIO2の解放をやめる
```

#まとめ
LEDがチカチカして楽しいね。
最後まで、読んでくれてありがとう。
参考になったら「:thumbsup_tone2:」押してね