python的GPIO是自带库吗 gpio python_python


目录

  • 1. 前言
  • 1.1 4B GPIO引脚排列
  • 2. Python GPIO安装
  • 3. 基于C语言的wiringPi安装


1. 前言

目前在树莓派上流行的 GPIO 开发环境主要有两种,Python GPIO 和基于 C 语言的 wiringPi。

python的GPIO是自带库吗 gpio python_python的GPIO是自带库吗_02

1.1 4B GPIO引脚排列

python的GPIO是自带库吗 gpio python_单片机_03

可以在Raspberry Pi上访问方便的引用pinout。此工具由GPIO Zero Python库提供,默认情况下,它安装在Raspbian桌面映像上,但不安装在Raspbian Lite上。

python的GPIO是自带库吗 gpio python_开发语言_04


这里绿色部分就很灵性。

python的GPIO是自带库吗 gpio python_python_05


这个图就对应着IO口编号,并且属于BCM方式。默认通过Python编程控制。

python的GPIO是自带库吗 gpio python_python_06

2. Python GPIO安装

查看对应python版本

python --version 或者 python3 --version

输入命令:

sudo apt-get install python-dev
sudo apt-get -y install python3-rpi.gpio 或者 sudo apt-get -y install python-rpi.gpio
sudo pip3 install RPi.GPIO

LED灯blink1代码:

import RPi.GPIO as GPIO
import time

# blinking function
def blink(pin):
    GPIO.output(pin,GPIO.HIGH)
    time.sleep(1)
    GPIO.output(pin,GPIO.LOW)
    time.sleep(1)
    return

# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)

# set up GPIO output channel
GPIO.setup(11,GPIO.OUT)

# blink GPIO17 50 times
for i in range(0,50):
    blink(11)

GPIO.cleanup()

执行命令。

sudo python3 blink1.py

blink2.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# BCM GPIO编号
pins = [17,18,27,22,23,24,25,4]
def setup():
    # 采用BCM编号
    GPIO.setmode(GPIO.BCM)
    # 设置所有GPIO为输出状态,且输出低电平
    for pin in pins:
        GPIO.setup(pin, GPIO.OUT)
        GPIO.output(pin, GPIO.LOW)

def loop():
    while True:
        # 循环点亮
        for pin in pins:
            GPIO.output(pin, GPIO.HIGH)
            time.sleep(0.5)
            GPIO.output(pin, GPIO.LOW)
            time.sleep(0.5)

def destroy():
    for pin in pins:
        GPIO.output(pin, GPIO.LOW)
        GPIO.setup(pin, GPIO.IN)

if __name__ == '__main__':
    # 初始化GPIO
    setup()
    try:
        loop()
    except KeyboardInterrupt:
        # 恢复GPIO口状态
        destroy()
        GPIO.cleanup()

执行命令。

sudo python3 blink2.py

3. 基于C语言的wiringPi安装

wiringPi适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi的API函数和arduino非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括UART设备,I2C设备和SPI设备等,毫无疑问地说wiringPi功能非常强大。

输入命令:

sudo apt-get install wiringpi

使用sudo apt-get install wiringpi 指令安装wiringpi包时,出现下面的提示:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package wiringpi is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'wiringpi' has no installation candidate

解决方案:
Gordon在该链接中写道树莓派Raspberry pi 4B版本中需要用到新的2.52的wiringpi包,安装方式为
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

python的GPIO是自带库吗 gpio python_Python_07

新建一个名为blink.c文件

#include <wiringPi.h>
int main(void)
{
  wiringPiSetup() ;
  pinMode (0, OUTPUT) ;
  for(;;) 
  {
    digitalWrite(0, HIGH) ; delay (500) ;
    digitalWrite(0,  LOW) ; delay (500) ;
  }
}

执行gcc编译命令。

gcc -Wall -o blink blink.c -lwiringPi

  • -lwiringPi表示动态加载wiringPi共享库
  • 使用GCC编译程序常用命令 参考资料

python的GPIO是自带库吗 gpio python_python_08


执行效果

sudo ./blink