温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MicroPython怎么实现旋转按钮控制脱机摆动

发布时间:2022-01-13 11:02:26 来源:亿速云 阅读:142 作者:iii 栏目:互联网科技

这篇文章主要介绍“MicroPython怎么实现旋转按钮控制脱机摆动”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MicroPython怎么实现旋转按钮控制脱机摆动”文章能帮助大家解决问题。

    一、实验目的:

    学习在PC机系统中扩展简单I/O 接口的方法
     学习TurnipBit拼插编程
     了解舵机工作原理
     学习TurnipBit扩展板舵机和旋转按钮接线方式

    二、所需原器件:

    TurnipBit一块
     TurnioBit扩展板一块
     杜邦线若干
     usb数据线一条
     舵机一个
     旋转按钮一个

    三、实验原理:

    1. 舵机的组成与参数
    舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。 其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向,再驱动无核心马达转动, 透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。

MicroPython怎么实现旋转按钮控制脱机摆动
    舵机的接线
    舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同。

    舵机的控制原理
    舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的。

    占空比:
    1.指高电平在一个周期之内所占的时间比率。
    2.正脉冲的持续时间与脉冲总周期的比值。例如:正脉冲宽度1μs,信号周期10μs的脉冲序列占空比为0.1。即:脉冲的宽度除以脉冲的周期称为占空比。标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽可由0.5ms到2.5ms之间,脉宽和舵机的转角0°~180°相对应。

    四、接线方法:

    TurnipBit扩展板与发光二极管接口对应如下表:

MicroPython怎么实现旋转按钮控制脱机摆动


    五、源代码:

from microbit import *
 
#-----------
#github:https://github.com/microbit-playground/microbit-servo-class
#------------
class Servo:
    def __init__(self, pin, freq=50, min_us=600, max_us=2400, angle=180):
        self.min_us = min_us
        self.max_us = max_us
        self.us = 0
        self.freq = freq
        self.angle = angle
        self.analog_period = 0
        self.pin = pin
        analog_period = round((1/self.freq) * 1000)  # hertz to miliseconds
        self.pin.set_analog_period(analog_period)

    def write_us(self, us):
        us = min(self.max_us, max(self.min_us, us))
        duty = round(us * 1024 * self.freq // 1000000)
        self.pin.write_analog(duty)
        self.pin.write_digital(0)  # turn the pin off

    def write_angle(self, degrees=None):
        degrees = degrees % 360
        total_range = self.max_us - self.min_us
        us = self.min_us + total_range * degrees // self.angle
        self.write_us(us)
        
sv1 = Servo(pin1)
temp=0
while True:
    #读取旋转按钮传入的值,范围2~1023
    read_val=pin0.read_analog()
    #舵机旋转180度,将1023分割成180份,约等于5.67
    angle=round(read_val/5.67)
    if (temp!=angle):
        temp=angle
        sv1.write_angle(angle)
        sleep(60)

关于“MicroPython怎么实现旋转按钮控制脱机摆动”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI