読者です 読者をやめる 読者になる 読者になる

ボクダイモリ

Life is like a Game

RaspberryPi3でLED点滅までやってみた(前編)

はてなブログからこっちのブログに移行しました

https://blog.daimori.com/


おはこんばんにちは

さて、今回はRaspberryPi3を使ってLEDをチカチカ(通称Lチカ)をしたいと思います。
回路を組んでLED点灯からコードを書いてLEDを点滅させるところまでやるので、いつもよりも 内容多めの記事になってしまうので、前編と後編に分けさせていただきます。

記事の流れは以下のような感じで

  1. LED点灯
  2. スイッチを押したときにLEDを光らせる
  3. ピンからの入力を受け取る

LED点滅のコードはPyhtonを使って実装します。

使用した備品は以下の通り

  • RaspberryPi3(OSはRaspbian、SSH接続設定済み)1個
  • ブレッドボード  1個
  • 抵抗 10Ω    1個
  • LED        1個
  • タクトスイッチ  1個
  • ジャンパーワイヤ(無くてもよい) 1本
  • ジャンパーワイヤ(オス-メス) 2本

1.LED点灯

回路を組んでみる

まずは回路を組むところから
RaspberryPi3のGPIOピンやグランドの位置などは以下のように なっています。

f:id:anrakusan:20160505101545p:plain 引用元:Raspberry Pi 3 Model B GPIO 40 Pin Block Pinout | element14 | Raspberry Pi 3

今回使うピンは

  • GPIO25
  • グランド(今回はPin#39の方)
    です。

実際に組んでみた回路がこちら

f:id:anrakusan:20160505101938j:plain:w300

接続の仕方としては

GPIO25→抵抗(ジャンパーワイヤで繋ぐ)
抵抗→LED(長い方)
LED(短い方)→グランド(ジャンパーワイヤで繋ぐ)
といった感じです。
これで回路は完成。次はこの回路に実際に電流を流してみましょう。

LEDを点灯させてみる

RaspberryPi3の電源を入れて、SSHでログインしましょう。
GPIOにアクセスするためにはroot権限が必要なのでrootになります。

pi@raspbian01:~ $sudo su
root@raspbian01:/home/pi#

rootになったら今回使うGPIO25にアクセスするための準備をします。

root@raspbian01:/home/pi# echo 25 > /sys/class/gpio/export

こうすることで/sys/class/gpio/gpio25/というディレクトリが新しく作成されます。
次はこのディレクトリ内で作業することになるので、ディレクトリを移動しておきましょう。

root@raspbian01:/home/pi# cd /sys/class/gpio/gpio25/
root@raspbian01:/sys/class/gpio/gpio25#

次に、LEDを点灯させるために接続されているGPIO25を出力用とするように設定します。

root@raspbian01:/sys/class/gpio/gpio25# echo out > direction

設定したら以下のコマンドを実行することでLEDが光るはずです。

root@raspbian01:/sys/class/gpio/gpio25# echo 1 > value

LEDが光ったら成功です!
RaspberryPiではこのようにファイルを操作することによってGPIOを制御できます。
次はタクトスイッチを実装して、スイッチを押したときだけ
LEDが光るようにします。めっちゃ簡単なのでさくっとやります。

2.スイッチを押したときにLEDを光らせる

まず作成した回路ですがこんな感じ

f:id:anrakusan:20160505112710j:plain:w300

抵抗とLEDの間にスイッチを挟んだだけですね。
ただ、スイッチの向きだけ気を付けてください。
スイッチの仕組みとしては抵抗寄りの2つのピンとLED寄りの2つのピンは 普段は繋がっていないのですが、スイッチを押しているときだけ繋がります。
では、GPIO25をONの状態にしてスイッチを押してみましょう。
スイッチが押されている時だけLEDが光っていると思います。

次はLEDが光っている状態を入力用のGPIOを使って取得してみます。

3.ピンからの入力を受け取る

回路に入力用のGPIOを追加してみる

入力用のピンを設定するのですが、今回はGPIO24を使います。
新しいジャンパーワイヤを追加することで回路がごちゃごちゃになりそうだったので、
スイッチがある部分とLEDの部分を分けて、回路を青いジャンパーワイヤで繋ぎました。
また、入力用のGPIO24とブレッドボードは赤いジャンパーワイヤで繋ぎました。
組み立てた回路はこんな感じ

f:id:anrakusan:20160505114518j:plain:w300

ちょっとワイヤが混み合ってきましたが回路的には、赤いジャンパーワイヤが
前の回路の間に入っただけですね。
ここでスイッチを押したときにLEDが光るかどうかも確認してみてください。
確認したら次は実際にGPIO24から回路の状態(ON or OFF)を取得してみましょう。

GPIO24への入力値を取得

GPIO25からの出力を受け取るためのGPIO24を新しく設定します。 GPIO25と同じようにGPIO24をエクスポートしましょう。
そして新しくできたディレクトリへ移動しておきます。

root@raspbian01:/sys/class/gpio/gpio25# echo 24 > /sys/class/gpio/export
root@raspbian01:/sys/class/gpio/gpio25# cd /sys/class/gpio/gpio24

GPIO24を入力用に設定

root@raspbian01:/sys/class/gpio/gpio24# echo in > direction

設定が完了しましたので、入力値を取得してみましょう。

root@raspbian01:/sys/class/gpio/gpio24# cat value
0

スイッチを押していなければ0が出力されると思います。
次はスイッチを押したまま先ほどのコマンドを実行してみてください。
1が出力されれば成功です!

この続きは後編でやります

anrakusan.hateblo.jp

Raspberry Piをはじめよう (Make: PROJECTS)

Raspberry Piをはじめよう (Make: PROJECTS)

Raspberry Pi 3 MODEL B

Raspberry Pi 3 MODEL B