#109 Light Brick
Overview
CDSセルを使用した光センサーBrickです。
周囲の明るさの変化をアナログ値として取得することができます。
接続
アナログコネクタ(A0〜A7)のいずれかに接続します。
Arduino
Raspberr Pi
IchigoJam
アナログ用コネクタ(IN2またはANA()で設定したコネクタ)のどれかに接続します。
Parts Specification
回路図
Sample Code
A0コネクタにLight Brickを接続して、GPIO4コネクタに接続したLED Brickの明るさ調節に使用しています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | # coding: utf-8
import RPi.GPIO as GPIO
import spidev
import time
import sys
# A0コネクタにLightを接続
LIGHTPIN = 0
# GPIO4コネクタにLEDを接続
LEDPIN = 4
# GPIOポートを設定
GPIO.setwarnings(False)
GPIO.setmode( GPIO.BCM )
GPIO.setup( LEDPIN, GPIO.OUT )
def readadc(channel):
adc = spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data
def arduino_map(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
# PWM/100Hzに設定
LED = GPIO.PWM(LEDPIN, 100)
# 初期化
LED.start(0)
spi = spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 5000
try:
while True:
ambient = readadc(LIGHTPIN)
sys.stdout.write("\rambient = %f" % (ambient))
sys.stdout.flush()
value = arduino_map(ambient, 0, 1023, 0, 100)
LED.ChangeDutyCycle(value)
time.sleep( 0.01 )
except KeyboardInterrupt:
LED.stop()
GPIO.cleanup()
spi.close()
sys.exit(0)
|
構成Parts
GitHub
- https://github.com/FaBoPlatform/FaBo/tree/master/109_light