OrangePi-PCを使ってみる

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


OrangePi-PC のPython GPIOライブラリのOPi.GPIOを紹介します。
もともとはOPI-ZERO専用のライブラリでしたが、いつの間にかOPI-ZEROを含め、様々ボードに対応しました。
対応ボードを見ると、H3だけでなくH5にも対応しています。
インストール方法としてPIPインストールとMANUALインストールが有りますが、PIPインストールではインストールできませんでした。

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

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

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

GPIO.setboard(GPIO.PCPCPLUS)     # Orange Pi PC board
GPIO.setmode(GPIO.BOARD)         # set up BOARD BCM numbering
GPIO.setup(26, GPIO.OUT)         # set BCM7 (pin 26) as an output (LED)

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

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

        sleep(0.5)

except KeyboardInterrupt:
    GPIO.output(26, 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 OPi.GPIO as GPIO
from time import sleep          # this lets us have a time delay

GPIO.setboard(GPIO.PCPCPLUS)    # Orange Pi PC board
GPIO.setmode(GPIO.BCM)          # set up BOARD BCM numbering
GPIO.setup(7, GPIO.OUT)         # set BCM7 (pin 26) as an output (LED)

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

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

        sleep(0.5)

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

どちらもRPi.GPIOと完全に互換性があります。
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

色々なボードに対応しているのが嬉しいです。

次回はWiringPi-Python(WiringPi-Python- OP)ライブラリを紹介します。