Raspbian資料一覧

Raspberry Pi 3でLピカ、Lチカ、Lマリオ

2016/10/10更新

対応バージョン: Raspbian Jessie Lite - September 2016

Raspberry Pi 3にLEDを接続して光らせ、点滅させてみる。

オススメの教本は金丸隆志さんの「カラー図解 最新 Raspberry Piで学ぶ電子工作」。

我々のようなインフラエンジニアにとってはOSのインストールやLinuxの使い方などより電気回路の仕組みやプログラムからの制御といった部分にフォーカスしているのでとても有益である。

また書籍のサポートページが開設されているのも親切で、様々な追加情報が手に入る。

Lピカ

まずは単純にLEDを光らせるだけの、いわゆるLピカ。

ブレッドボードを用意して教本P74に従いRaspberry PiのGPIOポート1ピン(3.3V電源) → 抵抗(330Ω) → LEDのアノード(+) → LEDのカソード(-) → GPIOポート6ピン(GND)の流れになるように結線すれば簡単にLEDが点灯する。

なお、用意したLEDは順電圧1.8〜2.4V、順電流20mA(0.020A)なので必要な抵抗値は以下のオームの法則に従って75〜45Ωとなるが、今回はそれより大きな330Ωを使用している。

電圧(V) = 抵抗(R) * 電流(I)
順電圧1.8Vの場合の必要な抵抗値
R = Vf / If
  = (3.3 - 1.8) / 0.020
  = 1.5 / 0.020
  = 75
順電圧2.4Vの場合の必要な抵抗値
R = Vf / If
  = (3.3 - 2.4) / 0.020
  = 0.9 / 0.020
  = 45

Lチカ

次にこの回路を使ってLチカをやってみる。

電源供給元をRaspberry PiのGPIOポート1ピン(3.3V電源)から22ピン(GPIO 25)に変更し、以下のPythonプログラムを書いて実行すればGPIO 25の状態(HIGHとLOW)が交互に切り替わってLEDが点滅する。

lchika.py
#!/usr/bin/env python

import RPi.GPIO as GPIO
from time import sleep

PIN = 25

GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)

try:
    while True:
        GPIO.output(PIN, GPIO.HIGH)
        sleep(0.5)
        GPIO.output(PIN, GPIO.LOW)
        sleep(0.5)

except KeyboardInterrupt:
    pass

GPIO.cleanup(PIN)

Lマリオ

教本だけだと芸がないので点滅のタイミングに変化を持たせて「タラッタッ、タラッタッ」をやってみる。

消灯後のsleepのタイミングを外部ファイルに書いておいてそれを読み込んで一回一回の点滅タイミングを変えるとそれっぽい雰囲気になる(この画像だと分かりにくいが実際にやってみるとなんとなくそれっぽく見える)。

lmario.conf
0.1
0.25
0.25
0.1
0.3
0.6
lmario.py
#!/usr/bin/env python

import RPi.GPIO as GPIO
from time import sleep

PIN = 25

GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN, GPIO.OUT)

f = open('lmario.conf', 'r')

for line in f:
    interval = float(line.rstrip())

    GPIO.output(PIN, GPIO.HIGH)
    sleep(0.15)
    GPIO.output(PIN, GPIO.LOW)
    sleep(interval)

f.close()

GPIO.cleanup(PIN)

このタイミングを決めるにあたって以下のサイトが参考になったので紹介しておく。シーン毎の楽譜・MIDIファイル・ビデオデモが用意されているので見ていてとても楽しい。

関連資料・記事

参考サイト