当前位置:   article > 正文

Orangepi 香橙派 wiringOP 安装 OrangePi.GPIO 安装

wiringop

wiringOP安装方法

  1. 下载wiringOP 的代码
apt update
apt -y install git 
git clone https://github.com/orangepi-xunlong/wiringOP
  • 1
  • 2
  • 3
  1. 编译wiringOP
cd wiringOP
./build clean
./build
  • 1
  • 2
  • 3
  1. 测试gpio readall命令的输出如下
    gpioreadall

OrangePi.GPIO安装方法

官方版本 OPi.GPIO-0.5.2

#明显看出来是python3.6
root@orangepi:~# whereis python
python: /usr/bin/python3.6 /usr/bin/python3.6m /usr/lib/python3.7 /usr/lib/python3.6 /usr/lib/python2.7 /etc/python3.6 /usr/local/lib/python3.6
#先安装python3.6对应的pip3
root@orangepi:~# sudo apt-get install python3-pip
#根据官方文档安装:
root@orangepi:~# sudo pip3 install --upgrade OPi.GPIO
#官方OPi.GPIO 版本为 OPi.GPIO-0.5.2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

非官方版本 OPi.GPIO-0.6.6

1.安装python 开发包,和git ,安装过的可以忽略

sudo apt-get install python3-dev git
  • 1

如果python3-dev安装失败,请参考:https://www.cnblogs.com/ymjyqsx/p/6194968.html
2.下载代码

git clone https://github.com/Pako2/OrangePi.GPIO.git
cd ./OrangePi.GPIO
  • 1
  • 2

3.编译安装

sudo python3 setup.py install --force-h5 #使用此方式失败
# H6是芯片型号 需要指定
#如果编译失败,python 请试下
sudo python3 setup.py install_lib #可以编译成功
  • 1
  • 2
  • 3
  • 4

帮助文档
帮助文档
翻译后:

  build            (构建安装所需的一切) build everything needed to install
  build_py         “构建”纯Python模块(复制到构建目录)"build" pure Python modules (copy to build directory)
  build_ext        构建C/C++扩展(编译/链接到构建目录)build C/C++ extensions (compile/link to build directory)
  build_clib       构建Python扩展使用的C/C++库 build C/C++ libraries used by Python extensions
  build_scripts    “构建”脚本(复制和修复#!行)"build" scripts (copy and fixup #! line)
  clean            从“生成”命令清除临时文件 clean up temporary files from 'build' command
  install          从构建目录安装所有内容 install everything from build directory
  install_lib      安装所有Python模块(扩展和纯Python)install all Python modules (extensions and pure Python)
  install_headers  安装C/C++头文件 install C/C++ header files
  install_scripts  安装脚本(Python或其他)install scripts (Python or otherwise)
  install_data     安装数据文件 install data files
  sdist            创建源发行版(tarball、zip文件等)create a source distribution (tarball, zip file, etc.)
  register         使用Python包索引注册发行版 register the distribution with the Python package index
  bdist            创建一个内置(二进制)发行版 create a built (binary) distribution
  bdist_dumb       创建一个“哑”构建的发行版 create a "dumb" built distribution
  bdist_rpm        创建一个RPM发行版 create an RPM distribution
  bdist_wininst    为MS Windows创建可执行安装程序 create an executable installer for MS Windows
  check            对包执行一些检查 perform some checks on the package
  upload           将二进制软件包上载到 PyPIupload binary package to PyPI

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

python调用例子

blink_led.py

#!/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(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.")

  • 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
  • 27
  • 28
  • 29
  • 30

并测试针脚电压变化后的响应情况

# !/usr/bin/env python3

import OPi.GPIO as GPIO #引入刚刚我们安装的GPIO包
import time

touchPin = 5 #测试的针脚

# 定义一个回调函数,当检测到指定口的电压出现变化时触发
def getResonse(self):
    print("getResonse")
    if GPIO.input(touchPin)==1:
        print("Rising")
    else:
        print("Falling")

GPIO.setboard(GPIO.LITE2) #指定开发板型号
GPIO.setmode(GPIO.BOARD) #指定使用 BOARD 编号系统
GPIO.setup(touchPin, GPIO.IN) #设置为输入模式

GPIO.add_event_detect(touchPin,GPIO.BOTH,callback=getResonse,bouncetime=300)  #注册一个检测电压改变事件

print('开始检测')

#开启循环防止进程结束
runTime=0
while True:
    time.sleep(4)  ##进行挂起4秒
    print("running")
    runTime=runTime+1
    if runTime>5:
        break

GPIO.cleanup() #脚本结束后进行清理
print('Finish')

  • 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
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

例子:mode_soc.py

#!/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.ZERO)        # Orange Pi Zero board
GPIO.setmode(GPIO.SOC)          # set up SOC numbering

sled = GPIO.PA+17               # Status led is on PA17
GPIO.setup(sled, GPIO.OUT)      # set PA17 as an output (Status led of board)

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

except KeyboardInterrupt:
  GPIO.output(sled, 0)
  GPIO.cleanup()                # clean up after yourself
  print ("Bye.")

  • 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
  • 27
  • 28

例子:opi_func.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import OPi.GPIO as GPIO
from time import sleep

GPIO.setboard(GPIO.ZERO)
GPIO.setmode(GPIO.BOARD)

print(GPIO.gpio_function(3))
sleep(0.1)
GPIO.setup(3, GPIO.IN)
sleep(0.1)
print(GPIO.gpio_function(3))
sleep(0.1)
GPIO.cleanup()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

例子:pull_up_down.py

#!/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.ZERO)        # Orange Pi Zero board
GPIO.setmode(GPIO.BOARD)        # set up BOARD GPIO numbering
GPIO.setup(15, GPIO.IN, pull_up_down=GPIO.PUD_OFF)    # set pin 15 as input (button)
GPIO.setup(11, GPIO.OUT)        # set pin 11 as an output (LED)

try:
    while True:                 # this will carry on until you hit CTRL+C
        if GPIO.input(15):      # if pin 15 == 1
            print "Port 15 is 1/HIGH/True - LED ON"
            GPIO.output(11, 1)  # set port/pin value to 1/HIGH/True
        else:
            print "Port 15 is 0/LOW/False - LED OFF"
            GPIO.output(11, 0)  # set port/pin value to 0/LOW/False
        sleep(0.1)              # wait 0.1 seconds

finally:                        # this block will run no matter how the try block exits
    print("Finally")
    GPIO.output(11, 0)
    GPIO.cleanup()              # clean up after yourself
  • 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

例子:pwm_dutycycle.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import OPi.GPIO as GPIO
from time import sleep

GPIO.setboard(GPIO.ZERO)
GPIO.setmode(GPIO.BOARD)    # set up BOARD BCM numbering
GPIO.setup(26, GPIO.OUT)    # set pin 26 as an output (LED)

p = GPIO.PWM(26, 10)        # new PWM on channel=26 frequency=10Hz
p.start(0)
try:
    while 1:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)
            sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            sleep(0.1)
except KeyboardInterrupt:
    pass
p.stop()
GPIO.output(26, 0)
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

例子:simple_pwm.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import OPi.GPIO as GPIO
from time import sleep

GPIO.setboard(GPIO.ZERO)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(26, GPIO.OUT)

p = GPIO.PWM(26, 0.5)               # channel=26 frequency=0.5Hz
p.start(1)
raw_input('Press return to stop:')  # use input for Python 3
p.stop()
GPIO.cleanup()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/389800
推荐阅读
相关标签
  

闽ICP备14008679号