溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MicroPython怎么實現(xiàn)旋轉按鈕控制脫機擺動

發(fā)布時間:2022-01-13 11:02:26 來源:億速云 閱讀:133 作者:iii 欄目:互聯(lián)網科技

這篇文章主要介紹“MicroPython怎么實現(xiàn)旋轉按鈕控制脫機擺動”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MicroPython怎么實現(xiàn)旋轉按鈕控制脫機擺動”文章能幫助大家解決問題。

    一、實驗目的:

    學習在PC機系統(tǒng)中擴展簡單I/O 接口的方法
     學習TurnipBit拼插編程
     了解舵機工作原理
     學習TurnipBit擴展板舵機和旋轉按鈕接線方式

    二、所需原器件:

    TurnipBit一塊
     TurnioBit擴展板一塊
     杜邦線若干
     usb數據線一條
     舵機一個
     旋轉按鈕一個

    三、實驗原理:

    1. 舵機的組成與參數
    舵機,又稱伺服馬達,是一種具有閉環(huán)控制系統(tǒng)的機電結構。舵機主要是由外殼、電路板、無核心馬達、齒輪與位置檢測器所構成。 其工作原理是由控制器發(fā)出PWM(脈沖寬度調制)信號給舵機,經電路板上的IC處理后計算出轉動方向,再驅動無核心馬達轉動, 透過減速齒輪將動力傳至擺臂,同時由位置檢測器(電位器)返回位置信號,判斷是否已經到達設定位置,一般舵機只能旋轉180度。

MicroPython怎么實現(xiàn)旋轉按鈕控制脫機擺動
    舵機的接線
    舵機有3根線,棕色為地,紅色為電源正,橙色為信號線,但不同牌子的舵機,線的顏色可能不同。

    舵機的控制原理
    舵機的轉動的角度是通過調節(jié)PWM(脈沖寬度調制)信號的占空比來實現(xiàn)的。

    占空比:
    1.指高電平在一個周期之內所占的時間比率。
    2.正脈沖的持續(xù)時間與脈沖總周期的比值。例如:正脈沖寬度1μs,信號周期10μs的脈沖序列占空比為0.1。即:脈沖的寬度除以脈沖的周期稱為占空比。標準PWM(脈沖寬度調制)信號的周期固定為20ms(50Hz),理論上脈寬分布應在1ms到2ms之間,但是,事實上脈寬可由0.5ms到2.5ms之間,脈寬和舵機的轉角0°~180°相對應。

    四、接線方法:

    TurnipBit擴展板與發(fā)光二極管接口對應如下表:

MicroPython怎么實現(xiàn)旋轉按鈕控制脫機擺動


    五、源代碼:

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怎么實現(xiàn)旋轉按鈕控制脫機擺動”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI