作業ログの部屋 -18ページ目

作業ログの部屋

いろいろな作業ログを公開。何かの時に便利・・・かも。記録とメモ代わりに。

ラズパイ手に入れたら電子工作。

電子工作と言えばLEDを光らせる。

でしょうってことで光らせてみます。

 

■必要部な資材

・ラズパイ(すでにラズパイOSを入れているもの。pythonも動く)

・LED(適当に。今回は赤と緑を準備)

・抵抗(100~200Ωぐらい)

・ブレッドボード

・ジャンパ線

・GPIOの展開フラットケーブルと基盤

 

■配線

ブレッドボードに配線するとこんな感じ。

※抵抗は茶(1)茶(1)黒(0)黒(0乗数)紫(許容誤差)なので、110Ωかな~(読み方はこちら)

※未使用の線、LEDもははめ込んでます左から2列目。。青、黄、オレンジの線とLED。。

 

■必要なpythonモジュールをインストール

1)モジュールbs4を入れる

$ sudo pip3 install bs4

2)モジュールRPi.GPIOを入れる。なぜかpipでは入らない

$ sudo apt install python3-rpi.gpio

 

■pythonコード

#### param_led.py ####

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# GPIO24,25を出力としてLEDに給電する

 

import sys

import RPi.GPIO as GPIO

from time import sleep

import time

from fractions import Fraction

 

def light(color, interval):

    t_end = time.time() + 10 * 3

 

    GPIO.setmode(GPIO.BCM)

    GPIO.setup(25, GPIO.OUT)

    GPIO.setup(24, GPIO.OUT)

 

    try:

        while time.time() < t_end:

            if (color == 'g'):

                    GPIO.output(25, GPIO.HIGH)

                    sleep(interval)

                    GPIO.output(25, GPIO.LOW)

                    sleep(interval)

            elif (color == 'r'):

                    GPIO.output(24, GPIO.HIGH)

                    sleep(interval)

                    GPIO.output(24, GPIO.LOW)

                    sleep(interval)

            else:

                    GPIO.output(24, GPIO.HIGH)

                    GPIO.output(25, GPIO.HIGH)

                    sleep(interval)

                    GPIO.output(24, GPIO.LOW)

                    GPIO.output(25, GPIO.LOW)

                    sleep(interval)

 

    except KeyboardInterrupt:

        pass

 

    GPIO.cleanup()

 

 

if __name__ == '__main__':

    argvs = sys.argv # コマンドライン引数を格納したリストの取得

    argc = len(argvs) # 引数の個数

 

    color = argvs[1]

    interval = float(Fraction(argvs[2]))

 

    light(color, interval)

 

■実行方法

$ python param_led.py {r | g } 点滅間隔(秒)

 

指定したLEDが、指定した点滅間隔で点滅します。

 

 

これを使って、世の中のいろいろな情報の上げ下げを可視化してみたり。

株価、為替、気温、、、ネットで公開されている情報を取得して点滅させる。

例えば、100円上がったら1/100間隔で緑点滅とか、点滅間隔が短いとより動いたんだな~とわかる。w

あまり高速だと、点滅がわからなくなるので、計算式を考えながら適度な点滅にしてみるのがいいかも。

 

LED増やして、random.random()使ったりして、いろんな色、間隔で点滅させるのもの面白いかもしれないね。色はランダム値の範囲で、単色、2色、3色とかにして。