如何控制树莓派产生与读取pwm波

您所在的位置:网站首页 树莓派输出电压可以升压吗 如何控制树莓派产生与读取pwm波

如何控制树莓派产生与读取pwm波

2024-07-13 01:37| 来源: 网络整理| 查看: 265

在成功安装了pigpio库之后(详细安装步骤请参照上一篇文章),我们就可以开始读取pwm波形了,需要注意的是,每次重启你的树莓派之后,你需要在命令行中运行以下命令,才可以运行你的基于pigpio开发的程序,否则会报错。

sudo pigpiod

如果懒得每次开机都输入这个命令,你可以尝试把这个命令添加到/etc/rc.local中,详见这里

该命令将开启一个守护进程,这个进程会守护pigpio程序的运行,这里需要你知道的是,pigpio程序在你开启守护进程后会一直运行,直到你关机,或者结束守护进程。在其他的情况下,你所输入的指令不过是对正在运行中的pigpio程序发出指令,命令它做出一些状态下的修改,你的程序的结束并不会结束pigpio进程本身。举个例子,如果你写了一个程序,让pigpio在某个gpio口持续输出pwm波,在那之后程序结束了,但是在守护进程的影响下,这个pwm波还会持续的被输出,直到你新开一个程序对它进行修改。关于具体如何生成pwm波,我将在下一篇文章提及。

接下来,我将提供一个示例程序,并在程序的下方尽量提供详细的解释,这个程序的作用是测量特定接口的pwm波形,这个程序的作者就是pigpio库函数的作者,Joan,程序的来源是这里

#!/usr/bin/python import pigpio import time tick0 = None tick1 = None def mycallback(gpio, level, tick): global tick0, tick1 if level == 0: tick0 = tick if tick1 is not None: diff = pigpio.tickDiff(tick1, tick) print "high for " + str(diff) + " microseconds" else: tick1 = tick if tick0 is not None: diff = pigpio.tickDiff(tick0, tick) print "low for " + str(diff) + " microseconds" pigpio.start() cb = pigpio.callback(4, pigpio.EITHER_EDGE, mycallback) time.sleep(5) cb.cancel() # cancel callback pigpio.stop()

如果你直接ctrl+c,ctrl+v这段程序,印象中它似乎会报错(写这篇文章的时候,我手头没有树莓派),如果它报错了,请按照以下步骤操作: 你需要实例化一个pigpio对象,请在程序的开头,"tick0 = None"语句的下方,添加这个语句:

pi = pigpio.pi()

接下来,对程序做相应的修改,将以下语句:

cb = pigpio.callback(4, pigpio.EITHER_EDGE, mycallback)

修改为:

cb = pi.callback(4, pigpio.EITHER_EDGE, mycallback)

这样应该就可以了,如果还是报错,请删除以下语句:

pigpio.start()

现在,我们对这个程序做一个较为详细的解析,在这之前顺便提醒一下,这个库最详细的官方使用指南是(这里)[http://abyz.me.uk/rpi/pigpio/python.html],我在这里写的只是一个非官方的中文教程(原文是英文)。

那就让我们开始吧! 最开始的两个语句便是导入两个库,这个不用多说。

import pigpio import time

接下来,实例化一个pigpio对象:

pi = pigpio.pi()

如果没有接触过面向对象编程,



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3