UpyCraft-micropython:microbit之舵机控制

2017-08-171.8万
AI 快速预览详细 收起
本文介绍了如何使用UpyCraft-micropython在microbit上控制舵机。文章详细解释了舵机控制的基本原理,包括20ms时基脉冲和0.5ms-2.5ms范围内的角度控制脉冲部分。提供了舵机库的代码示例,包括初始化、角度设置和读取功能,并展示了具体的终端输入控制代码。最终效果是通过模拟输出来控制舵机的角度。
这是一个简单的舵机库,通过模拟输出来控制舵机的转动。

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

UpyCraft-micropython:microbit之舵机控制图1


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


以下是舵机库的代码:
  1. from microbit import *
  2. class Servo:
  3.   def __init__(self,pin):
  4.     self.max=self._map(2.4,0,20,0,1024)
  5.     self.min=self._map(0.55,0,20,0,1024)
  6.     self.pin = pin
  7.     self.freq = 50
  8.     self.pin.set_analog_period((int)((1/self.freq)*1000))
  9.     self.angle(0)
  10.     self.lastStat=0
  11.   def angle(self,ang):
  12.     if ang > 180:
  13.       ang=180
  14.     elif ang < 0:
  15.       ang=0
  16.    
  17.     self.turn = self._map(ang,0,180,self.min,self.max)
  18.     print(ang)
  19.     self.pin.write_analog((int)(self.turn))
  20.     self.lastStat=ang
  21.   def read(self):
  22.     return self.lastStat
  23.      
  24.   def _map(self,x,inMin,inMax,outMin,outMax):
  25.     return (x-inMin)*(outMax-outMin)/(inMax-inMin)+outMin
复制代码

以下是终端输入的控制代码:
  1. import servobit
  2. sv=servobit.Servo(pin0)
  3. sv.angle(90)
复制代码


执行结果:
UpyCraft-micropython:microbit之舵机控制图2

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


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

创作许可协议

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

评论(0)
- 没有更多了 -