micropython控制舵机,Micropython之pwm控制舵机

Micropython的定时器Timer

舵机原理可以参考这篇文章(侵删)51单片机PWM双舵机控制详解

简单例子

from pyb import Pin, Timer

p = Pin('X1') # X1 has TIM2, CH1

tim = Timer(2, freq=1000)

ch = tim.channel(1, Timer.PWM, pin=p)

ch.pulse_width_percent(50)

虽然Micropython有四个引脚能直接控制舵机,一两句话就能控制舵机,但总感觉不好设置舵机角度范围,默认是180度,不好更改。

所以直接用PWM控制,用百分比形式的占空比来实现。

控制舵机的PWM波是一种方波,频率为50Hz,周期即其倒数:20ms,在每个周期里面,高电平占0.5ms到2.5ms之间。0.5ms代表的是0度,2.5ms代表的是180度,其他的度数可以按比例换算。

下面看程序:

from pyb import Pin, Timer

i = 7.5 # 20ms内的0.5-2.5换成百分比形式就是2.5%-12.5%。7.5即为中间。

sw = pyb.Switch() # 用板子上的按键控制

tm2 = Timer(2, freq=100)

tm3 = Timer(5, freq=50) # 选择定时器5,频率50hz

led3 = tm2.channel(1, Timer.PWM, pin=Pin.cpu.A15)

led3.pulse_width_percent(50)

a4 = tm3.channel(1, Timer.PWM, pin=Pin.cpu.A0) # 选择通道1和定时器5对应引脚A0

while True:

sw_state = sw()

if sw_state:

i += 0.01

pyb.udelay(500) # 延时500us,减点速

if i > 12.0:

i = 12.0

else:

i -= 0.01

pyb.udelay(500)

if i < 3.0:

i = 3.0

a4.pulse_width_percent(i) # 控制占空比,20ms内0.5-2.5ms的百分比(不给满)

效果:下入程序后,按下user键转到180度左右,松开回到0度左右。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值