这是一个简单的舵机库,通过模拟输出来控制舵机的转动。 
 
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 
 
  
 
 
根据信号的脉冲宽度,便可以调节舵机的转动角度。 
 
 
以下是舵机库的代码:
			
			
			- 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
 
  复制代码
  
以下是终端输入的控制代码: 
- import servobit
 - sv=servobit.Servo(pin0)
 - sv.angle(90)
 
  复制代码
  
 
执行结果: 
  
 
注:如果您的microbit带不动舵机的话,可以给舵机外接电源 
 
 
 欢迎大家加入uPyCraft-micropython QQ群:619558168 
 
 |