如何解决使用 MicroPython 在 Raspberry Pi Pico 上获取伺服的当前位置
我在 https://sequelize.org/master/manual/assocs.html 上运行 MicroPython。我可以通过改变占空比来设置舵机的位置:
from machine import Pin,PWM
servo = PWM(Pin(0))
servo.freq(50)
servo.duty_u16(1350) # sets position to 0 degrees
我可能遗漏了一些东西,但我已经通读了文档,但找不到任何方法来读取伺服的当前位置。有没有办法做到这一点?
解决方法
大多数舵机不提供任何类型的位置信息。你知道位置是什么,因为你设置了它。您可以编写代码来为您跟踪此值。例如,类似于:
CallEffect<AnyAction> | PutEffect<AnyAction>
您可以像这样使用 Generator
类:
from machine import Pin,PWM
class Servo:
min_duty = 40
max_duty = 1115
def __init__(self,pin):
servo = PWM(Pin(pin))
servo.freq(50)
self.servo = servo
self.setpos(90)
def setpos(self,pos):
'''Scale the angular position to a value between self.min_duty
and self.max_duty.'''
if pos < 0 or pos > 180:
raise ValueError(pos)
self.pos = pos
duty = int((pos/180) * (self.max_duty - self.min_duty) + self.min_duty)
self.servo.duty(duty)
在您的问题中,您有:
Servo
我对这个值持怀疑态度:在 50Hz 时,占空比通常在 40 到 115 之间(任一端的 +/1 一些小量),对应于 ≈ 1ms (duty=40) 到 2ms (duty=115) ).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。