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

2020-04-274428
AI 快速预览详细 收起
本文介绍了如何使用Python和RPi.GPIO库控制舵机的转动速度。通过两个具体的代码示例,展示了如何通过改变占空比来实现顺时针和逆时针的不同速度变化。这些示例适用于STEM教育场景,帮助学生理解硬件控制的基本原理。
上一节课我们讨论 了下舵机,更早的时候我们也探讨了舵机,关于占空比,关于舵机在何种输出时间会快,会慢的说明请往前翻阅,今天继续我们的代码旅程,用代码控制舵机转动。
转动一:顺时针速度由快到慢,停,逆时针由慢到快,停止
[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循环,把第一个程序中速度最大将要停止时给接力上就可以实现由快到慢的转动了,舵机是实现硬件移动的灵魂所在,学好怎样使用舵机从我做起。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
DFrJ5KYVQaH
DFrJ5KYVQaH
好,收藏,接着学习
- 没有更多了 -