僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
できるようになった。
例によってPython-2.7.3。
点灯/消灯を定義した関数(six_leds_on_off.py)
led[0]をIN, [1]をLOW, [2]をHIGHにする。
import time import RPi.GPIO as GPIO leds = [[28, 29, 30], [28, 30, 29], [29, 28, 30], [29, 30, 28], [30, 29, 28], [30, 28, 29]] def led_on(port): in_port, out_port, l_port = leds[port] GPIO.setup(in_port, GPIO.IN) GPIO.setup(out_port, GPIO.OUT) GPIO.setup(l_port, GPIO.OUT) GPIO.output(l_port,GPIO.HIGH) def led_off(port): in_port, out_port, l_port = leds[port] GPIO.output(l_port,GPIO.LOW)
で、順繰りに点灯させる例。
とりあえず、最初の引数で点灯/消灯時間、
次の引数で繰り返し回数。
指定がなければ0.1秒、3回。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sys import argv import time import RPi.GPIO as GPIO from six_led_on_off import led_on from six_led_on_off import led_off GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) try: ltime = float(argv[1]) repeat_time = int(argv[2]) except: ltime = 0.1 repeat_time = 3 for i in range(repeat_time): for led in range(6): led_on(led) time.sleep(ltime) led_off(led) GPIO.cleanup()
点灯/消灯時間を0.002秒以下にすると、全部が点灯している ように見えた。
6個のLEDの点滅繰り返しの合計時間は、丁度1分になるはず。
$ time sudo python circle.py 1 10 real 1m0.356s user 0m0.200s sys 0m0.070s $ time sudo python circle.py 0.1 100 real 1m0.487s user 0m0.320s sys 0m0.090s $ time sudo python circle.py 0.01 1000 real 1m1.750s user 0m1.110s sys 0m0.300s $ time sudo python circle.py 0.001 10000 real 1m13.671s user 0m8.390s sys 0m2.070s $ time sudo python circle.py 0.0001 100000 real 3m7.781s user 1m21.170s sys 0m16.640s
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。