ホーム >  RaspberryPi >  スイッチでLEDをコントロールする(RaspberryPi3)


Posted:2016/12/23 9:00:15 AM|Category : RaspberryPi

スイッチでLEDをコントロールする(RaspberryPi3)

ラズベリーパイ3でLチカができましたら、次はスイッチでLEDのON/OFFを切り替えてみましょう。

前回のLチカ

前回は、Lチカする前に準備する物を紹介しました。また、シェルスクリプトを利用したLチカを実行しました。

ラズパイでLチカ

ラズパイ環境

RaspberyyPi Raspberry Pi 3 Model B (Element14)
OS Raspbian 8.0

今回の目的

タクトスイッチをONにしたらLEDが光って、OFFにしたらLEDが消えるような回路を作成します。また、スイッチが押されたか押されていないかGPIOでチェックしてみます。

準備

準備するもの

RaspberryPi(本体)
材料名 個数 金額
RaspberryPi3 1 4,800円
USBアダプタ 5V/2.5A(ラズパイの電源) 1 1,900円
LANケーブル 1
材料

材料は凡その値段です。

材料名 個数 金額
ブレッドボード 1 300円
ジャンパワイヤー(オス-メス)10本入り 1 220円
赤色LED 1 40円
抵抗(330Ω) 1 20円
タクトスイッチ 1 30円
タクトスイッチ

押すと電流が流れます。足が4本あり、中でつながっています。ボタンを押すと、隣同士の足がつながり電流が流れるようになります。

スイッチでLEDをON/OFF

タクトスイッチのON/OFFでLEDの光をコントロールする回路を作成します。スイッチをONにするとLEDが光り、OFFにすると消えます。

回路図

①ラズパイの電源を入れて起動します。

②以下のように回路を作成します。

【ジャンパーワイヤの接続】

(ラズパイ)1番ピン 3.3V - (ブレッドボード)A30  プラス極

(ラズパイ)6番ピン GND - (ブレッドボード)A24  マイナス極

【ブレッドボードの回路】

抵抗: A28 - A25

タクトスイッチ: F30 - G30  F28 - G28

LED: (アノード)F25 - (カソード)F24

回路図は、Fritzingと呼ばれるソフトを使用して作成しております。

Fritzingで回路図を作ろう

タクトスイッチを押すと、LEDが光りました。

スイッチから指を離すと消えます。

タクトスイッチからの入力

3.3Vの端子はそのままです。タクトスイッチと抵抗の間にGPIOの18番端子を接続します。タクトスイッチがOFFのときGPIOがLOWになり、ONのときHIGHになります(プルダウン回路)。

①以下のように回路を作成します。

②端末を開き、python3を起動します。

sudo python3

③以下の内容を入力します。タクトスイッチを離した状態でEnterを押します。

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN)
GPIO.input(18)

結果が「0」と表示されます。

④今度はタクトスイッチを押しながら以下のコードを入力してEnterを押します。

GPIO.input(18)

結果が「1」であれば、スイッチの読み取り成功です。

⑤いちいちコマンド入力確かめるのは大変ですので、プログラムファイルを作成します。ホームディレクトリへ移動します。

cd /home/pi/

⑥nanoコマンドで、以下のように「inputtest.py」を作成します。

sudo nano inputtest.py
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN)
while 1:
    print(GPIO.input(18))
    time.sleep(1)

⑦以下のコマンドで実行します。プログラムを終了するには「Ctrl + C」を押します。

sudo python3 inputtest.py

スイッチとLEDを別回路にする

スイッチとLEDを別回路にします。タクトスイッチのON/OFFをプログラムで判定して、別のGPIOに接続したLEDのON/OFFを操作します。

①以下のように回路を作成します。

タクトスイッチがONかOFFか18番ピンでチェックします。18番ピンがONであれば16番ピンをONにしてLEDを光らせます。逆にOFFの時はLEDが光りません。18番ピンも直列にGNDにつながっているのがポイントです。

【ブレッドボードの回路】

330Ω抵抗:LEDの抵抗

680Ω抵抗:タクトスイッチの抵抗

②nanoコマンドで、以下のように「switch_led.py」を作成します。

sudo nano switch_led.py
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.IN) 

try:
    while True:
        if GPIO.input(24) == GPIO.HIGH:
            GPIO.output(23, GPIO.HIGH)
        else:
            GPIO.output(23, GPIO.LOW)
        time.sleep(0.5)

except KeyboardInterrupt:
    pass

GPIO.cleanup() 

・GPIO.setup(23, GPIO.OUT)は、16番ピンを出力モードにします。LEDのON/OFFをコントロールします。

・GPIO.setup(24, GPIO.IN)は、18番ピンを入力モードにします。タクトスイッチのON/OFFをチェックします。

③以下のコマンドで実行します。

sudo python3 switch_led.py

④タクトスイッチをONにするとLEDがひかり、OFFにすると消えます。

⑤プログラムを終了するには「Ctrl + C」を押します。


トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 2008年04月 金融機関系I

最近の投稿
人気記事
カテゴリー
広告