Raspbian 資料一覧
2016/10/10更新
対応バージョン: Raspbian Jessie Lite - September 2016
Raspberry Pi 3でタクトスイッチを使ってLEDを制御させてみる。教本は金丸隆志さんの「カラー図解 最新 Raspberry Piで学ぶ電子工作」。
書籍のサポートページも参照しながら順を追って試してみる。
カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる サポートページ (ブルーバックス・講談社BOOK倶楽部)
またブレッドボード図はFritzingを使って作成している。
ちなみにFritzingのインストール手順は簡単で、まず公式サイトから必要なバイナリ(*)をダウンロードし、任意の場所に展開してその中のFritzingを起動するだけである。
(*) Ubuntu 16.04ではfritzing-0.9.3b.linux.AMD64.tar.bz2
% tar xvf fritzing-0.9.3b.linux.AMD64.tar.bz2 % fritzing-0.9.3b.linux.AMD64/Fritzing
ドキュメントルートは~/Documents/Fritzingに設定される。
プルダウン抵抗を使った場合
教本P107 図5-6に従ってタクトスイッチ側に10kΩのプルダウン抵抗を使用する。電流の流れは以下の通り。
タクトスイッチ
GPIOポート1ピン(3.3V電源) → タクトスイッチ → 抵抗(10kΩ) → GPIOポート6ピン(GND)
LED
GPIOポート22ピン(GPIO 25) → 抵抗(330Ω) → LEDのアノード(+) → LEDのカソード(-) → GPIOポート6ピン(GND)
タクトスイッチのON/OFFはGPIOポート18ピン(GPIO 24)を使って取得し、スイッチが押されたらGPIO 25の状態をHIGHにすることでLEDが点灯する。
#!/usr/bin/env python import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.OUT) GPIO.setup(24, GPIO.IN) try: while True: if GPIO.input(24) == GPIO.HIGH: GPIO.output(25, GPIO.HIGH) else: GPIO.output(25, GPIO.LOW) sleep(0.01) except KeyboardInterrupt: pass GPIO.cleanup()
Raspberry Pi内部のプルダウン抵抗を使った場合
Raspberry Pi内部に用意されているプルダウン抵抗を使えば物理的な抵抗が不要になる。
教本P113 図5-9に従って上記回路からプルダウン抵抗を取り除くと以下のようにシンプルになる。
プログラムは前出の8行目を以下のように変更し、GPIO 24のプルダウン抵抗を有効にする。
(変更前)
8 GPIO.setup(24, GPIO.IN)
(変更後)
8 GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
スイッチが押されていない時は別のLEDを点灯させる
スイッチが押された時に赤色LEDが点灯するのに加え、押されていない場合は青色LEDを点灯させてみる。
タクトスイッチの回路はそのままに、青色LED用の回路をもう一本作る。
GPIOポート36ピン(GPIO 16) → 抵抗(330Ω) → 青色LEDのアノード(+) → 青色LEDのカソード(-) → GPIOポート6ピン(GND)
プログラムも簡単で、GPIO 16を使用可能にしたうえで赤色LEDを点灯させる時は青色LEDを消灯し、赤色LEDを消灯させる時は青色LEDを点灯させればよい。
#!/usr/bin/env python import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(25, GPIO.OUT) # LED(Red) GPIO.setup(16, GPIO.OUT) # LED(Blue) try: while True: if GPIO.input(24) == GPIO.HIGH: GPIO.output(25, GPIO.HIGH) GPIO.output(16, GPIO.LOW) else: GPIO.output(25, GPIO.LOW) GPIO.output(16, GPIO.HIGH) sleep(0.01) except KeyboardInterrupt: pass GPIO.cleanup()
関連資料・記事
参考サイト
Raspberry Pi (Wikipedia)
RaspberryPi技術情報 (Qiita)
Raspbian技術情報 (Qiita)
IT女子のラズベリーパイ入門奮闘記 (Device Plus)
RaspberryPi電子工作入門 (ツール・ラボ)