2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

raspberry piでフルカラーLEDを扱う IoT編(その1 pigpio)

Last updated at Posted at 2018-07-19

はじめに

以前、「raspberry piでフルカラーLEDを扱う」という記事を書きました。
https://qiita.com/kei0425/items/7033cd716f3b818252b4

しかし、インターネットにつながっていなかったため、ちゃんとIoTにしたいと思います。

前提条件

ラズパイ

  • raspberry pi 3
  • Raspbianインストール済み
  • jupyter notebook インストール済み(ポートは8888以外に変更)
  • pigpioインストール済み(Raspbianならインストールされているはずです。)

パーツ類

  • フルカラーLED
  • ブレッドボード
  • 抵抗3つ
  • オスメスジャンパーワイヤー5本
  • オスオスジャンパーワイヤー4本

おさらい Lピカ

まずは、LEDを光らせます。

ラズベリーパイのGPIOは以下になります。

image.png

配線

配線図

image.png

Tickercadを利用しているため、ラズパイがなく、Arduinoになっています。ごめんなさい。

3.3Vはラズパイの1PIN、GNDはラズパイの6PINと考えてください。

ポイントは以下になります。

  • 最初にブレッドボードの外側の+-にはとりあえず、電源(今回は3.3V、5Vの場合もあり)とGNDを接続する。他のパーツの電源とGNDに接続したい場合にはそこからオスオスジャンパーワイヤーで接続。
  • 配線図の赤丸の部分は順番に刺したり抜いたりして、いろいろな色を光らせてみる。
  • ここで光らない場合は、GPIOで光らせようとしてもきっとうまくいかないので、しっかりはっきり光るまで調整する。

※とはいいながら、面倒だったら3.3Vは直接j2に刺しても問題ありません。

Lチカ

ちゃんと光ることが確認できたら今度はGPIOを使ってプログラムで制御します。

配線

配線図

image.png

ここでも、Arduinoですみません。

A2,A3,A4はそれぞれ、GPIO2(3PIN),GPIO3(5PIN),GPIO4(7PIN)と読み替えてください。

ラズベリーパイのGPIOはピンなので、オスメスジャンパーワイヤーに差し換えてください。

プログラム

まずは、今回はpigpioを利用しているので、デーモンを起動します。
jupyter上では、!でシェルコマンドを実行できるので以下のようにします。

!sudo pigpiod

その後、初期設定を行います。

import pigpio
赤PIN = 2
青PIN = 3
緑PIN = 4

pi = pigpio.pi()
pi.set_mode(赤PIN , pigpio.OUTPUT)
pi.set_mode(青PIN , pigpio.OUTPUT)
pi.set_mode(緑PIN , pigpio.OUTPUT)

その後1セルに以下を1つづつ入力して実行してみてください。

pi.write(赤PIN, 0)
pi.write(赤PIN, 1)
pi.write(青PIN, 0)
pi.write(青PIN, 1)
pi.write(緑PIN, 0)
pi.write(緑PIN, 1)

セルの実行毎にLEDの色がついたり消えたりそのままだったりしたと思います。
最後まで実行すると、LEDが消えているはずです。

0を指定すると点灯し、1を指定すると消灯します。

好きなセル実行して、いろいろ試してみましょう。

PWMで中間色

次はPWMを利用して中間色を出してみます。

from time import sleep

FREQ = 50 # 
RANGE = 100

p = [赤PIN, 青PIN, 緑PIN]

for i in range(3):
    pi.set_PWM_frequency(p[i], FREQ)
    pi.set_PWM_range(p[i], RANGE)

FREQは周波数、RANGEはPWMの範囲を表します。

その後、以下を実行すると、赤が薄暗くつきます。

pi.set_PWM_dutycycle(赤PIN, 90)

数値をいろいろ変更して実行してみてください。(同じセルで直接修正すると楽です。)

グラデーション

最後にこちらを実行してください。

d = [0, 0, 0]
r = [3,5,7]
while True:
    sleep(0.1)
    for i in range(3):
        pi.set_PWM_dutycycle(p[i], d[i])
        d[i] += r[i]
        if d[i] >= RANGE or d[i] <= 0:
            r[i] *= -1
            d[i] += r[i]

LEDがさまざまな色に変化するのが分かると思います。

firebaseとの接続は次回に続きます。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?