11回答

1收藏

[原创] 树莓派通过软件实现GPIO的pwm(PiSoftPwm)

Raspberry Pi Raspberry Pi 28300 人阅读 | 11 人回复 | 2013-01-21

本帖最后由 ukonline2000 于 2013-1-21 13:06 编辑

树莓派的GPIO只有一路硬件PWM,但是新版的树莓派又把这个管脚替换了,导致就不再支持硬件的pwm了,所以考虑用软件来实现pwm,也就是softpwm,程序是用老外的python改的,这样就能比较方便那些需要用树莓派控制步进电机或者需要pwm的朋友,希望能对大家有所帮助!!!
http://player.youku.com/player.php/sid/XNTA0NzgzMzI4/v.swf
http://player.youku.com/player.php/sid/XNTA0NzgzOTMy/v.swf

使用装备
1.树莓派(512M版本)
2.树莓派全功能扩展板 (详见https://www.cirmall.com/bbs/forum.php?mod=viewthread&tid=1372&page=1&extra=#pid4695
3.diy过的流水灯

操作步骤:
1.安装RPI.GPIO库,参考帖子 https://www.cirmall.com/bbs/forum.php?mod=viewthread&tid=1815
2.下载PiSoftPwm软件,地址
PiSoftPwm.zip (2.68 KB, 下载次数: 1687)

3.拷贝到树莓派中,并运行例程
  1. python example.py
复制代码
备注:例程是针对512M版本的树莓派,256M版本的树莓派,请打开example.py文件,找到这两行
  1. third   = PiSoftPwm(0.01, 100, 27, GPIO.BCM)  #for raspberry pi rev 2.0
复制代码
改为
  1. #third   = PiSoftPwm(0.01, 100, 27, GPIO.BCM)  #for raspberry pi rev 2.0
  2. third   = PiSoftPwm(0.01, 100, 21, GPIO.BCM)  #for raspberry pi rev 1.0
复制代码
例程中有部分函数使用的介绍,修改时可以参考


博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
分享到:
回复

使用道具 举报

回答|共 11 个

倒序浏览

沙发

wyyyh

发表于 2013-1-21 12:59:00 | 只看该作者

嗯。正找呢。
板凳

ukonline2000

发表于 2013-1-21 13:06:57 | 只看该作者

wyyyh 发表于 2013-1-21 12:59
嗯。正找呢。

希望能对你有点用,哈哈
博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
地板

GY@艳

发表于 2013-1-21 13:13:01 | 只看该作者

大仙的,必须顶
爱板  爱板  爱板     https://www.cirmall.com
5#

flashsoft

发表于 2013-1-21 13:48:55 | 只看该作者

U大文章必须先顶后收藏,再看
6#

Tuma_3001931

发表于 2013-1-21 14:01:29 | 只看该作者

先顶后看。。。。
7#

ukonline2000

发表于 2013-1-21 14:29:33 | 只看该作者

flashsoft 发表于 2013-1-21 13:48
U大文章必须先顶后收藏,再看

你太客气啦
博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
8#

wyyyh

发表于 2013-1-21 21:36:43 | 只看该作者

测试通过,Good!
9#

ukonline2000

发表于 2013-1-21 21:38:26 | 只看该作者

wyyyh 发表于 2013-1-21 21:36
测试通过,Good!

感谢测试哟,呵呵
博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
10#

wyyyh

发表于 2013-1-21 22:07:36 | 只看该作者

最后那一堆我搞不懂,反正我也只测试一个端口,将代码改了一下,简单点容易懂点

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import signal

from PiSoftPwm import *

def endProcess(signalnum = None, handler = None):
    first.stop()
    GPIO.cleanup()
    exit(0)

signal.signal(signal.SIGTERM, endProcess)
signal.signal(signal.SIGINT, endProcess)

first   = PiSoftPwm(0.01, 100, 17, GPIO.BCM)
slices = 0
flag = -1
first.start(0)

while True:
  first.changeNbSlicesOn(slices)
  time.sleep(0.01)

  if slices > 100 or slices < 1:
     flag=-flag
  slices+=flag
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条