查看: 26053|回复: 11

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

[复制链接]
  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-21 12:55:51 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 ukonline2000 于 2013-1-21 13:06 编辑

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



    使用装备
    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, 下载次数: 1677)
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2013-8-12 17:47
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-21 12:59:00 | 显示全部楼层
    嗯。正找呢。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-21 13:06:57 | 显示全部楼层
    wyyyh 发表于 2013-1-21 12:59
    嗯。正找呢。

    希望能对你有点用,哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-1-21 13:13:01 | 显示全部楼层
    大仙的,必须顶
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2014-8-4 11:38
  • 签到天数: 18 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-21 13:48:55 | 显示全部楼层
    U大文章必须先顶后收藏,再看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2014-3-13 15:08
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-21 14:01:29 | 显示全部楼层
    先顶后看。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-21 14:29:33 | 显示全部楼层
    flashsoft 发表于 2013-1-21 13:48
    U大文章必须先顶后收藏,再看

    你太客气啦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2013-8-12 17:47
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2013-1-21 21:36:43 | 显示全部楼层
    测试通过,Good!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2012-11-23 16:50
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-1-21 21:38:26 | 显示全部楼层
    wyyyh 发表于 2013-1-21 21:36
    测试通过,Good!

    感谢测试哟,呵呵
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2013-8-12 17:47
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 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
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 21:07 , Processed in 0.205802 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.