[树莓派]使用pigpio库(1) - 介绍和安装
pigpio库介绍-以产生PWM信号为例1 为什么使用pigpio这个库?树莓派中可用的GPIO库有很多,比如wiringpi,RPi.GPIO等等,都是非常简单使用的。而今天笔者要介绍的是pigpio库,他与RPi.GPIO相比,拥有诸多好处,例如精度高,波形可自定义等等,这是因为pigpio是用C语言编写的,从底层确保了其速度和精度。可以说,RPi.GPIO主要是面向刚使用的人群,它较为简单,
pigpio库介绍-以产生PWM信号为例
1 为什么使用pigpio这个库?
树莓派中可用的GPIO库有很多,比如wiringpi,RPi.GPIO等等,都是非常简单使用的。而今天笔者要介绍的是pigpio库,他与RPi.GPIO相比,拥有诸多好处,例如精度高,波形可自定义等等,这是因为pigpio是用C语言编写的,从底层确保了其速度和精度。可以说,RPi.GPIO主要是面向刚使用的人群,它较为简单,而pigpio使用的人较少,并且文档也是全英文的,但是他的确适合精度要求更高的场景。本文简单介绍一下此库,并且将用产生方波信号为例子来显示pigpio的优势。
pigpio
在这里pigpio官方文档可以阅读其官方文档,作者将每个函数都进行了具体说明,举例子,因此使用起来也比较容易,但是需要一定的英语阅读能力。它对多种语言都设置了接口,比如Python,C,Java,Ruby,Node.js。
优势特征
- 硬件时间采样率能够达到5微秒,并且针对所有的GPIO口
- 能够对所有的GPIO实现硬件PWM
- 能够用所有的GPIO口驱动伺服电机
- 可以对所有的GPIO口设置回调函数(callback function)
- 当任意GPIO口电平发生变化,可以通过管道机制(pipe)通知
- 支持远程控制GPIO
- 支持产生任意波形,由用户定义
- 可以在守护进程(daemon)上创建并运行脚本
- 可提供软件示波器
- 封装了I2C,SPI总线协议
2 安装pigpio-以python为例
本文介绍python如何安装pigpio,如果读者需要其他语言的安装过程,可以在官方文档中寻找。Windows/Linux/MacOS理论上都可以安装此库,原理是类似的,本文直接介绍如何在树莓派上安装。
- 首先建议更新一下
sudo apt-get update && sudo apt-get upgrade
- 方式一:下载源代码编译
wget https://github.com/joan2937/pigpio/archive/master.zip
unzip master.zip
cd pigpio-master
make
sudo make install
- 方式二:
sudo apt-get install pigpio python-pigpio python3-pigpio
- 安装完成后,可以对其进行检查
sudo pigpiod # start daemon
./x_pigpio.py # check Python I/F to daemon
3 使用方法-以产生PWM信号为例
- 在运行编写好的代码之前,需要先执行以下命令
sudo pigpiod
这样做是为了开启一个线程用于该库的运行,如果不这么做,在运行代码时会提示错误。如果你运行完了程序,想要关闭该库,可以使用如下命令
sudo killall pigpiod
- 编写代码,这部分就直接上例程了。
import pigpio
import time
pi = pigpio.pi() # 初始化
if not pi.connected: # 检查是否连接成功
exit()
user_gpio = 26
pulsewidth = 1500 # 可以设置500至1500,这是电平为1的时间,单位是微秒
'''
为伺服电机产生PWM信号,设置频宽为1500 us,该信号频率默认为50Hz
'''
pi.set_servo_pulsewidth(user_gpio, pulsewidth)
time.sleep(10) # 延迟10秒
pi.wave_tx_stop()
pi.wave_clear()
pi.stop()
以上是一种比较初级的方法,不能改变频率,占空比等参数,对于更复杂,更实用的方法,将在之后的文章当中进行介绍。有兴趣的朋友如果用示波器对产生的波形进行检测,会发现其精度是非常高的,笔者测试后发现脉冲宽度和设定的几乎完全一致。
更多推荐
所有评论(0)