900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python C)

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

时间:2019-02-10 16:56:55

相关推荐

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

树莓派GPIO编号方式

功能物理引脚

从左到右,从上到下:左边奇数,右边偶数:1-40

通过打开终端窗口并运行命令,可以在Raspberry Pi上访问方便的参考pinout。该工具由GPIO零 Python库提供,该库默认情况下安装在Raspbian桌面映像上,而不安装在Raspbian Lite上。

1、用Python通过PRI.GPIO命令控制GPIO(略)

2、Python脚本控制GPIO

蜂鸣器鸣叫程序测试

GPIO18GND

新建名为buzzer.py的脚本:

pi@raspberrypi:~ $ sudo nano buzzer.py

import RPi.GPIO as GPIOimport timeGPIO.setmode(GPIO.BCM)GPIO.setmode(18,GPIO.OUT)//BCM 编号GPIO18 ;wPI 编号 1;物理引脚 12while True:GPIO.output(18,GPIO.HIGH)time.sleep(1)GPIO.output(18,GPIO.LOW)time.sleep(1)GPIO.cleanup()

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

Ctrl+OCtrl+XY

说明: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 <wiringPi.h>//注意大小写int main(void) {wiringPiSetup();//注意大小写pinMode (1, OUTPUT);for(;;) {digitalWrite(1, HIGH);delay (500);digitalWrite(1, LOW);delay (500) ;}}

说明:看看上一小节的图,BCM编号的GPIO18引脚在wiringPi编号中是1。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。