【Sipeed MAix BiT AIoT 开发套件】3,舵机驱动
<div class='showpostmsg'><p>K210带有硬件PWM,那我们自然要使用硬件PWM来驱动舵机。相比于使用time自己产生软件PWM方波信号,硬件PWM信号的一致性和稳定性,精确度都会高很多,可以有效避免舵机一直咔咔响的问题。</p><p> </p>
<p>使用舵机的话,就可Micropython的方法类似。但相比起来稍微复杂一点点,我们可以手动指定计时器和通道。可以通过以下代码创建一个舵机实体:</p>
<pre>
<code class="language-python">from machine import Timer,PWM
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
S1 = PWM(tim, freq=50, duty=0, pin=25)
</code></pre>
<p>这时,我们已经可以产生一个固定为50Hz的PWM信号。舵机接收的信号是500us - 2500us之间的信号,要想产生这个信号,我们只需要调整占空比就可以实现。通过简单计算,我们可以构造一个函数,输入角度即可计算出对应的占空比,并产生对应PWM:</p>
<pre>
<code class="language-python">def move(servo, angle):
servo.duty((angle+90)/180*10+2.5)</code></pre>
<p> </p>
<p>接着,使用以下循环就可以让舵机摇摆:</p>
<pre>
<code class="language-python">import time
j = 1
while True:
j = -j
for i in range(-90,90):
move(S1, i * j)
time.sleep(0.001)</code></pre>
<p> </p>
<p>效果如下:</p>
<p>37a43666666b07e0321f7763d5ba1bc4<br />
</p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>舵机驱动离不开PWM</p>
<p>K210带有硬件PWM就方便多了</p>
页:
[1]