Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)

树莓派GPIO编号方式

  • 功能物理引脚
    从左到右,从上到下:左边奇数,右边偶数:1-40

Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第1张图片
Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第2张图片
Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第3张图片

通过打开终端窗口并运行命令,可以在Raspberry Pi上访问方便的参考pinout。该工具由GPIO零 Python库提供,该库默认情况下安装在Raspbian桌面映像上,而不安装在Raspbian Lite上。
Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第4张图片
1、用Python通过PRI.GPIO命令控制GPIO(略)

2、Python脚本控制GPIO

蜂鸣器鸣叫程序测试

  • GPIO18
  • GND
    Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第5张图片

新建名为buzzer.py的脚本:

pi@raspberrypi:~ $ sudo nano buzzer.py

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO.setmode(18,GPIO.OUT)
//BCM 编号GPIO18 ;wPI 编号 1;物理引脚 12

while True:

        GPIO.output(18,GPIO.HIGH)

        time.sleep(1)

        GPIO.output(18,GPIO.LOW)

        time.sleep(1)

        GPIO.cleanup()

nano编辑器保存退出命令依次为:

Ctrl+O Ctrl+X Y

说明:while True下面的循环体要缩进,用空格或Tab(但不能混用)键缩进就行。

为buzzer.py添加可执行权限:

pi@raspberrypi:~ $ sudo chmod +x buzzer.py

运行Python脚本:

pi@raspberrypi:~ $ sudo python buzzer.py

注意:提示“语法错误:不正确的语法”

File “buzzer.py”, line 9
whlie True:
^
SyntaxError: invalid syntax

停止运行命令:

Ctrl+C来中断循环。

有兴趣的话,可以试试用Python通过PRI.GPIO命令控制GPIO。

3、借助第三方库文件控制GPIO

树莓派内核中已经编译自带了 GPIO 的驱动,我们常通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有:

3.1 Python 库:

  • Python GPIO

Python GPIO已经集成到了树莓派内核,为树莓派官方资料中推荐且容易上手。PythonGPIO是一个小型的Python库,可以帮助用户完成raspberry相关IO口操作,但是PythonGPIO库还没有支持SPI、I2C或者1-wire等总线接口。

3.2 C语言库:

  • WiringPi

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

  • BCM2835 C Library

BCM2835 C Library可以理解为使用C语言实现的相关底层驱动,BCM2835 C Library的驱动库包括GPIO. SPI和UART等,可以通过学习BCM2835 C Library熟悉BCM2835相关的寄存器操作。如果有机会开发树莓派上的linux驱动,或自主开发python或PHP扩展驱动,可以从BCM2835 C Library找到不少的“灵感”。

4、WiringPi GPIO安装

WiringPi 是应用于树莓派平台的 GPIO 控制库函数,WiringPi 遵守 GUN Lv3。wiringPi 使用 C 或者 C++开发并且可以被其他语言包转,例如Python、ruby或者PHP等。

WiringPi 包括一套 GPIO 控制命令,使用 GPIO 命令可以控制树莓派 GPIO 管脚。用户可以利用gpio命令通过shell脚本控制或查询GPIO管脚。

4.1 WiringPi 安装

更新列表:

pi@raspberrypi:~ $ sudo apt-get update

更新软件:

pi@raspberrypi:~ $ sudo apt-get upgrade

安装 wiringpi 库:

pi@raspberrypi:~ $ sudo apt-get install wiringpi

更新wiringpi 库的方法

4.2 测试

WiringPi 包括一套 GPIO 命令,使用 GPIO 命令可以控制树莓派上的各种接口,通过以下指令可以测试 WiringPi 是否安装成功。

pi@raspberrypi:~ $ gpio -v

查看GPIO图:(这一步报错没有gpio图)
pi@raspberrypi:~ $ gpio readall

4.3 编写代码

新建一个名为buzzer.c的源程序

pi@raspberrypi:~ $ sudo nano buzzer.c

代码内容如下:

#include //注意大小写

int main(void) {

wiringPiSetup();//注意大小写

pinMode (1, OUTPUT);

for(;;) {

digitalWrite(1, HIGH);
delay (500);

digitalWrite(1, LOW);
delay (500) ;

}

}

说明:看看上一小节的图,BCM编号的GPIO18引脚在wiringPi编号中是1。
Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第6张图片
Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)_第7张图片

4.4 编译运行

编译:

第一种编译:pi@raspberrypi:~ $ gcc buzzer.c -o buzzer -l wiringPi

第二种编译pi@raspberrypi:~ $ gcc buzzer -l wiringPi buzzer.c

注意:-l wiringPi表示动态加载 wiringPi 共享库。

编译的时候这里报错 “ /usr/bin/ld: cannot find -lwiringpi
collect2: error: ld returned 1 exit status ”,原因是编译的时候 wiringPi 没有区分大小写。

运行:

第一种:pi@raspberrypi:~ $ sudo ./buzzer
第二种pi@raspberrypi:~ $ ./buzzer

停止运行:

Ctrl+C来中断循环。


参考资料

  • [1] 树莓派的GPIO控制
  • [2] Raspberry pi GPIO

你可能感兴趣的:(Raspberry,Pi)