実習 Raspberry Pi GPIO
Raspberry Pi GPIOでLEDチカチカ

内 容


3. Raspberry Pi GPIOでLEDチカチカ

第3章ではラズベリーパイを使ってハードウェアを動かしてみましょう.ハードウェアといっても初めは簡単で,LEDを光らせるだけです.通称『LEDチカチカ』です.これがハードウェア制御の手始め『hello, world』です.(なお,この章で対象とする RaspberryPiは 『Raspberry Pi 3 Model B』です.RaspberryPiの種類によってはピン配置やハード構成に違いがある可能性があります.)


3-1. Raspberry Piのピン配置

電気的な信号の入出力に必要な端子は表1のように構成されています.HDMI端子を左に,GPIO端子列が右に,USB端子が下になるようにRaspberryPIを置き,上端の左が1番端子,右が2番端子で下に行くにしたがって端子番号が増えていきます.

..

表1 SRaspberry PiのGPIO端子のピン配置

 端子名   端子番号   端子番号   端子名 
+3.3V 1 2 +5V
GPIO2 I2C-SDA 3 4 +5V
GPIO3 I2C-SLC 5 6 GND
GPIO4 7 8 GPIO14 UART TxD
GND 9 10 GPIO15 UART RxD
GPIO17 11 12 GPIO18
GPIO27 13 14 GND
GPIO22 15 16 GPIO23
+3.3V 17 18 GPIO24
GPIO10 SPI-MOSI 19 20 GND
GPIO9 SPI-MISO 21 22 GPIO25
GPIO11 SPI-SCLK 23 24 GPIO8 SPI CE0
GND 25 26 GPIO7 SPI-CE1
ID_SD EEPROM 27 28 ID_SC EEPROM
GPIO5 29 30 GND
GPIO6 31 32 GPIO12
GPIO13 33 34 GND
GPIO19 35 36 GPIO16
GPIO26 37 38 GPIO20
GND 39 40 GPIO21
  1. GPIOは合計40本ある
  2. GPIOは2~27の26本ある(GPIO:General Purpose Input/Output汎用入出力)
  3. GNDは8本ある
  4. +5V端子は2本あり+5Vの電圧を利用できる
  5. +3.3V端子は2本あり+3.3Vの電圧を利用できる
  6. 他にID_SC,ID_SDがある

3-2. LEDを光らせる

LEDを光らせましょう.ここでは点滅はさせません.RaspberryPiの+3.3Vを利用してLEDを光らせるだけです.

  1. RaspberryPiの+3.3V(1)に赤のジャンパを刺し,反対側をブレッドボードのライン赤に刺す (電源ライン)
  2. RaspberryPiのGND(9)に青のジャンパを刺し,反対側をブレッドボードのライン青に刺す (GNDライン)
  3. 抵抗の片側をライン赤に刺し,反対側をブレッドボードのライン15に刺す
  4. LEDのアノード(長いリード)側をライン15に刺し,反対(カソード)側をライン17に刺す
  5. ライン17とライン青をジャンパーで結ぶ

以上で回路は出来上がり,RaspberryPIに電源端子にUSB 5Vを刺せばLEDが光るはずです.これでRaspberryPiの電源とLEDの確認はOKです.


図1 LED回路図(直接給電)

LEDは光りましたか?R1の100ΩはLEDに流れる電流を制限しています.LEDを使用するときは必ず使用する必要があります.抵抗値はLEDの仕様から計算する必要があります.電源電圧が3.3Vで赤黄緑のLEDなら100Ω程度でしょう.


3-3. LEDチカチカ

今度はLEDを点滅(チカチカ)させます.

  1. 抵抗のライン赤側を外しライン11に刺す
  2. 新たなジャンパをライン11に刺す
  3. ジャンパの反対側をGPIO4(7)にさす

図2を参照して回路を作成してください.


図2 LEDチカチカの回路図

(1)LEDを点灯する

ソースリスト1にpythonプログラムを示します.エディタから入力して実行してください.

..

ソースリスト1 LEDを点灯 (led-on.py)


10:#! /user/bin/env python
20:
30:import RPi.GPIO as GPIO
40:#GPIO.cleanup()
50:
60:GPIO.setmode( GPIO.BCM )
70:GPIO.setup( 4, GPIO.OUT )
80:GPIO.output( 4, GPIO.HIGH )

必要なコマンドを以下に示します.


$ nano led-on.py ↵ (または gedit led-on.py)
$ python led-on.py ↵

入力するとき行番号とその隣の「:」は除いて入力してください.

(2)LEDを消灯する

ソースコードを変更して,LEDを消灯してください.<ヒント>GPIO.HIGHをGPIO.LOWに変更して,実行してください.ファイル名をled-on.pyからほかの名前に変更して保存してください.

(3)LEDを点滅する

ソースコード2を入力,実行してLEDを点滅させてください.終了するときはCTRL+Cです.

ソースコード2 LED点滅 (led-on-off.py)


010:#! /user/bin/env python
020:
030:import RPi.GPIO as GPIO
040:import time
050:
060:#GPIO.cleanup()
070:GPIO.setmode( GPIO.BCM )
080:GPIO.setup( 4, GPIO.OUT )
090:
100:while True:
110:    GPIO.output( 4, GPIO.HIGH )
120:    time.sleep( 1 )
130:    GPIO.output( 4, GPIO.LOW )
140:    time.sleep( 1 )

(4)LEDをスイッチでON/OFFする

ソースコード4を入力,実行してLEDの点滅をON/OFFさせます.タクトスイッチを使った回路をつくりGPIO17と結びます


図3 スイッチ回路(プルアップ)

ソースコード4 LED点滅のON/OFF (led-on-off-sw.py)


010:#! /user/bin/env python
020:
030:import RPi.GPIO as GPIO
040:import time
050:
060:#GPIO.cleanup()
070:
080:GPIO.setmode(GPIO.BCM)
090:GPIO.setup(4,GPIO.OUT)
100:GPIO.setup(17,GPIO.IN)
110:
120:while True:
130:    if GPIO.input(17)==GPIO.HIGH:
140:        GPIO.output(4,GPIO.HIGH)
150:    time.sleep(1)
160:    GPIO.output(4, GPIO.LOW )
170:    time.sleep(1)
180:

3-4. 3色のLEDを使用して交通信号を作る

応用問題です.赤,青,黄のLEDと3本の抵抗を使って交通信号を作ってください.

応用問題2です.タクトスイッチを押すと赤→青→黄の変化が速くなる.

高速な信号例


次は『Windowsによるネットワーク共有接続』です.


足立工科大学情報通信工学科 2017年10月24日(火)