OrangePi-PCを使ってみる

Python GPIOライブラリ(OPI.GPIO)


OrangePi-PC のPython GPIOライブラリのOPi.GPIOを紹介します。
元々はOrangePi-ZERO専用のライブラリでしたが、いつの間にかZEROを含め、様々なボードに対応しました。
対応ボードを見ると、H3だけでなくH5にも対応しています。
対応ボードの一覧はこち らを見ればわかります。
RaspberryPiでよく使われているRPi.GPIOのOrangePi版です。
インストールは以下の手順です。
$ sudo apt update
$ sudo apt install git python3-setuptools
$ git clone https://github.com/rm-hull/OPi.GPIO
$ cd OPi.GPIO
$ sudo python3 setup.py install

RPi.GPIOは物理ピン番号(GPIO.BOARD)と、BCM番号(GPIO.BCM)でポートを指定することができます。
OPi.GPIOも物理ピン番号(orangepi.pc.BOARD)と、BCM番号(orangepi.pc.BCM)でポートを指定するこ とができます。

物理ピン番号で指定する場合、以下のコードでOPi-PCのPin#26のLEDがLチカします。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import orangepi.pc
import OPi.GPIO as GPIO
from time import sleep            # this lets us have a time delay

pin=26
GPIO.setmode(orangepi.pc.BOARD)   # set up BOARD numbering
GPIO.setup(pin, GPIO.OUT)         # set pin 26 as an output (LED)

try:
    print ("Press CTRL+C to exit")
    while True:
        GPIO.output(pin, 1)       # set port/pin value to 1/HIGH/True
        sleep(0.1)
        GPIO.output(pin, 0)       # set port/pin value to 0/LOW/False
        sleep(0.1)

        GPIO.output(pin, 1)       # set port/pin value to 1/HIGH/True
        sleep(0.1)
        GPIO.output(pin, 0)       # set port/pin value to 0/LOW/False
        sleep(0.1)

        sleep(0.5)

except KeyboardInterrupt:
    GPIO.output(pin, 0)           # set port/pin value to 0/LOW/False
    GPIO.cleanup()               # Clean GPIO
    print ("Bye.")

BCM番号で指定する場合、以下のコードでOPi-PCのPin#26のLEDがLチカします。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import orangepi.pc
import OPi.GPIO as GPIO
from time import sleep            # this lets us have a time delay

pin=7
GPIO.setmode(orangepi.pc.BCM)     # set up BCM numbering
GPIO.setup(pin, GPIO.OUT)         # set BCM7 (pin 26) as an output (LED)

try:
    print ("Press CTRL+C to exit")
    while True:
        GPIO.output(pin, 1)       # set port/pin value to 1/HIGH/True
        sleep(0.1)
        GPIO.output(pin, 0)       # set port/pin value to 0/LOW/False
        sleep(0.1)

        GPIO.output(pin, 1)       # set port/pin value to 1/HIGH/True
        sleep(0.1)
        GPIO.output(pin, 0)       # set port/pin value to 0/LOW/False
        sleep(0.1)

        sleep(0.5)

except KeyboardInterrupt:
    GPIO.output(pin, 0)           # set port/pin value to 0/LOW/False
    GPIO.cleanup()              # Clean GPIO
    print ("Bye.")

ピン番号に関しては、RPi.GPIOと完全に互換性があります。
RaspberryPi用に作られたこ ちらのコードが少しの変更で動くようになります。
BCM番号 物理ピン番号 BCM番号

1 2
2
3 4
3
5 6
4
7 8 14

9 10 15
17
11 12 18
27
13 14
22
15 16 23

17 18 24
10 19 20
9 21 22 25
11 23 24 8

25 26 7
0 27 28 1
5 29 30
6 31 32 12
13 33 34
19 35 36 16
26 37 38 20

39 40 21

色々なボードに対応しているのが嬉しいですが、SPIとi2cには対応していません。

次回はpython-peripheryライブラリを紹 介します。