NanoPi-M1を使ってみる

GPIO Pythonライブラリ

前回、NanoPi専用のWiringPiライブラリ (WiringNP libary)を紹介しました。
こちらこちらでOPI-PCのPythonライブラリ を 紹介しています。
NanoPiでも同じように使えるのかどうか調べてみました。

orangepi_PC_gpio_pyH3

https://github.com/duxingkei33/orangepi_PC_gpio_pyH3

ライブラリ内で指定するピン番号は以下の様になります。
OPI-PCとの互換性はありません。
()内の表記のあるピンは番号で指定しても、PORTオブジェクトで指定しても構いません。
()内の表記のないピンはOPI-PCには無い(正確にはSOCにはあるが、ピンヘッダーに出ていない)ポートなので
番号で指定する必要が有ります。
ライブラリ内で指定する番号 物理Pin番号 ライブラリ内で指定する番号

1 2
12(port.PA12) 3 4
11(port.PA11) 5 6
203 7 8 198(port.PG6)

9 10 199(port.PG7)
0(port.PA0) 11 12 6(port.PA6)
2(port.PA2) 13 14
3(port.PA3) 15 16 200(port.PG8)

17 18 201(port.PG9)
64(port.PC0)
19 20
65(port.PC1) 21 22 1(port.PA1)
66(port.PC2) 23 24 67(port.PC3)

25 26 17
19(port.PA19) 27 28 18(port.PA18)
20(port.PA20) 29 30
21(port.PA21) 31 32 7(port.PA7)
8(port.PA8) 33 34
16 35 36 13(port.PA13)
9(port.PA9) 37 38 15

39 40 14(port.PA14)

以下のコードで動作を確認することができます。
# -*- coding: utf-8 -*-
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
import sys

PIN = port.PA10

argvs = sys.argv
argc = len(argvs)

if (argc == 2):
  PIN = int(argvs[1])

print "PIN=",PIN
gpio.init()
gpio.setcfg(PIN, gpio.OUTPUT)

for _ in xrange(5):
    gpio.output(PIN,True)
    time.sleep(1.0)
    gpio.output(PIN,False)
    time.sleep(1.0)

以下のコードでオンボードの青のLEDがLチカします。
# -*- coding: utf-8 -*-
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
import sys

PIN = 10
gpio.init()
gpio.setcfg(PIN, gpio.OUTPUT)

for _ in xrange(5):
    gpio.output(PIN,True)
    time.sleep(1.0)
    gpio.output(PIN,False)
    time.sleep(1.0)

WiringPi-Python-OP

https://github.com/lanefu/WiringPi-Python-OP

ライブラリ内で指定するピン番号は以下の様になります。
こちらも、OPI-PCとの互換性はありません。
このライブラリはWiringOPのラップ関数ですが、ラップ元のライブラリがWiringOPです。
$HOME/WiringPi-Python-OP/WiringPi にWiringOPのコードを抱えています。
WiringOPでサポートしていないピンはサポートしていません。
ライブラリ内で指定する番号 物理Pin番号 ライブラリ内で指定する番号

1 2
8 3 4
9 5 6
使えない 7 8 28

9 10 29
2 11 12 7
6 13 14
3 15 16 26

17 18 27
12 19 20
13 21 22 0
14 23 24 10

25 26 使えない
30 27 28 31
25 29 30
11 31 32 21
22 33 34
使えない 35 36 15
23 37 38 使えない

39 40 16

以下のコードで動作を確認することができます。
# -*- coding: utf-8 -*-
import wiringpi
import time
import sys

OUTPUT = 1
HIGH = 1
LOW = 0
PIN = 15

argvs = sys.argv
argc = len(argvs)

if (argc == 2):
  PIN = int(argvs[1])

print "PIN=",PIN
wiringpi.wiringPiSetup()
wiringpi.pinMode(PIN,OUTPUT)
wiringpi.digitalWrite(PIN,LOW)
for _ in xrange(5):
  wiringpi.digitalWrite(PIN,HIGH)
  time.sleep(1)
  wiringpi.digitalWrite(PIN,LOW)
  time.sleep(1)

次回は、WiringPi-Python-OPライブラリを、 WiringPi-Python-NPライブラリに変更する方法を紹介します。