著者:麻生二郎
電子回路を触ってみたい、作ってみたい、制御してみたいと思ったときに、人気の小型コンピュータボード「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() |