GPIO2(raspberry pi その11)
はじめての電子工作ステップ50
(日経linux 2014年11月号)
■ステップ17(LED明暗)
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
# LED1
GPIO.output(25, True)
# LED2
p = GPIO.PWM(18, 50)
p.start(0)
for dc in range(0, 101, 5):
p.ChangeDutyCycle(dc)
time.sleep(0.05)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
time.sleep(0.05)
p.stop()
GPIO.cleanup()
※python(RPi.GPIO)のサイクルの値は0.0~100.0
http://sourceforge.net/p/raspberry-gpio-python/wiki/PWM/
■ステップ19(スイッチが押されたらLED ON)
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while 1:
if GPIO.input(18):
GPIO.output(25, True)
else:
GPIO.output(25, False)
time.sleep(0.5)
p.stop()
GPIO.cleanup()
■ステップ21(温度センサーを読む)
ADT7410
http://akizukidenshi.com/catalog/g/gM-06675/
・下準備
sudo pico /etc/modules
i2c-dev #追記
sudo pico /etc/modprobe.d/raspi-blacklist.conf
blacklist i2c-bcm2708 #コメントアウト
sudo reboot
sudo apt-get install i2c-tools
sudo apt-get install python-smbus
sudo i2cdetect -y -l
sudo i2cdetect 1
・ソース
import smbus
import time
i2c = smbus.SMBus(1)
while 1:
block = i2c.read_i2c_block_data(0x48, 0x00)
temp = (block[0] << 8 | block[1]) >> 3
if(temp >= 4096):
temp -= 8192
value = temp / 16.0
print "%6.2f [Deg. C.]" % value
time.sleep(5)
■ステップ23(アノードコモンLEDをPWM制御)
※ 雑誌の図にはアノードがないので注意
OSTA71A1D
http://akizukidenshi.com/catalog/g/gI-01444/
・ソース
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
list = [22, 23, 7]
for i in list:
GPIO.setup(i, GPIO.OUT)
p = GPIO.PWM(i, 50)
p.start(0)
for dc in range(0, 101, 5):
p.ChangeDutyCycle(dc)
time.sleep(0.05)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
time.sleep(0.05)
p.stop()
GPIO.cleanup()