树莓派3b+指南(十九)MG995舵机解决防抖问题

MG995舵机解决防抖问题

下面留下代码和说明

import multiprocessing as mp
import time
import RPi.GPIO as GPIO

def gpio_init():  #初始化GPIO,设置初始角和信号输出口36
    
    global pwm
    global num_
    global angle
    angle = 90
    num_ = 0
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(40,GPIO.IN)
    GPIO.setup(36, GPIO.OUT)
    pwm = GPIO.PWM(36, 50)
    pwm.start(10 / 180 * 90 + 2)
    pwm.ChangeDutyCycle(0)  #清空占空比,这句是防抖关键句,如果没有这句,舵机会狂抖不止

def show_cap(): #死循环
    while(1):
        if GPIO.input(40):
            break
            
def setDirection(direction):  
    duty = 10 / 180 * direction + 2
    pwm.ChangeDutyCycle(duty)
    print("direction =", direction, "-> duty =", duty)   
    time.sleep(0.04) #等待控制周期结束
    pwm.ChangeDutyCycle(0)   #清空占空比,这句是防抖关键句,如果没有这句,舵机会狂抖不止
    
def runrun():

    gpio_init()
    show_cap()
    GPIO.cleanup()
    
if __name__=='__main__':

    runrun()

下面两句是防抖的关键句:

  time.sleep(0.04) #等待控制周期结束,舵机的控制周期是20ms,但是不知道为什么要等0.04ms才不会抖
  pwm.ChangeDutyCycle(0)   #清空占空比,这句是防抖关键句,如果没有这句,舵机会狂抖不止

至此就结束了,希望可以帮到你!

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值