暇つぶしのエントロピー

暇つぶしに何して遊んだか記録していく。少し続いたと思ってたら更新飽きた!最近は工作ブログになりつつある。

ブレッドボード買ってみた。

  • 12月
  • 26

6:59 pm Raspberry Pi, お買い物

raspberry pi で何かしようと ブレッドボード買ってみた。
wpid-img_20141226_181657.jpg

LED がついてきたのでちょっと遊ぶ。
wpid-img_20141226_181525.jpg

PiScreen がついていて使わない Pin の GND, GPIO4, GPIO18, GPIO27, GPIO23 が表にでてるのでとりあえずそれで遊ぶ。

gpio ってコマンド使うらしい。
[code]
pi@raspberrypi ~ $ gpio
Usage: gpio -v
gpio -h
gpio [-g|-1] [-x extension:params] …
gpio [-p] <read/write/wb> …
gpio <read/write/aread/awritewb/pwm/clock/mode> …
gpio readall/reset
gpio unexportall/exports
gpio export/edge/unexport …
gpio wfi <pin> <mode>
gpio drive <group> <value>
gpio pwm-bal/pwm-ms
gpio pwmr <range>
gpio pwmc <divider>
gpio load spi/i2c
gpio i2cd/i2cdetect
gpio gbr <channel>
gpio gbw <channel> <value>
[/code]
ちゃんとインストールされてた。

出力にモードを設定する。
[code]
gpio -g mode 4 out
gpio -g mode 18 out
gpio -g mode 27 out
gpio -g mode 23 out
[/code]

全部点け!
[code]
gpio -g write 4 1
gpio -g write 18 1
gpio -g write 27 1
gpio -g write 23 1
[/code]
wpid-img_20141226_181212.jpg
中の二つ消えろ!
[code]
gpio -g write 4 1
gpio -g write 18 0
gpio -g write 27 0
gpio -g write 23 1
[/code]
wpid-img_20141227_090516.jpg

プログラムにするか…初めて Python 使うぞ。
Raspberry Pi Learning Resourcesを参考にする。

[code]
import RPi.GPIO as GPIO
import time

led = 23
GPIO.setmode(GPIO.BOARD)
GPIO.setup(led, GPIO.OUT)

GPIO.output(led, 1)
time.sleep(5)
GPIO.output(led, 0)

GPIO.cleanup()
[/code]
書いて led_test.py で保存して実行してみる。

[code]
pi@raspberrypi ~ $ python led_test.py
Traceback (most recent call last):
File &amp;quot;led_test.py&amp;quot;, line 8, in &amp;lt;module&amp;gt;
GPIO.setup(led, GPIO.OUT)
RuntimeError: No access to /dev/mem. Try running as root!
[/code]
怒られた。pi さんは権限がなくてアクセスできないらしい。
ならば
[code]
pi@raspberrypi ~ $ sudo python led_test.py
led_test.py:8: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(led, GPIO.OUT)
pi@raspberrypi ~/python $ sudo python led_test.py
[/code]
また怒られた。既に使われてるって….うん、確かにさっき使った。
[code]
pi@raspberrypi ~ $ gpio unexportall
[/code]
でいいのかな。
で、エラーはでなくなったけど点かないぞ。
なら 27 は?と思ったら
[code]
pi@raspberrypi ~/ $ sudo python led_test.py
Traceback (most recent call last):
File &amp;quot;led_test.py&amp;quot;, line 8, in &amp;lt;module&amp;gt;
GPIO.setup(led, GPIO.OUT)
ValueError: The channel sent is invalid on a Raspberry Pi
[/code]
なんてエラーが出た。
番号なにか違うっぽい。

gpio コマンドは gpio 番号を指定するけど、Python では Pin 番号を指定するようです。
なので、GPIO4 なら 7 を、GPIO18 なら 12 を、GPIO27 なら 13 を, GPIO23 なら 16 を指定すればいいようです。

点くことが確認できたので…
[code]
import RPi.GPIO as GPIO
import random
import time

GPIO.setmode(GPIO.BOARD)

leds = [7,12,13,16]
onff = [0,0,0,0]

for led in leds:
GPIO.setup(led, GPIO.OUT)

for i in range (1,30):
led = int(random.random()*16)
j = 0
if led & 2**j:
onff[j]=1-onff[j]
GPIO.output(leds[j], onff[j])
j = 1
if led & 2**j:
onff[j]=1-onff[j]
GPIO.output(leds[j], onff[j])
j = 2
if led & 2**j:
onff[j]=1-onff[j]
GPIO.output(leds[j], onff[j])
j = 3
if led & 2**j:
onff[j]=1-onff[j]
GPIO.output(leds[j], onff[j])
time.sleep(random.uniform(1, 2))

GPIO.cleanup()
[/code]
すぎちゃったけど、ちょっとクリスマスっぽく。


© 2007 暇つぶしのエントロピー. Blog theme by blogstheme.com, debt consolidation.