著者:麻生二郎
 電子回路を触ってみたい、作ってみたい、制御してみたいと思ったときに、人気の小型コンピュータボード「Raspberry Pi」(ラズパイ)と組み合わせるのが意外と簡単です。本特集では、市販のモジュールと、ラズパイを使って電子回路
 の作成や制御を素早く実現する方法を紹介します。
シェルスクリプトマガジン Vol.60は以下のリンク先でご購入できます。![]()
![]()
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						#!/usr/bin/env python3 import smbus2 import bme280 i2c = smbus2.SMBus(1) data = bme280.sample(i2c, 0x76) print('気温 :' + str(round(data.temperature, 1)) + '度') print('湿度 :' + str(round(data.humidity, 1)) + '%') print('気圧 :' + str(round(data.pressure, 1)) + 'hPa')  | 
					
| 
					 1 2 3 4 5 6 7 8  | 
						#!/usr/bin/env python3 from lcd_st7032 import ST7032 lcd = ST7032() lcd.write("Shellscript") lcd.setCursor(1, 0) lcd.write([0xbc, 0xaa, 0xd9, 0xbd, 0xb8, 0xd8, 0xcc, 0xdf, 0xc4])  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11  | 
						#!/usr/bin/env python3 import smbus2 from i2csense.bh1750 import BH1750 bus = smbus2.SMBus(1) sensor = BH1750(bus) sensor.update() print(sensor.light_level) print(sensor.current_state_str)  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						#!/usr/bin/env python3 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) try:   while True:     rain = GPIO.input(17)     if rain == 0:       print("雨が降り始めました")       GPIO.cleanup()       break except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						#!/usr/bin/env python3 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) try:   while True:     fire = GPIO.input(17)     if fire == 0:       print("火災が発生しました")       GPIO.cleanup()       break except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						#!/usr/bin/env python3 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) try:   while True:     pir = GPIO.input(17)     if pir == 1:       print("人が侵入しました")       GPIO.cleanup()       break except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						#!/usr/bin/env python3 from time import sleep import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.OUT) try:   for i in range(0,3):     GPIO.output(17, GPIO.HIGH)     GPIO.output(17, GPIO.LOW)     sleep(2) except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						#!/usr/bin/env python3 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) try:   while True:     if GPIO.wait_for_edge(17, GPIO.RISING):       print("指パッチン!")       GPIO.cleanup()       break except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						#!/usr/bin/env python3 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) try:   while True:     rain = GPIO.input(17)     if rain == 1:       print("水分量が足りません")       GPIO.cleanup()       break except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						#!/usr/bin/env python3 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN) try:   while True:     if GPIO.wait_for_edge(17, GPIO.FALLING):       print("傾きました")       GPIO.cleanup()       break except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 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  | 
						#!/usr/bin/env python3 import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(27, GPIO.OUT) GPIO.setup(17, GPIO.IN) GPIO.output(27, GPIO.LOW) time.sleep(0.3) GPIO.output(27, GPIO.HIGH) time.sleep(0.00001) GPIO.output(27, GPIO.LOW) try:   while GPIO.input(17) == 0:     palse_start = time.time()   while GPIO.input(17) == 1:     palse_end = time.time()   palse_width_time = palse_end - palse_start   distance = palse_width_time * 1000000 / 58   print("距離は {0} cmです".format(distance))   GPIO.cleanup() except KeyboardInterrupt:   GPIO.cleanup()  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						#!/usr/bin/env python3 from time import sleep import RPi.GPIO as GPIO import sys GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.OUT) for _ in range(args):   GPIO.output(17, GPIO.HIGH)   sleep(0.01)   GPIO.output(17, GPIO.LOW)   sleep(0.05) GPIO.cleanup()  |