MG996R舵机防抖问题解决

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-25 00:29:20
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) #等待控制周期结束,舵机的控制周期是20ms,但是不知道为什么要等0.04ms才不会抖
    pwm.ChangeDutyCycle(0)   #清空占空比,这句是防抖关键句,如果没有这句,舵机会狂抖不止
    
def runrun():

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

    runrun()

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!