947浏览
查看: 947|回复: 1

【临沂】第四课Python——控制舵机转动速度

[复制链接]
上一节课我们讨论 了下舵机,更早的时候我们也探讨了舵机,关于占空比,关于舵机在何种输出时间会快,会慢的说明请往前翻阅,今天继续我们的代码旅程,用代码控制舵机转动。
转动一:顺时针速度由快到慢,停,逆时针由慢到快,停止
[mw_shl_code=python,false]import RPi.GPIO as GPIO

import time

Duoji = 18             # 舵机接在18号口

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.setup(Duoji, GPIO.OUT, initial=False)

p = GPIO.PWM(Duoji, 50)

p.start(0)

zkb = 5               # 占空比作为变量

for i in range(50):

    zkb = 5 + i * 0.1  # 根据循环次数每次变化一点点

    p.ChangeDutyCycle(zkb)

    time.sleep(0.5)

p.stop()

GPIO.cleanup()[/mw_shl_code]

转动二:顺时针由快到慢,停,逆时针由慢到快到慢,停,顺时针由慢到快到慢,停,再逆时针重复
[mw_shl_code=python,false]import RPi.GPIO as GPIO
import time
Duoji = 18      # 舵机接在18号口
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(Duoji, GPIO.OUT, initial=False)
p = GPIO.PWM(Duoji, 50)
p.start(0)
for n in range(5):
    zkb = 5
    for i in range(50):
        zkb = 5 + i * 0.1
        p.ChangeDutyCycle(zkb)
        time.sleep(0.5)
    zkb = 10     # for循环从10减小到5
    for i in range(50):
        zkb = 10 - i * 0.1
        p.ChangeDutyCycle(zkb)
        time.sleep(0.5)
p.stop()
GPIO.cleanup()[/mw_shl_code]
通过观察这两个程序,我们抛开第一个For循环不看,要想实现慢快慢,只要加一个for循环,把第一个程序中速度最大将要停止时给接力上就可以实现由快到慢的转动了,舵机是实现硬件移动的灵魂所在,学好怎样使用舵机从我做起。

DFrJ5KYVQaH  中级技匠

发表于 2020-4-28 09:27:25

好,收藏,接着学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail