如何控制树莓派产生与读取pwm波 |
您所在的位置:网站首页 › 树莓派输出电压可以升压吗 › 如何控制树莓派产生与读取pwm波 |
在成功安装了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 |