查看: 6648|回复: 0

[教程] UpyCraft-micropython:microbit之舵机控制

[复制链接]
这是一个简单的舵机库,通过模拟输出来控制舵机的转动。

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的

psb.jpeg


根据信号的脉冲宽度,便可以调节舵机的转动角度。


以下是舵机库的代码:
[Python] 纯文本查看 复制代码
from microbit import *

class Servo:
  def __init__(self,pin):
    self.max=self._map(2.4,0,20,0,1024)
    self.min=self._map(0.55,0,20,0,1024)
    self.pin = pin
    self.freq = 50
    self.pin.set_analog_period((int)((1/self.freq)*1000))
    self.angle(0)
    self.lastStat=0

  def angle(self,ang):
    if ang > 180:
      ang=180
    elif ang < 0:
      ang=0
    
    self.turn = self._map(ang,0,180,self.min,self.max)
    print(ang)
    self.pin.write_analog((int)(self.turn))
    self.lastStat=ang

  def read(self):
    return self.lastStat
     
  def _map(self,x,inMin,inMax,outMin,outMax):
    return (x-inMin)*(outMax-outMin)/(inMax-inMin)+outMin



以下是终端输入的控制代码:
[Python] 纯文本查看 复制代码
import servobit
sv=servobit.Servo(pin0)
sv.angle(90)


执行结果:
511.png

注:如果您的microbit带不动舵机的话,可以给舵机外接电源


欢迎大家加入uPyCraft-micropython QQ群:619558168



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

本版积分规则

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

硬件清单

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

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

mail